From 0c00b7e1df97c8d4fcde9574674ee4e89023b596 Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Fri, 15 Oct 2021 15:55:38 +1100 Subject: [PATCH] exchanges/engine: Add multichain deposit/withdrawal support (#794) * Add exchange multichain support * Start tidying up * Add multichain transfer support for Bitfinex and fix poloniex bug * Add Coinbene multichain support * Start adjusting the deposit address manager * Fix deposit tests and further enhancements * Cleanup * Add bypass flag, expand tests plus error coverage for Huobi Adjust helpers * Address nitterinos * BFX wd changes * Address nitterinos * Minor fixes rebasing on master * Fix BFX acceptableMethods test * Add some TO-DOs for 2 tests WRT races * Fix acceptableMethods test round 2 * Address nitterinos --- CONTRIBUTORS | 5 +- README.md | 11 +- cmd/documentation/documentation.go | 5 + .../root_templates/root_readme.tmpl | 2 + cmd/exchange_wrapper_coverage/main.go | 2 +- cmd/exchange_wrapper_issues/main.go | 5 +- cmd/gctcli/commands.go | 113 +- cmd/gctcli/main.go | 1 + config/config_types.go | 14 +- currency/code_types.go | 1 + currency/currency_test.go | 2 +- currency/storage.go | 2 +- docs/MULTICHAIN_TRANSFER_SUPPORT.md | 72 + engine/datahistory_manager_test.go | 3 +- engine/depositaddress.go | 71 +- engine/depositaddress_test.go | 123 +- engine/engine.go | 2 +- engine/helpers.go | 137 +- engine/helpers_test.go | 186 +- engine/rpcserver.go | 132 +- engine/withdraw_manager.go | 2 +- exchanges/alphapoint/alphapoint_wrapper.go | 2 +- exchanges/binance/binance.go | 203 +- exchanges/binance/binance_live_test.go | 3 +- exchanges/binance/binance_test.go | 88 +- exchanges/binance/binance_types.go | 83 +- exchanges/binance/binance_wrapper.go | 165 +- exchanges/bitfinex/bitfinex.go | 212 +- exchanges/bitfinex/bitfinex_test.go | 97 +- exchanges/bitfinex/bitfinex_types.go | 48 +- exchanges/bitfinex/bitfinex_wrapper.go | 133 +- exchanges/bitflyer/bitflyer_test.go | 1 + exchanges/bitflyer/bitflyer_wrapper.go | 5 +- exchanges/bithumb/bithumb.go | 29 +- exchanges/bithumb/bithumb_test.go | 7 +- exchanges/bithumb/bithumb_types.go | 1 + exchanges/bithumb/bithumb_wrapper.go | 12 +- exchanges/bitmex/bitmex_test.go | 5 +- exchanges/bitmex/bitmex_wrapper.go | 11 +- exchanges/bitstamp/bitstamp.go | 114 +- exchanges/bitstamp/bitstamp_test.go | 3 +- exchanges/bitstamp/bitstamp_types.go | 13 +- exchanges/bitstamp/bitstamp_wrapper.go | 51 +- exchanges/bittrex/bittrex.go | 15 + exchanges/bittrex/bittrex_test.go | 29 +- exchanges/bittrex/bittrex_types.go | 7 + exchanges/bittrex/bittrex_wrapper.go | 13 +- exchanges/bittrex/bittrex_ws_orderbook.go | 83 - exchanges/btcmarkets/btcmarkets.go | 27 +- exchanges/btcmarkets/btcmarkets_test.go | 4 +- exchanges/btcmarkets/btcmarkets_types.go | 1 + exchanges/btcmarkets/btcmarkets_websocket.go | 2 +- exchanges/btcmarkets/btcmarkets_wrapper.go | 12 +- exchanges/btse/btse_test.go | 2 +- exchanges/btse/btse_wrapper.go | 30 +- exchanges/coinbasepro/coinbasepro.go | 3 +- exchanges/coinbasepro/coinbasepro_test.go | 3 +- exchanges/coinbasepro/coinbasepro_wrapper.go | 5 +- exchanges/coinbene/coinbene.go | 254 +- exchanges/coinbene/coinbene_test.go | 60 + exchanges/coinbene/coinbene_types.go | 27 + exchanges/coinbene/coinbene_wrapper.go | 87 +- exchanges/coinbene/ratelimit.go | 12 + exchanges/coinut/coinut_test.go | 3 +- exchanges/coinut/coinut_wrapper.go | 5 +- exchanges/deposit/types.go | 8 + exchanges/exchange.go | 6 + exchanges/exchange_test.go | 8 + exchanges/exchange_types.go | 2 + exchanges/exmo/exmo.go | 58 +- exchanges/exmo/exmo_test.go | 20 +- exchanges/exmo/exmo_types.go | 13 + exchanges/exmo/exmo_wrapper.go | 107 +- exchanges/ftx/ftx.go | 42 +- exchanges/ftx/ftx_test.go | 21 +- exchanges/ftx/ftx_types.go | 65 +- exchanges/ftx/ftx_wrapper.go | 88 +- exchanges/gateio/gateio.go | 62 +- exchanges/gateio/gateio_test.go | 27 +- exchanges/gateio/gateio_types.go | 16 + exchanges/gateio/gateio_wrapper.go | 82 +- exchanges/gemini/gemini_live_test.go | 7 +- exchanges/gemini/gemini_test.go | 5 +- exchanges/gemini/gemini_wrapper.go | 7 +- exchanges/hitbtc/hitbtc_test.go | 5 +- exchanges/hitbtc/hitbtc_wrapper.go | 12 +- exchanges/huobi/huobi.go | 162 +- exchanges/huobi/huobi_cfutures.go | 261 +- exchanges/huobi/huobi_futures.go | 241 +- exchanges/huobi/huobi_test.go | 149 +- exchanges/huobi/huobi_types.go | 59 +- exchanges/huobi/huobi_wrapper.go | 90 +- exchanges/interfaces.go | 4 +- exchanges/itbit/itbit_test.go | 3 +- exchanges/itbit/itbit_wrapper.go | 5 +- exchanges/kraken/kraken.go | 24 +- exchanges/kraken/kraken_test.go | 34 +- exchanges/kraken/kraken_types.go | 9 +- exchanges/kraken/kraken_wrapper.go | 96 +- exchanges/lbank/lbank_wrapper.go | 10 +- exchanges/localbitcoins/localbitcoins_test.go | 3 +- .../localbitcoins/localbitcoins_wrapper.go | 12 +- exchanges/okcoin/okcoin_test.go | 1 + exchanges/okex/okex_test.go | 1 + exchanges/okgroup/okgroup.go | 3 +- exchanges/okgroup/okgroup_wrapper.go | 10 +- exchanges/poloniex/currency_details.go | 2 +- exchanges/poloniex/currency_details_test.go | 14 +- exchanges/poloniex/poloniex.go | 21 +- exchanges/poloniex/poloniex_live_test.go | 3 +- exchanges/poloniex/poloniex_test.go | 29 +- exchanges/poloniex/poloniex_types.go | 25 +- exchanges/poloniex/poloniex_wrapper.go | 132 +- exchanges/protocol/features.go | 17 +- exchanges/request/request.go | 1 - exchanges/sharedtestvalues/customex.go | 5 +- exchanges/yobit/yobit.go | 24 +- exchanges/yobit/yobit_test.go | 18 +- exchanges/yobit/yobit_wrapper.go | 16 +- exchanges/zb/zb.go | 56 +- exchanges/zb/zb_live_test.go | 3 +- exchanges/zb/zb_test.go | 42 +- exchanges/zb/zb_types.go | 24 +- exchanges/zb/zb_wrapper.go | 48 +- gctrpc/gen_pb_linux.sh | 6 +- gctrpc/gen_pb_win.bat | 6 +- gctrpc/rpc.pb.go | 4442 ++- gctrpc/rpc.pb.gw.go | 81 + gctrpc/rpc.proto | 31 +- gctrpc/rpc.swagger.json | 93 +- gctrpc/rpc_grpc.pb.go | 36 + gctscript/modules/gct/exchange.go | 15 +- gctscript/modules/gct/gct_test.go | 5 +- gctscript/modules/wrapper_types.go | 3 +- gctscript/wrappers/gct/exchange/exchange.go | 8 +- gctscript/wrappers/gct/gctwrapper_test.go | 5 +- gctscript/wrappers/validator/validator.go | 8 +- .../wrappers/validator/validator_test.go | 4 +- portfolio/portfolio_types.go | 1 + portfolio/withdraw/withdraw_types.go | 1 + testdata/configtest.json | 2 +- testdata/http_mock/binance/binance.json | 31541 +++++++++++++++- testdata/http_mock/bitstamp/bitstamp.json | 17 + testdata/http_mock/poloniex/poloniex.json | 10304 ++++- testdata/http_mock/zb/zb.json | 48 + 145 files changed, 46329 insertions(+), 5507 deletions(-) create mode 100644 docs/MULTICHAIN_TRANSFER_SUPPORT.md create mode 100644 exchanges/deposit/types.go diff --git a/CONTRIBUTORS b/CONTRIBUTORS index f5774673..fb09c759 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -12,9 +12,9 @@ ermalguni | https://github.com/ermalguni MadCozBadd | https://github.com/MadCozBadd ydm | https://github.com/ydm vadimzhukck | https://github.com/vadimzhukck +lrascao | https://github.com/lrascao 140am | https://github.com/140am marcofranssen | https://github.com/marcofranssen -lrascao | https://github.com/lrascao dackroyd | https://github.com/dackroyd cranktakular | https://github.com/cranktakular woshidama323 | https://github.com/woshidama323 @@ -29,7 +29,7 @@ MarkDzulko | https://github.com/MarkDzulko gam-phon | https://github.com/gam-phon cornelk | https://github.com/cornelk if1live | https://github.com/if1live -lozdog245 | https://github.com/lozdog245 +khcchiu | https://github.com/khcchiu herenow | https://github.com/herenow mshogin | https://github.com/mshogin soxipy | https://github.com/soxipy @@ -52,3 +52,4 @@ Daanikus | https://github.com/Daanikus CodeLingoBot | https://github.com/CodeLingoBot blombard | https://github.com/blombard soxipy | https://github.com/soxipy +lozdog245 | https://github.com/lozdog245 diff --git a/README.md b/README.md index 18bb74b6..fc31b7f4 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,8 @@ However, we welcome pull requests for any exchange which does not match this cri + Recent and historic trade processing. See [trades](/exchanges/trade/README.md). + Backtesting application. An event-driven backtesting tool to test and iterate trading strategies using historical or custom data. See [backtester](/backtester/README.md). + WebGUI (discontinued). ++ Exchange HTTP mock testing. See [mock](/exchanges/mock/README.md). ++ Exchange multichain deposits and withdrawals for specific exchanges. See [multichain transfer support](/docs/MULTICHAIN_TRANSFER_SUPPORT.md). ## Planned Features @@ -144,19 +146,19 @@ Binaries will be published once the codebase reaches a stable condition. |--|--| | [thrasher-](https://github.com/thrasher-) | 658 | | [shazbert](https://github.com/shazbert) | 223 | -| [gloriousCode](https://github.com/gloriousCode) | 190 | +| [gloriousCode](https://github.com/gloriousCode) | 191 | | [dependabot-preview[bot]](https://github.com/apps/dependabot-preview) | 88 | | [xtda](https://github.com/xtda) | 47 | -| [dependabot[bot]](https://github.com/apps/dependabot) | 23 | +| [dependabot[bot]](https://github.com/apps/dependabot) | 24 | | [Rots](https://github.com/Rots) | 15 | | [vazha](https://github.com/vazha) | 15 | | [ermalguni](https://github.com/ermalguni) | 14 | | [MadCozBadd](https://github.com/MadCozBadd) | 13 | | [ydm](https://github.com/ydm) | 11 | | [vadimzhukck](https://github.com/vadimzhukck) | 10 | +| [lrascao](https://github.com/lrascao) | 8 | | [140am](https://github.com/140am) | 8 | | [marcofranssen](https://github.com/marcofranssen) | 8 | -| [lrascao](https://github.com/lrascao) | 7 | | [dackroyd](https://github.com/dackroyd) | 5 | | [cranktakular](https://github.com/cranktakular) | 5 | | [woshidama323](https://github.com/woshidama323) | 3 | @@ -171,7 +173,7 @@ Binaries will be published once the codebase reaches a stable condition. | [gam-phon](https://github.com/gam-phon) | 2 | | [cornelk](https://github.com/cornelk) | 2 | | [if1live](https://github.com/if1live) | 2 | -| [lozdog245](https://github.com/lozdog245) | 2 | +| [khcchiu](https://github.com/khcchiu) | 2 | | [herenow](https://github.com/herenow) | 2 | | [mshogin](https://github.com/mshogin) | 2 | | [soxipy](https://github.com/soxipy) | 2 | @@ -194,3 +196,4 @@ Binaries will be published once the codebase reaches a stable condition. | [CodeLingoBot](https://github.com/CodeLingoBot) | 1 | | [blombard](https://github.com/blombard) | 1 | | [soxipy](https://github.com/soxipy) | 2 | +| [lozdog245](https://github.com/lozdog245) | 2 | diff --git a/cmd/documentation/documentation.go b/cmd/documentation/documentation.go index 2137a178..26be68a4 100644 --- a/cmd/documentation/documentation.go +++ b/cmd/documentation/documentation.go @@ -283,6 +283,11 @@ func main() { URL: "https://github.com/soxipy", Contributions: 2, }, + { + Login: "lozdog245", + URL: "https://github.com/lozdog245", + Contributions: 2, + }, }...) if verbose { diff --git a/cmd/documentation/root_templates/root_readme.tmpl b/cmd/documentation/root_templates/root_readme.tmpl index 153b8476..434274ec 100644 --- a/cmd/documentation/root_templates/root_readme.tmpl +++ b/cmd/documentation/root_templates/root_readme.tmpl @@ -79,6 +79,8 @@ However, we welcome pull requests for any exchange which does not match this cri + Recent and historic trade processing. See [trades](/exchanges/trade/README.md). + Backtesting application. An event-driven backtesting tool to test and iterate trading strategies using historical or custom data. See [backtester](/backtester/README.md). + WebGUI (discontinued). ++ Exchange HTTP mock testing. See [mock](/exchanges/mock/README.md). ++ Exchange multichain deposits and withdrawals for specific exchanges. See [multichain transfer support](/docs/MULTICHAIN_TRANSFER_SUPPORT.md). ## Planned Features diff --git a/cmd/exchange_wrapper_coverage/main.go b/cmd/exchange_wrapper_coverage/main.go index 637c94c4..9d339b25 100644 --- a/cmd/exchange_wrapper_coverage/main.go +++ b/cmd/exchange_wrapper_coverage/main.go @@ -174,7 +174,7 @@ func testWrappers(e exchange.IBotExchange) []string { funcs = append(funcs, "GetActiveOrders") } - _, err = e.GetDepositAddress(context.TODO(), currency.BTC, "") + _, err = e.GetDepositAddress(context.TODO(), currency.BTC, "", "") if errors.Is(err, common.ErrNotYetImplemented) { funcs = append(funcs, "GetDepositAddress") } diff --git a/cmd/exchange_wrapper_issues/main.go b/cmd/exchange_wrapper_issues/main.go index a1d3236a..122b346f 100644 --- a/cmd/exchange_wrapper_issues/main.go +++ b/cmd/exchange_wrapper_issues/main.go @@ -23,6 +23,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -694,8 +695,8 @@ func testWrappers(e exchange.IBotExchange, base *exchange.Base, config *Config) Response: jsonifyInterface([]interface{}{getActiveOrdersResponse}), }) - var getDepositAddressResponse string - getDepositAddressResponse, err = e.GetDepositAddress(context.TODO(), p.Base, "") + var getDepositAddressResponse *deposit.Address + getDepositAddressResponse, err = e.GetDepositAddress(context.TODO(), p.Base, "", "") msg = "" if err != nil { msg = err.Error() diff --git a/cmd/gctcli/commands.go b/cmd/gctcli/commands.go index dd0cfe61..50b85037 100644 --- a/cmd/gctcli/commands.go +++ b/cmd/gctcli/commands.go @@ -2592,7 +2592,7 @@ func getCryptocurrencyDepositAddresses(c *cli.Context) error { var getCryptocurrencyDepositAddressCommand = &cli.Command{ Name: "getcryptocurrencydepositaddress", Usage: "gets the cryptocurrency deposit address for an exchange and cryptocurrency", - ArgsUsage: " ", + ArgsUsage: " ", Action: getCryptocurrencyDepositAddress, Flags: []cli.Flag{ &cli.StringFlag{ @@ -2603,12 +2603,102 @@ var getCryptocurrencyDepositAddressCommand = &cli.Command{ Name: "cryptocurrency", Usage: "the cryptocurrency to get the deposit address for", }, + &cli.StringFlag{ + Name: "chain", + Usage: "the chain to use for the deposit", + }, + &cli.BoolFlag{ + Name: "bypass", + Usage: "whether to bypass the deposit address manager cache if enabled", + }, }, } func getCryptocurrencyDepositAddress(c *cli.Context) error { if c.NArg() == 0 && c.NumFlags() == 0 { - return cli.ShowCommandHelp(c, "getcryptocurrencydepositaddresses") + return cli.ShowCommandHelp(c, "getcryptocurrencydepositaddress") + } + + var exchangeName string + var cryptocurrency string + + if c.IsSet("exchange") { + exchangeName = c.String("exchange") + } else { + exchangeName = c.Args().First() + } + + if c.IsSet("cryptocurrency") { + cryptocurrency = c.String("cryptocurrency") + } else if c.Args().Get(1) != "" { + cryptocurrency = c.Args().Get(1) + } + + if cryptocurrency == "" { + return errors.New("cryptocurrency must be set") + } + + var chain string + if c.IsSet("chain") { + chain = c.String("chain") + } else if c.Args().Get(2) != "" { + chain = c.Args().Get(2) + } + + var bypass bool + if c.IsSet("bypass") { + bypass = c.Bool("bypass") + } else if c.Args().Get(3) != "" { + b, err := strconv.ParseBool(c.Args().Get(3)) + if err != nil { + return err + } + bypass = b + } + + conn, cancel, err := setupClient(c) + if err != nil { + return err + } + defer closeConn(conn, cancel) + + client := gctrpc.NewGoCryptoTraderClient(conn) + result, err := client.GetCryptocurrencyDepositAddress(c.Context, + &gctrpc.GetCryptocurrencyDepositAddressRequest{ + Exchange: exchangeName, + Cryptocurrency: cryptocurrency, + Chain: chain, + Bypass: bypass, + }, + ) + if err != nil { + return err + } + + jsonOutput(result) + return nil +} + +var getAvailableTransferChainsCommand = &cli.Command{ + Name: "getavailabletransferchains", + Usage: "gets the available transfer chains (deposits and withdrawals) for the desired exchange and cryptocurrency", + ArgsUsage: " ", + Action: getAvailableTransferChains, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "exchange", + Usage: "the exchange to get the available transfer chains", + }, + &cli.StringFlag{ + Name: "cryptocurrency", + Usage: "the cryptocurrency to get the available transfer chains for", + }, + }, +} + +func getAvailableTransferChains(c *cli.Context) error { + if c.NArg() == 0 && c.NumFlags() == 0 { + return cli.ShowCommandHelp(c, "getavailabletransferchains") } var exchangeName string @@ -2637,8 +2727,8 @@ func getCryptocurrencyDepositAddress(c *cli.Context) error { defer closeConn(conn, cancel) client := gctrpc.NewGoCryptoTraderClient(conn) - result, err := client.GetCryptocurrencyDepositAddress(c.Context, - &gctrpc.GetCryptocurrencyDepositAddressRequest{ + result, err := client.GetAvailableTransferChains(c.Context, + &gctrpc.GetAvailableTransferChainsRequest{ Exchange: exchangeName, Cryptocurrency: cryptocurrency, }, @@ -2654,7 +2744,7 @@ func getCryptocurrencyDepositAddress(c *cli.Context) error { var withdrawCryptocurrencyFundsCommand = &cli.Command{ Name: "withdrawcryptofunds", Usage: "withdraws cryptocurrency funds from the desired exchange", - ArgsUsage: "
", + ArgsUsage: "
", Action: withdrawCryptocurrencyFunds, Flags: []cli.Flag{ &cli.StringFlag{ @@ -2685,6 +2775,10 @@ var withdrawCryptocurrencyFundsCommand = &cli.Command{ Name: "description", Usage: "description to submit with request", }, + &cli.StringFlag{ + Name: "chain", + Usage: "chain to use for the withdrawal", + }, }, } @@ -2693,7 +2787,7 @@ func withdrawCryptocurrencyFunds(c *cli.Context) error { return cli.ShowCommandHelp(c, "withdrawcryptofunds") } - var exchange, cur, address, addressTag, description string + var exchange, cur, address, addressTag, chain, description string var amount, fee float64 if c.IsSet("exchange") { @@ -2744,6 +2838,12 @@ func withdrawCryptocurrencyFunds(c *cli.Context) error { description = c.Args().Get(6) } + if c.IsSet("chain") { + chain = c.String("chain") + } else if c.Args().Get(7) != "" { + chain = c.Args().Get(7) + } + conn, cancel, err := setupClient(c) if err != nil { return err @@ -2761,6 +2861,7 @@ func withdrawCryptocurrencyFunds(c *cli.Context) error { Amount: amount, Fee: fee, Description: description, + Chain: chain, }, ) if err != nil { diff --git a/cmd/gctcli/main.go b/cmd/gctcli/main.go index 7ad33503..b76f468e 100644 --- a/cmd/gctcli/main.go +++ b/cmd/gctcli/main.go @@ -143,6 +143,7 @@ func main() { removeEventCommand, getCryptocurrencyDepositAddressesCommand, getCryptocurrencyDepositAddressCommand, + getAvailableTransferChainsCommand, withdrawCryptocurrencyFundsCommand, withdrawFiatFundsCommand, withdrawalRequestCommand, diff --git a/config/config_types.go b/config/config_types.go index b8e6178f..90cb54db 100644 --- a/config/config_types.go +++ b/config/config_types.go @@ -298,12 +298,14 @@ type APIEndpointsConfig struct { // APICredentialsConfig stores the API credentials type APICredentialsConfig struct { - Key string `json:"key,omitempty"` - Secret string `json:"secret,omitempty"` - ClientID string `json:"clientID,omitempty"` - Subaccount string `json:"subaccount,omitempty"` - PEMKey string `json:"pemKey,omitempty"` - OTPSecret string `json:"otpSecret,omitempty"` + Key string `json:"key,omitempty"` + Secret string `json:"secret,omitempty"` + ClientID string `json:"clientID,omitempty"` + Subaccount string `json:"subaccount,omitempty"` + PEMKey string `json:"pemKey,omitempty"` + OTPSecret string `json:"otpSecret,omitempty"` + TradePassword string `json:"tradePassword,omitempty"` + PIN string `json:"pin,omitempty"` } // APICredentialsValidatorConfig stores the API credentials validator settings diff --git a/currency/code_types.go b/currency/code_types.go index 8f988261..0d46e78f 100644 --- a/currency/code_types.go +++ b/currency/code_types.go @@ -1665,4 +1665,5 @@ var ( BUSD = NewCode("BUSD") SRM = NewCode("SRM") FTT = NewCode("FTT") + UST = NewCode("UST") ) diff --git a/currency/currency_test.go b/currency/currency_test.go index 64977a26..b726c862 100644 --- a/currency/currency_test.go +++ b/currency/currency_test.go @@ -57,7 +57,7 @@ func TestGetDefaultBaseCurrency(t *testing.T) { } func TestGetDefaulCryptoCurrencies(t *testing.T) { - expected := Currencies{BTC, LTC, ETH, DOGE, DASH, XRP, XMR} + expected := Currencies{BTC, LTC, ETH, DOGE, DASH, XRP, XMR, USDT, UST} if !GetDefaultCryptocurrencies().Match(expected) { t.Errorf("GetDefaultCryptocurrencies() expected %s but received %s", expected, GetDefaultCryptocurrencies()) diff --git a/currency/storage.go b/currency/storage.go index 6d169d59..8f688497 100644 --- a/currency/storage.go +++ b/currency/storage.go @@ -36,7 +36,7 @@ func (s *Storage) SetDefaults() { log.Errorf(log.Global, "Currency Storage: Setting default fiat currencies error: %s", err) } - err = s.SetDefaultCryptocurrencies(BTC, LTC, ETH, DOGE, DASH, XRP, XMR) + err = s.SetDefaultCryptocurrencies(BTC, LTC, ETH, DOGE, DASH, XRP, XMR, USDT, UST) if err != nil { log.Errorf(log.Global, "Currency Storage: Setting default cryptocurrencies error: %s", err) } diff --git a/docs/MULTICHAIN_TRANSFER_SUPPORT.md b/docs/MULTICHAIN_TRANSFER_SUPPORT.md new file mode 100644 index 00000000..47ed4576 --- /dev/null +++ b/docs/MULTICHAIN_TRANSFER_SUPPORT.md @@ -0,0 +1,72 @@ +# Multichain transfer support + +Several exchanges support deposits and withdrawals by other blockchain networks. An example would be Tether (USDT) which supports the ERC20 (Ethereum), TRC20 (Tron) and Omni (BTC) networks. + +GoCryptoTrader contains a `GetAvailableTransferChains` exchange method for supported exchanges which returns a list of the supported transfer chains specified by a cryptocurrency. + +A simple demonstration using `gctcli` is as follows: + +## Obtaining a list of supported transfer chains + +```sh +$ ./gctcli getavailabletransferchains --exchange=ftx --cryptocurrency=usdt +{ + "chains": [ + "erc20", + "trx", + "sol", + "omni" + ] +} +``` + +## Obtaining a deposit address based on a specific cryptocurrency and chain + +```sh +$ ./gctcli getcryptocurrencydepositaddress --exchange=ftx --cryptocurrency=usdt --chain=sol +{ + "address": "GW3oT9JpFyTkCWPnt6Yw9ugppSQwDv4ZMG1vabC8WmHS" +} +``` + +## Withdrawing + +```sh +$ ./gctcli withdrawcryptofunds --exchange=ftx --currency=USDT --address=TJU9piX2WA8WTvxVKMqpvTzZGhvXQAZKSY --amount=10 --chain=trx +{ + "id": "01234567-0000-0000-0000-000000000000", +} +``` + +## Exchange multichain transfer support table + +| Exchange | Deposits | Withdrawals | Notes| +|----------|----------|-------------|------| +| Alphapoint | No | No | | +| Binance | Yes | Yes | | +| Bitfinex | Yes | Yes | Only supports USDT | +| Bitflyer | No | No | | +| Bithumb | No | No | | +| BitMEX | No | No | Supports BTC only | +| Bitstamp | No | No | | +| Bittrex | No | No | NA | +| BTCMarkets | No | No| NA | +| BTSE | No | No | Only through website | +| CoinbasePro | No | No | No| +| Coinbene | Yes | Yes | Addresses must be created via their website first | +| COINUT | No | No | NA | +| Exmo | Yes | Yes | Addresses must be created via their website first | +| FTX | Yes | Yes | | +| GateIO | Yes | Yes | | +| Gemini | No | No | | +| HitBTC | No | No | | +| Huobi.Pro | Yes | Yes | | +| ItBit | No | No | | +| Kraken | Yes | Yes | Front-end and API don't match total available transfer chains | +| Lbank | No | No | | +| LocalBitcoins | No | No | Supports BTC only | +| OKCoin International | No | No | Requires API update to version 5 | +| OKEX | No | No | Same as above | +| Poloniex | Yes | Yes | | +| Yobit | No | No | | +| ZB.COM | Yes | No | Addresses must be created via their website first | diff --git a/engine/datahistory_manager_test.go b/engine/datahistory_manager_test.go index 27ae42b1..348ce0f3 100644 --- a/engine/datahistory_manager_test.go +++ b/engine/datahistory_manager_test.go @@ -654,8 +654,7 @@ func TestCompareJobsToData(t *testing.T) { } } -func TestRunJob(t *testing.T) { - t.Parallel() +func TestRunJob(t *testing.T) { // nolint // TO-DO: Fix race t.Parallel() usage testCases := []*DataHistoryJob{ { Nickname: "TestRunJobDataHistoryCandleDataType", diff --git a/engine/depositaddress.go b/engine/depositaddress.go index c88913ad..6ba292b8 100644 --- a/engine/depositaddress.go +++ b/engine/depositaddress.go @@ -7,55 +7,86 @@ import ( "sync" "github.com/thrasher-corp/gocryptotrader/currency" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" ) // vars related to the deposit address helpers var ( - ErrDepositAddressStoreIsNil = errors.New("deposit address store is nil") - ErrDepositAddressNotFound = errors.New("deposit address does not exist") + ErrDepositAddressStoreIsNil = errors.New("deposit address store is nil") + ErrDepositAddressNotFound = errors.New("deposit address does not exist") + errDepositAddressChainNotFound = errors.New("deposit address for specified chain not found") + errNoDepositAddressesRetrieved = errors.New("no deposit addresses retrieved") ) // DepositAddressManager manages the exchange deposit address store type DepositAddressManager struct { - m sync.Mutex - store map[string]map[string]string + m sync.RWMutex + store map[string]map[string][]deposit.Address +} + +// IsSynced returns whether or not the deposit address store has synced its data +func (m *DepositAddressManager) IsSynced() bool { + if m.store == nil { + return false + } + m.m.RLock() + defer m.m.RUnlock() + return len(m.store) > 0 } // SetupDepositAddressManager returns a DepositAddressManager func SetupDepositAddressManager() *DepositAddressManager { return &DepositAddressManager{ - store: make(map[string]map[string]string), + store: make(map[string]map[string][]deposit.Address), } } // GetDepositAddressByExchangeAndCurrency returns a deposit address for the specified exchange and cryptocurrency // if it exists -func (m *DepositAddressManager) GetDepositAddressByExchangeAndCurrency(exchName string, currencyItem currency.Code) (string, error) { - m.m.Lock() - defer m.m.Unlock() +func (m *DepositAddressManager) GetDepositAddressByExchangeAndCurrency(exchName, chain string, currencyItem currency.Code) (deposit.Address, error) { + m.m.RLock() + defer m.m.RUnlock() if len(m.store) == 0 { - return "", ErrDepositAddressStoreIsNil + return deposit.Address{}, ErrDepositAddressStoreIsNil } r, ok := m.store[strings.ToUpper(exchName)] if !ok { - return "", ErrExchangeNotFound + return deposit.Address{}, ErrExchangeNotFound } addr, ok := r[strings.ToUpper(currencyItem.String())] if !ok { - return "", ErrDepositAddressNotFound + return deposit.Address{}, ErrDepositAddressNotFound } - return addr, nil + if len(addr) == 0 { + return deposit.Address{}, errNoDepositAddressesRetrieved + } + + if chain != "" { + for x := range addr { + if strings.EqualFold(addr[x].Chain, chain) { + return addr[x], nil + } + } + return deposit.Address{}, errDepositAddressChainNotFound + } + + for x := range addr { + if strings.EqualFold(addr[x].Chain, currencyItem.String()) { + return addr[x], nil + } + } + return addr[0], nil } // GetDepositAddressesByExchange returns a list of cryptocurrency addresses for the specified // exchange if they exist -func (m *DepositAddressManager) GetDepositAddressesByExchange(exchName string) (map[string]string, error) { - m.m.Lock() - defer m.m.Unlock() +func (m *DepositAddressManager) GetDepositAddressesByExchange(exchName string) (map[string][]deposit.Address, error) { + m.m.RLock() + defer m.m.RUnlock() if len(m.store) == 0 { return nil, ErrDepositAddressStoreIsNil @@ -66,11 +97,15 @@ func (m *DepositAddressManager) GetDepositAddressesByExchange(exchName string) ( return nil, ErrDepositAddressNotFound } - return r, nil + cpy := make(map[string][]deposit.Address, len(r)) + for k, v := range r { + cpy[k] = v + } + return cpy, nil } // Sync synchronises all deposit addresses -func (m *DepositAddressManager) Sync(addresses map[string]map[string]string) error { +func (m *DepositAddressManager) Sync(addresses map[string]map[string][]deposit.Address) error { if m == nil { return fmt.Errorf("deposit address manager %w", ErrNilSubsystem) } @@ -81,7 +116,7 @@ func (m *DepositAddressManager) Sync(addresses map[string]map[string]string) err } for k, v := range addresses { - r := make(map[string]string) + r := make(map[string][]deposit.Address) for w, x := range v { r[strings.ToUpper(w)] = x } diff --git a/engine/depositaddress_test.go b/engine/depositaddress_test.go index a9a6767a..17ef5419 100644 --- a/engine/depositaddress_test.go +++ b/engine/depositaddress_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/thrasher-corp/gocryptotrader/currency" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" ) const ( @@ -13,7 +14,32 @@ const ( btc = "BTC" ) +func TestIsSynced(t *testing.T) { + t.Parallel() + var d DepositAddressManager + if d.IsSynced() { + t.Error("should be false") + } + m := SetupDepositAddressManager() + err := m.Sync(map[string]map[string][]deposit.Address{ + bitStamp: { + btc: []deposit.Address{ + { + Address: address, + }, + }, + }, + }) + if err != nil { + t.Error(err) + } + if !m.IsSynced() { + t.Error("should be synced") + } +} + func TestSetupDepositAddressManager(t *testing.T) { + t.Parallel() m := SetupDepositAddressManager() if m.store == nil { t.Fatal("expected store") @@ -21,27 +47,36 @@ func TestSetupDepositAddressManager(t *testing.T) { } func TestSync(t *testing.T) { + t.Parallel() m := SetupDepositAddressManager() - err := m.Sync(map[string]map[string]string{ + err := m.Sync(map[string]map[string][]deposit.Address{ bitStamp: { - btc: address, + btc: []deposit.Address{ + { + Address: address, + }, + }, }, }) if err != nil { t.Error(err) } - r, err := m.GetDepositAddressByExchangeAndCurrency(bitStamp, currency.BTC) + r, err := m.GetDepositAddressByExchangeAndCurrency(bitStamp, "", currency.BTC) if err != nil { t.Error("unexpected result") } - if r != address { + if r.Address != address { t.Error("unexpected result") } m.store = nil - err = m.Sync(map[string]map[string]string{ + err = m.Sync(map[string]map[string][]deposit.Address{ bitStamp: { - btc: address, + btc: []deposit.Address{ + { + Address: address, + }, + }, }, }) if !errors.Is(err, ErrDepositAddressStoreIsNil) { @@ -49,9 +84,13 @@ func TestSync(t *testing.T) { } m = nil - err = m.Sync(map[string]map[string]string{ + err = m.Sync(map[string]map[string][]deposit.Address{ bitStamp: { - btc: address, + btc: []deposit.Address{ + { + Address: address, + }, + }, }, }) if !errors.Is(err, ErrNilSubsystem) { @@ -60,35 +99,91 @@ func TestSync(t *testing.T) { } func TestGetDepositAddressByExchangeAndCurrency(t *testing.T) { + t.Parallel() m := SetupDepositAddressManager() - _, err := m.GetDepositAddressByExchangeAndCurrency("", currency.BTC) + _, err := m.GetDepositAddressByExchangeAndCurrency("", "", currency.BTC) if !errors.Is(err, ErrDepositAddressStoreIsNil) { t.Errorf("received %v, expected %v", err, ErrDepositAddressStoreIsNil) } - m.store = map[string]map[string]string{ + m.store = map[string]map[string][]deposit.Address{ bitStamp: { - btc: address, + btc: []deposit.Address{ + { + Address: address, + }, + }, + "USDT": []deposit.Address{ + { + Address: "ABsdZ", + Chain: "SOL", + }, + { + Address: "0x1b", + Chain: "ERC20", + }, + { + Address: "1asdad", + Chain: "USDT", + }, + }, + "BNB": nil, }, } - _, err = m.GetDepositAddressByExchangeAndCurrency(bitStamp, currency.BTC) + _, err = m.GetDepositAddressByExchangeAndCurrency("asdf", "", currency.BTC) + if !errors.Is(err, ErrExchangeNotFound) { + t.Errorf("received %v, expected %v", err, ErrExchangeNotFound) + } + _, err = m.GetDepositAddressByExchangeAndCurrency(bitStamp, "", currency.LTC) + if !errors.Is(err, ErrDepositAddressNotFound) { + t.Errorf("received %v, expected %v", err, ErrDepositAddressNotFound) + } + _, err = m.GetDepositAddressByExchangeAndCurrency(bitStamp, "", currency.BNB) + if !errors.Is(err, errNoDepositAddressesRetrieved) { + t.Errorf("received %v, expected %v", err, errNoDepositAddressesRetrieved) + } + _, err = m.GetDepositAddressByExchangeAndCurrency(bitStamp, "NON-EXISTENT-CHAIN", currency.USDT) + if !errors.Is(err, errDepositAddressChainNotFound) { + t.Errorf("received %v, expected %v", err, errDepositAddressChainNotFound) + } + + if r, _ := m.GetDepositAddressByExchangeAndCurrency(bitStamp, "ErC20", currency.USDT); r.Address != "0x1b" && r.Chain != "ERC20" { + t.Error("unexpected values") + } + if r, _ := m.GetDepositAddressByExchangeAndCurrency(bitStamp, "sOl", currency.USDT); r.Address != "ABsdZ" && r.Chain != "SOL" { + t.Error("unexpected values") + } + if r, _ := m.GetDepositAddressByExchangeAndCurrency(bitStamp, "", currency.USDT); r.Address != "1asdad" && r.Chain != "USDT" { + t.Error("unexpected values") + } + _, err = m.GetDepositAddressByExchangeAndCurrency(bitStamp, "", currency.BTC) if !errors.Is(err, nil) { t.Errorf("received %v, expected %v", err, nil) } } func TestGetDepositAddressesByExchange(t *testing.T) { + t.Parallel() m := SetupDepositAddressManager() _, err := m.GetDepositAddressesByExchange("") if !errors.Is(err, ErrDepositAddressStoreIsNil) { t.Errorf("received %v, expected %v", err, ErrDepositAddressStoreIsNil) } - m.store = map[string]map[string]string{ + m.store = map[string]map[string][]deposit.Address{ bitStamp: { - btc: address, + btc: []deposit.Address{ + { + Address: address, + }, + }, }, } + _, err = m.GetDepositAddressesByExchange("non-existent") + if !errors.Is(err, ErrDepositAddressNotFound) { + t.Errorf("received %v, expected %v", err, ErrDepositAddressNotFound) + } + _, err = m.GetDepositAddressesByExchange(bitStamp) if !errors.Is(err, nil) { t.Errorf("received %v, expected %v", err, nil) diff --git a/engine/engine.go b/engine/engine.go index ec69c5c6..e0b19b71 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -494,7 +494,7 @@ func (bot *Engine) Start() error { if bot.Settings.EnableDepositAddressManager { bot.DepositAddressManager = SetupDepositAddressManager() go func() { - err = bot.DepositAddressManager.Sync(bot.GetExchangeCryptocurrencyDepositAddresses()) + err = bot.DepositAddressManager.Sync(bot.GetAllExchangeCryptocurrencyDepositAddresses()) if err != nil { gctlog.Errorf(gctlog.Global, "Deposit address manager unable to setup: %s", err) } diff --git a/engine/helpers.go b/engine/helpers.go index ebde5c25..39c35ba7 100644 --- a/engine/helpers.go +++ b/engine/helpers.go @@ -16,6 +16,7 @@ import ( "os" "path/filepath" "strings" + "sync" "time" "github.com/pquerna/otp/totp" @@ -27,6 +28,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" "github.com/thrasher-corp/gocryptotrader/exchanges/stats" "github.com/thrasher-corp/gocryptotrader/exchanges/ticker" @@ -668,12 +670,15 @@ func (bot *Engine) GetCryptocurrenciesByExchange(exchangeName string, enabledExc } // GetCryptocurrencyDepositAddressesByExchange returns the cryptocurrency deposit addresses for a particular exchange -func (bot *Engine) GetCryptocurrencyDepositAddressesByExchange(exchName string) (map[string]string, error) { +func (bot *Engine) GetCryptocurrencyDepositAddressesByExchange(exchName string) (map[string][]deposit.Address, error) { if bot.DepositAddressManager != nil { - return bot.DepositAddressManager.GetDepositAddressesByExchange(exchName) + if bot.DepositAddressManager.IsSynced() { + return bot.DepositAddressManager.GetDepositAddressesByExchange(exchName) + } + return nil, errors.New("deposit address manager has not yet synced all exchange deposit addresses") } - result := bot.GetExchangeCryptocurrencyDepositAddresses() + result := bot.GetAllExchangeCryptocurrencyDepositAddresses() r, ok := result[exchName] if !ok { return nil, ErrExchangeNotFound @@ -683,50 +688,112 @@ func (bot *Engine) GetCryptocurrencyDepositAddressesByExchange(exchName string) // GetExchangeCryptocurrencyDepositAddress returns the cryptocurrency deposit address for a particular // exchange -func (bot *Engine) GetExchangeCryptocurrencyDepositAddress(ctx context.Context, exchName, accountID string, item currency.Code) (string, error) { - if bot.DepositAddressManager != nil { - return bot.DepositAddressManager.GetDepositAddressByExchangeAndCurrency(exchName, item) +func (bot *Engine) GetExchangeCryptocurrencyDepositAddress(ctx context.Context, exchName, accountID, chain string, item currency.Code, bypassCache bool) (*deposit.Address, error) { + if bot.DepositAddressManager != nil && bot.DepositAddressManager.IsSynced() && !bypassCache { + resp, err := bot.DepositAddressManager.GetDepositAddressByExchangeAndCurrency(exchName, chain, item) + if err != nil { + return nil, err + } + return &resp, nil } - exch, err := bot.GetExchangeByName(exchName) if err != nil { - return "", err + return nil, err } - return exch.GetDepositAddress(ctx, item, accountID) + return exch.GetDepositAddress(ctx, item, accountID, chain) } -// GetExchangeCryptocurrencyDepositAddresses obtains an exchanges deposit cryptocurrency list -func (bot *Engine) GetExchangeCryptocurrencyDepositAddresses() map[string]map[string]string { - result := make(map[string]map[string]string) +// GetAllExchangeCryptocurrencyDepositAddresses obtains an exchanges deposit cryptocurrency list +func (bot *Engine) GetAllExchangeCryptocurrencyDepositAddresses() map[string]map[string][]deposit.Address { + result := make(map[string]map[string][]deposit.Address) exchanges := bot.GetExchanges() + var depositSyncer sync.WaitGroup + depositSyncer.Add(len(exchanges)) + var m sync.Mutex for x := range exchanges { - exchName := exchanges[x].GetName() - if !exchanges[x].GetAuthenticatedAPISupport(exchange.RestAuthentication) { - if bot.Settings.Verbose { - log.Debugf(log.ExchangeSys, "GetExchangeCryptocurrencyDepositAddresses: Skippping %s due to disabled authenticated API support.\n", exchName) + go func(x int) { + defer depositSyncer.Done() + exchName := exchanges[x].GetName() + if !exchanges[x].GetAuthenticatedAPISupport(exchange.RestAuthentication) { + if bot.Settings.Verbose { + log.Debugf(log.ExchangeSys, "GetAllExchangeCryptocurrencyDepositAddresses: Skippping %s due to disabled authenticated API support.\n", exchName) + } + return } - continue - } - cryptoCurrencies, err := bot.GetCryptocurrenciesByExchange(exchName, true, true, asset.Spot) - if err != nil { - log.Debugf(log.ExchangeSys, "%s failed to get cryptocurrency deposit addresses. Err: %s\n", exchName, err) - continue - } - - cryptoAddr := make(map[string]string) - for y := range cryptoCurrencies { - cryptocurrency := cryptoCurrencies[y] - depositAddr, err := exchanges[x].GetDepositAddress(context.TODO(), - currency.NewCode(cryptocurrency), - "") + cryptoCurrencies, err := bot.GetCryptocurrenciesByExchange(exchName, true, true, asset.Spot) if err != nil { - log.Errorf(log.Global, "%s failed to get cryptocurrency deposit addresses. Err: %s\n", exchName, err) - continue + log.Errorf(log.ExchangeSys, "%s failed to get cryptocurrency deposit addresses. Err: %s\n", exchName, err) + return } - cryptoAddr[cryptocurrency] = depositAddr - } - result[exchName] = cryptoAddr + supportsMultiChain := exchanges[x].GetBase().Features.Supports.RESTCapabilities.MultiChainDeposits + requiresChainSet := exchanges[x].GetBase().Features.Supports.RESTCapabilities.MultiChainDepositRequiresChainSet + cryptoAddr := make(map[string][]deposit.Address) + for y := range cryptoCurrencies { + cryptocurrency := cryptoCurrencies[y] + isSingular := false + var depositAddrs []deposit.Address + if supportsMultiChain { + availChains, err := exchanges[x].GetAvailableTransferChains(context.TODO(), currency.NewCode(cryptocurrency)) + if err != nil { + log.Errorf(log.Global, "%s failed to get cryptocurrency available transfer chains. Err: %s\n", exchName, err) + continue + } + if len(availChains) > 0 { + // store the default non-chain specified address for a specified crypto + chainContainsItself := common.StringDataCompareInsensitive(availChains, cryptocurrency) + if !chainContainsItself && !requiresChainSet { + depositAddr, err := exchanges[x].GetDepositAddress(context.TODO(), currency.NewCode(cryptocurrency), "", "") + if err != nil { + log.Errorf(log.Global, "%s failed to get cryptocurrency deposit address for %s. Err: %s\n", + exchName, + cryptocurrency, + err) + continue + } + depositAddr.Chain = cryptocurrency + depositAddrs = append(depositAddrs, *depositAddr) + } + for z := range availChains { + depositAddr, err := exchanges[x].GetDepositAddress(context.TODO(), currency.NewCode(cryptocurrency), "", availChains[z]) + if err != nil { + log.Errorf(log.Global, "%s failed to get cryptocurrency deposit address for %s [chain %s]. Err: %s\n", + exchName, + cryptocurrency, + availChains[z], + err) + continue + } + depositAddr.Chain = availChains[z] + depositAddrs = append(depositAddrs, *depositAddr) + } + } else { + // cryptocurrency doesn't support multichain transfers + isSingular = true + } + } + + if !supportsMultiChain || isSingular { + depositAddr, err := exchanges[x].GetDepositAddress(context.TODO(), currency.NewCode(cryptocurrency), "", "") + if err != nil { + log.Errorf(log.Global, "%s failed to get cryptocurrency deposit address for %s. Err: %s\n", + exchName, + cryptocurrency, + err) + continue + } + depositAddrs = append(depositAddrs, *depositAddr) + } + cryptoAddr[cryptocurrency] = depositAddrs + } + m.Lock() + result[exchName] = cryptoAddr + m.Unlock() + }(x) + } + depositSyncer.Wait() + if len(result) > 0 { + log.Infoln(log.Global, "Deposit addresses synced") } return result } diff --git a/engine/helpers_test.go b/engine/helpers_test.go index a3e79de7..768a141f 100644 --- a/engine/helpers_test.go +++ b/engine/helpers_test.go @@ -24,9 +24,12 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/database" "github.com/thrasher-corp/gocryptotrader/dispatch" + exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" + "github.com/thrasher-corp/gocryptotrader/exchanges/protocol" "github.com/thrasher-corp/gocryptotrader/exchanges/stats" "github.com/thrasher-corp/gocryptotrader/exchanges/ticker" "github.com/thrasher-corp/gocryptotrader/gctscript/vm" @@ -115,8 +118,7 @@ func TestGetRPCEndpoints(t *testing.T) { } } -func TestSetSubsystem(t *testing.T) { - t.Parallel() +func TestSetSubsystem(t *testing.T) { // nolint // TO-DO: Fix race t.Parallel() usage testCases := []struct { Subsystem string Engine *Engine @@ -983,13 +985,191 @@ func TestGetExchangeLowestPriceByCurrencyPair(t *testing.T) { func TestGetCryptocurrenciesByExchange(t *testing.T) { t.Parallel() e := CreateTestBot(t) - _, err := e.GetCryptocurrenciesByExchange("Bitfinex", false, false, asset.Spot) if err != nil { t.Fatalf("Err %s", err) } } +type fakeDepositExchangeOpts struct { + SupportsAuth bool + SupportsMultiChain bool + RequiresChainSet bool + ReturnMultipleChains bool + ThrowPairError bool + ThrowTransferChainError bool + ThrowDepositAddressError bool +} + +type fakeDepositExchange struct { + exchange.IBotExchange + *fakeDepositExchangeOpts +} + +func (f fakeDepositExchange) GetName() string { + return "fake" +} + +func (f fakeDepositExchange) GetAuthenticatedAPISupport(endpoint uint8) bool { + return f.SupportsAuth +} + +func (f fakeDepositExchange) GetBase() *exchange.Base { + return &exchange.Base{ + Features: exchange.Features{Supports: exchange.FeaturesSupported{ + RESTCapabilities: protocol.Features{ + MultiChainDeposits: f.SupportsMultiChain, + MultiChainDepositRequiresChainSet: f.RequiresChainSet, + }, + }}, + } +} + +func (f fakeDepositExchange) GetAvailableTransferChains(_ context.Context, c currency.Code) ([]string, error) { + if f.ThrowTransferChainError { + return nil, errors.New("unable to get available transfer chains") + } + if c.Match(currency.XRP) { + return nil, nil + } + if c.Match(currency.USDT) { + return []string{"sol", "btc", "usdt"}, nil + } + return []string{"BITCOIN"}, nil +} + +func (f fakeDepositExchange) GetDepositAddress(_ context.Context, c currency.Code, chain, accountID string) (*deposit.Address, error) { + if f.ThrowDepositAddressError { + return nil, errors.New("unable to get deposit address") + } + return &deposit.Address{Address: "fakeaddr"}, nil +} + +func createDepositEngine(opts *fakeDepositExchangeOpts) *Engine { + ps := currency.PairStore{ + AssetEnabled: convert.BoolPtr(true), + Enabled: currency.Pairs{ + currency.NewPair(currency.BTC, currency.USDT), + currency.NewPair(currency.XRP, currency.USDT), + }, + Available: currency.Pairs{ + currency.NewPair(currency.BTC, currency.USDT), + currency.NewPair(currency.XRP, currency.USDT), + }, + } + if opts.ThrowPairError { + ps.Available = nil + } + return &Engine{ + Settings: Settings{Verbose: true}, + Config: &config.Config{ + Exchanges: []config.ExchangeConfig{ + { + Name: "fake", + Enabled: true, + CurrencyPairs: ¤cy.PairsManager{ + UseGlobalFormat: true, + ConfigFormat: ¤cy.PairFormat{}, + Pairs: map[asset.Item]*currency.PairStore{ + asset.Spot: &ps, + }, + }, + }, + }, + }, + ExchangeManager: &ExchangeManager{ + exchanges: map[string]exchange.IBotExchange{ + "fake": fakeDepositExchange{ + fakeDepositExchangeOpts: opts, + }, + }, + }, + } +} + +func TestGetCryptocurrencyDepositAddressesByExchange(t *testing.T) { + t.Parallel() + const exchName = "fake" + e := createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, SupportsMultiChain: true}) + _, err := e.GetCryptocurrencyDepositAddressesByExchange(exchName) + if err != nil { + t.Error(err) + } + if _, err = e.GetCryptocurrencyDepositAddressesByExchange("non-existent"); !errors.Is(err, ErrExchangeNotFound) { + t.Errorf("received %s, expected: %s", err, ErrExchangeNotFound) + } + e.DepositAddressManager = SetupDepositAddressManager() + _, err = e.GetCryptocurrencyDepositAddressesByExchange(exchName) + if err == nil { + t.Error("expected error") + } + if err = e.DepositAddressManager.Sync(e.GetAllExchangeCryptocurrencyDepositAddresses()); err != nil { + t.Fatal(err) + } + _, err = e.GetCryptocurrencyDepositAddressesByExchange(exchName) + if err != nil { + t.Error(err) + } +} + +func TestGetExchangeCryptocurrencyDepositAddress(t *testing.T) { + t.Parallel() + e := createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, SupportsMultiChain: true}) + const exchName = "fake" + if _, err := e.GetExchangeCryptocurrencyDepositAddress(context.Background(), "non-existent", "", "", currency.BTC, false); !errors.Is(err, ErrExchangeNotFound) { + t.Errorf("received %s, expected: %s", err, ErrExchangeNotFound) + } + r, err := e.GetExchangeCryptocurrencyDepositAddress(context.Background(), exchName, "", "", currency.BTC, false) + if err != nil { + t.Error(err) + } + if r.Address != "fakeaddr" { + t.Error("unexpected address") + } + e.DepositAddressManager = SetupDepositAddressManager() + if err := e.DepositAddressManager.Sync(e.GetAllExchangeCryptocurrencyDepositAddresses()); err != nil { + t.Fatal(err) + } + if _, err := e.GetExchangeCryptocurrencyDepositAddress(context.Background(), "meow", "", "", currency.BTC, false); !errors.Is(err, ErrExchangeNotFound) { + t.Errorf("received %s, expected: %s", err, ErrExchangeNotFound) + } + if _, err := e.GetExchangeCryptocurrencyDepositAddress(context.Background(), exchName, "", "", currency.BTC, false); err != nil { + t.Error(err) + } +} + +func TestGetAllExchangeCryptocurrencyDepositAddresses(t *testing.T) { + t.Parallel() + e := createDepositEngine(&fakeDepositExchangeOpts{}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r) > 0 { + t.Error("should have no addresses returned for an unauthenticated exchange") + } + e = createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, ThrowPairError: true}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r) > 0 { + t.Error("should have no cryptos returned for no enabled pairs") + } + e = createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, SupportsMultiChain: true, ThrowTransferChainError: true}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r["fake"]) != 0 { + t.Error("should have returned no deposit addresses for a fake exchange with transfer error") + } + e = createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, SupportsMultiChain: true, ThrowDepositAddressError: true}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r["fake"]["btc"]) != 0 { + t.Error("should have returned no deposit addresses for fake exchange with deposit error, with multichain support enabled") + } + e = createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, SupportsMultiChain: true, RequiresChainSet: true}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r["fake"]["btc"]) == 0 { + t.Error("should of returned a BTC address") + } + e = createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true, SupportsMultiChain: true}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r["fake"]["btc"]) == 0 { + t.Error("should of returned a BTC address") + } + e = createDepositEngine(&fakeDepositExchangeOpts{SupportsAuth: true}) + if r := e.GetAllExchangeCryptocurrencyDepositAddresses(); len(r["fake"]["xrp"]) == 0 { + t.Error("should have returned a XRP address") + } +} + func TestGetExchangeNames(t *testing.T) { t.Parallel() bot := CreateTestBot(t) diff --git a/engine/rpcserver.go b/engine/rpcserver.go index 0e319f37..810785cc 100644 --- a/engine/rpcserver.go +++ b/engine/rpcserver.go @@ -17,6 +17,7 @@ import ( "github.com/gofrs/uuid" grpcauth "github.com/grpc-ecosystem/go-grpc-middleware/auth" "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/pquerna/otp/totp" "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/common/crypto" "github.com/thrasher-corp/gocryptotrader/common/file" @@ -62,6 +63,7 @@ var ( errAssetTypeUnset = errors.New("asset type unset") errDispatchSystem = errors.New("dispatch system offline") errCurrencyNotEnabled = errors.New("currency not enabled") + errCurrencyNotSpecified = errors.New("a currency must be specified") errCurrencyPairInvalid = errors.New("currency provided is not found in the available pairs list") errNoTrades = errors.New("no trades returned from supplied params") errNilRequestData = errors.New("nil request data received, cannot continue") @@ -1439,6 +1441,7 @@ func (s *RPCServer) CancelAllOrders(ctx context.Context, r *gctrpc.CancelAllOrde }, nil } +// ModifyOrder modifies an existing order if it exists func (s *RPCServer) ModifyOrder(ctx context.Context, r *gctrpc.ModifyOrderRequest) (*gctrpc.ModifyOrderResponse, error) { assetType, err := asset.New(r.Asset) if err != nil { @@ -1531,28 +1534,90 @@ func (s *RPCServer) RemoveEvent(ctx context.Context, r *gctrpc.RemoveEventReques // GetCryptocurrencyDepositAddresses returns a list of cryptocurrency deposit // addresses specified by an exchange func (s *RPCServer) GetCryptocurrencyDepositAddresses(ctx context.Context, r *gctrpc.GetCryptocurrencyDepositAddressesRequest) (*gctrpc.GetCryptocurrencyDepositAddressesResponse, error) { - _, err := s.GetExchangeByName(r.Exchange) + exch, err := s.GetExchangeByName(r.Exchange) if err != nil { return nil, err } + if !exch.GetAuthenticatedAPISupport(exchange.RestAuthentication) { + return nil, exchange.ErrAuthenticatedRequestWithoutCredentialsSet + } + result, err := s.GetCryptocurrencyDepositAddressesByExchange(r.Exchange) - return &gctrpc.GetCryptocurrencyDepositAddressesResponse{Addresses: result}, err + if err != nil { + return nil, err + } + + var resp gctrpc.GetCryptocurrencyDepositAddressesResponse + resp.Addresses = make(map[string]*gctrpc.DepositAddresses) + for k, v := range result { + var depositAddrs []*gctrpc.DepositAddress + for a := range v { + depositAddrs = append(depositAddrs, &gctrpc.DepositAddress{ + Address: v[a].Address, + Tag: v[a].Tag, + Chain: v[a].Chain, + }) + } + resp.Addresses[k] = &gctrpc.DepositAddresses{Addresses: depositAddrs} + } + return &resp, nil } // GetCryptocurrencyDepositAddress returns a cryptocurrency deposit address // specified by exchange and cryptocurrency func (s *RPCServer) GetCryptocurrencyDepositAddress(ctx context.Context, r *gctrpc.GetCryptocurrencyDepositAddressRequest) (*gctrpc.GetCryptocurrencyDepositAddressResponse, error) { - _, err := s.GetExchangeByName(r.Exchange) + exch, err := s.GetExchangeByName(r.Exchange) if err != nil { return nil, err } + if !exch.GetAuthenticatedAPISupport(exchange.RestAuthentication) { + return nil, exchange.ErrAuthenticatedRequestWithoutCredentialsSet + } + addr, err := s.GetExchangeCryptocurrencyDepositAddress(ctx, r.Exchange, "", - currency.NewCode(r.Cryptocurrency)) - return &gctrpc.GetCryptocurrencyDepositAddressResponse{Address: addr}, err + r.Chain, + currency.NewCode(r.Cryptocurrency), + r.Bypass, + ) + if err != nil { + return nil, err + } + + return &gctrpc.GetCryptocurrencyDepositAddressResponse{ + Address: addr.Address, + Tag: addr.Tag, + }, nil +} + +// GetAvailableTransferChains returns the supported transfer chains specified by +// exchange and cryptocurrency +func (s *RPCServer) GetAvailableTransferChains(ctx context.Context, r *gctrpc.GetAvailableTransferChainsRequest) (*gctrpc.GetAvailableTransferChainsResponse, error) { + exch, err := s.GetExchangeByName(r.Exchange) + if err != nil { + return nil, err + } + + curr := currency.NewCode(r.Cryptocurrency) + if curr.IsEmpty() { + return nil, errCurrencyNotSpecified + } + + resp, err := exch.GetAvailableTransferChains(ctx, curr) + if err != nil { + return nil, err + } + + if len(resp) == 0 { + return nil, errors.New("no available transfer chains found") + } + + return &gctrpc.GetAvailableTransferChainsResponse{ + Chains: resp, + }, nil } // WithdrawCryptocurrencyFunds withdraws cryptocurrency funds specified by @@ -1573,9 +1638,38 @@ func (s *RPCServer) WithdrawCryptocurrencyFunds(ctx context.Context, r *gctrpc.W Address: r.Address, AddressTag: r.AddressTag, FeeAmount: r.Fee, + Chain: r.Chain, }, } + exchCfg, err := s.Config.GetExchangeConfig(r.Exchange) + if err != nil { + return nil, err + } + + if exchCfg.API.Credentials.OTPSecret != "" { + code, errOTP := totp.GenerateCode(exchCfg.API.Credentials.OTPSecret, time.Now()) + if errOTP != nil { + return nil, errOTP + } + + codeNum, errOTP := strconv.ParseInt(code, 10, 64) + if errOTP != nil { + return nil, errOTP + } + request.OneTimePassword = codeNum + } + + if exchCfg.API.Credentials.PIN != "" { + pinCode, errPin := strconv.ParseInt(exchCfg.API.Credentials.PIN, 10, 64) + if err != nil { + return nil, errPin + } + request.PIN = pinCode + } + + request.TradePassword = exchCfg.API.Credentials.TradePassword + resp, err := s.Engine.WithdrawManager.SubmitWithdrawal(ctx, request) if err != nil { return nil, err @@ -1618,6 +1712,34 @@ func (s *RPCServer) WithdrawFiatFunds(ctx context.Context, r *gctrpc.WithdrawFia }, } + exchCfg, err := s.Config.GetExchangeConfig(r.Exchange) + if err != nil { + return nil, err + } + + if exchCfg.API.Credentials.OTPSecret != "" { + code, errOTP := totp.GenerateCode(exchCfg.API.Credentials.OTPSecret, time.Now()) + if err != nil { + return nil, errOTP + } + + codeNum, errOTP := strconv.ParseInt(code, 10, 64) + if err != nil { + return nil, errOTP + } + request.OneTimePassword = codeNum + } + + if exchCfg.API.Credentials.PIN != "" { + pinCode, errPIN := strconv.ParseInt(exchCfg.API.Credentials.PIN, 10, 64) + if err != nil { + return nil, errPIN + } + request.PIN = pinCode + } + + request.TradePassword = exchCfg.API.Credentials.TradePassword + resp, err := s.Engine.WithdrawManager.SubmitWithdrawal(ctx, request) if err != nil { return nil, err diff --git a/engine/withdraw_manager.go b/engine/withdraw_manager.go index 660648e2..ce287d19 100644 --- a/engine/withdraw_manager.go +++ b/engine/withdraw_manager.go @@ -86,10 +86,10 @@ func (m *WithdrawManager) SubmitWithdrawal(ctx context.Context, req *withdraw.Re } } } + dbwithdraw.Event(resp) if err == nil { withdraw.Cache.Add(resp.ID, resp) } - dbwithdraw.Event(resp) return resp, err } diff --git a/exchanges/alphapoint/alphapoint_wrapper.go b/exchanges/alphapoint/alphapoint_wrapper.go index 331b39fc..bc78a6d0 100644 --- a/exchanges/alphapoint/alphapoint_wrapper.go +++ b/exchanges/alphapoint/alphapoint_wrapper.go @@ -319,7 +319,7 @@ func (a *Alphapoint) GetOrderInfo(ctx context.Context, orderID string, pair curr } // GetDepositAddress returns a deposit address for a specified currency -func (a *Alphapoint) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (a *Alphapoint) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (string, error) { addreses, err := a.GetDepositAddresses(ctx) if err != nil { return "", err diff --git a/exchanges/binance/binance.go b/exchanges/binance/binance.go index 587a9d0f..bd6da4a5 100644 --- a/exchanges/binance/binance.go +++ b/exchanges/binance/binance.go @@ -59,10 +59,6 @@ const ( marginAccountInfo = "/sapi/v1/margin/account" // Withdraw API endpoints - withdrawEndpoint = "/wapi/v3/withdraw.html" - depositHistory = "/wapi/v3/depositHistory.html" - withdrawalHistory = "/wapi/v3/withdrawHistory.html" - depositAddress = "/wapi/v3/depositAddress.html" accountStatus = "/wapi/v3/accountStatus.html" systemStatus = "/wapi/v3/systemStatus.html" dustLog = "/wapi/v3/userAssetDribbletLog.html" @@ -71,7 +67,15 @@ const ( undocumentedInterestHistory = "/gateway-api/v1/public/isolated-margin/pair/vip-level" undocumentedCrossMarginInterestHistory = "/gateway-api/v1/friendly/margin/vip/spec/list-all" - defaultRecvWindow = 5 * time.Second + // Wallet endpoints + allCoinsInfo = "/sapi/v1/capital/config/getall" + withdrawEndpoint = "/sapi/v1/capital/withdraw/apply" + depositHistory = "/sapi/v1/capital/deposit/hisrec" + withdrawHistory = "/sapi/v1/capital/withdraw/history" + depositAddress = "/sapi/v1/capital/deposit/address" + + defaultRecvWindow = 5 * time.Second + binanceSAPITimeLayout = "2006-01-02 15:04:05" ) // GetInterestHistory gets interest history for currency/currencies provided @@ -906,98 +910,185 @@ func getCryptocurrencyWithdrawalFee(c currency.Code) float64 { return WithdrawalFees[c] } -// WithdrawCrypto sends cryptocurrency to the address of your choosing -func (b *Binance) WithdrawCrypto(ctx context.Context, asset, address, addressTag, name, amount string) (string, error) { - var resp WithdrawResponse - - params := url.Values{} - params.Set("asset", asset) - params.Set("address", address) - params.Set("amount", amount) - if len(name) > 0 { - params.Set("name", name) - } - if len(addressTag) > 0 { - params.Set("addressTag", addressTag) - } - +// GetAllCoinsInfo returns details about all supported coins +func (b *Binance) GetAllCoinsInfo(ctx context.Context) ([]CoinInfo, error) { + var resp []CoinInfo if err := b.SendAuthHTTPRequest(ctx, exchange.RestSpotSupplementary, - http.MethodPost, withdrawEndpoint, - params, spotDefaultRate, &resp); err != nil { + http.MethodGet, + allCoinsInfo, + nil, + spotDefaultRate, + &resp); err != nil { + return nil, err + } + return resp, nil +} + +// WithdrawCrypto sends cryptocurrency to the address of your choosing +func (b *Binance) WithdrawCrypto(ctx context.Context, cryptoAsset, withdrawOrderID, network, address, addressTag, name, amount string, transactionFeeFlag bool) (string, error) { + if cryptoAsset == "" || address == "" || amount == "" { + return "", errors.New("asset, address and amount must not be empty") + } + + params := url.Values{} + params.Set("coin", cryptoAsset) + params.Set("address", address) + params.Set("amount", amount) + + // optional params + if withdrawOrderID != "" { + params.Set("withdrawOrderId", withdrawOrderID) + } + if network != "" { + params.Set("network", network) + } + if addressTag != "" { + params.Set("addressTag", addressTag) + } + if transactionFeeFlag { + params.Set("transactionFeeFlag", "true") + } + if name != "" { + params.Set("name", url.QueryEscape(name)) + } + + var resp WithdrawResponse + if err := b.SendAuthHTTPRequest(ctx, + exchange.RestSpotSupplementary, + http.MethodPost, + withdrawEndpoint, + params, + spotDefaultRate, + &resp); err != nil { return "", err } - if !resp.Success { - return resp.ID, errors.New(resp.Msg) + if resp.ID == "" { + return "", errors.New("ID is nil") } return resp.ID, nil } -// WithdrawStatus gets the status of recent withdrawals +// DepositHistory returns the deposit history based on the supplied params // status `param` used as string to prevent default value 0 (for int) interpreting as EmailSent status -func (b *Binance) WithdrawStatus(ctx context.Context, c currency.Code, status string, startTime, endTime int64) ([]WithdrawStatusResponse, error) { - var response struct { - Success bool `json:"success"` - WithdrawList []WithdrawStatusResponse `json:"withdrawList"` - } +func (b *Binance) DepositHistory(ctx context.Context, c currency.Code, status string, startTime, endTime time.Time, offset, limit int) ([]DepositHistory, error) { + var response []DepositHistory params := url.Values{} - params.Set("asset", c.String()) + if !c.IsEmpty() { + params.Set("coin", c.String()) + } if status != "" { i, err := strconv.Atoi(status) if err != nil { - return response.WithdrawList, fmt.Errorf("wrong param (status): %s. Error: %v", status, err) + return nil, fmt.Errorf("wrong param (status): %s. Error: %v", status, err) } switch i { case EmailSent, Cancelled, AwaitingApproval, Rejected, Processing, Failure, Completed: default: - return response.WithdrawList, fmt.Errorf("wrong param (status): %s", status) + return nil, fmt.Errorf("wrong param (status): %s", status) } params.Set("status", status) } - if startTime > 0 { - params.Set("startTime", strconv.FormatInt(startTime, 10)) + if !startTime.IsZero() { + params.Set("startTime", strconv.FormatInt(startTime.UTC().Unix(), 10)) } - if endTime > 0 { - params.Set("endTime", strconv.FormatInt(endTime, 10)) + if !endTime.IsZero() { + params.Set("endTime", strconv.FormatInt(endTime.UTC().Unix(), 10)) + } + + if offset != 0 { + params.Set("offset", strconv.Itoa(offset)) + } + + if limit != 0 { + params.Set("limit", strconv.Itoa(limit)) } if err := b.SendAuthHTTPRequest(ctx, exchange.RestSpotSupplementary, - http.MethodGet, withdrawalHistory, - params, spotDefaultRate, + http.MethodGet, + depositHistory, + params, + spotDefaultRate, &response); err != nil { - return response.WithdrawList, err + return nil, err } - return response.WithdrawList, nil + return response, nil +} + +// WithdrawHistory gets the status of recent withdrawals +// status `param` used as string to prevent default value 0 (for int) interpreting as EmailSent status +func (b *Binance) WithdrawHistory(ctx context.Context, c currency.Code, status string, startTime, endTime time.Time, offset, limit int) ([]WithdrawStatusResponse, error) { + params := url.Values{} + if !c.IsEmpty() { + params.Set("coin", c.String()) + } + + if status != "" { + i, err := strconv.Atoi(status) + if err != nil { + return nil, fmt.Errorf("wrong param (status): %s. Error: %v", status, err) + } + + switch i { + case EmailSent, Cancelled, AwaitingApproval, Rejected, Processing, Failure, Completed: + default: + return nil, fmt.Errorf("wrong param (status): %s", status) + } + + params.Set("status", status) + } + + if !startTime.IsZero() { + params.Set("startTime", strconv.FormatInt(startTime.UTC().Unix(), 10)) + } + + if !endTime.IsZero() { + params.Set("endTime", strconv.FormatInt(endTime.UTC().Unix(), 10)) + } + + if offset != 0 { + params.Set("offset", strconv.Itoa(offset)) + } + + if limit != 0 { + params.Set("limit", strconv.Itoa(limit)) + } + + var withdrawStatus []WithdrawStatusResponse + if err := b.SendAuthHTTPRequest(ctx, + exchange.RestSpotSupplementary, + http.MethodGet, + withdrawHistory, + params, + spotDefaultRate, + &withdrawStatus); err != nil { + return nil, err + } + + return withdrawStatus, nil } // GetDepositAddressForCurrency retrieves the wallet address for a given currency -func (b *Binance) GetDepositAddressForCurrency(ctx context.Context, currency string) (string, error) { - resp := struct { - Address string `json:"address"` - Success bool `json:"success"` - AddressTag string `json:"addressTag"` - }{} - +func (b *Binance) GetDepositAddressForCurrency(ctx context.Context, currency, chain string) (*DepositAddress, error) { params := url.Values{} - params.Set("asset", currency) - params.Set("status", "true") + params.Set("coin", currency) + if chain != "" { + params.Set("network", chain) + } params.Set("recvWindow", "10000") - - return resp.Address, - b.SendAuthHTTPRequest(ctx, - exchange.RestSpotSupplementary, - http.MethodGet, depositAddress, - params, spotDefaultRate, &resp) + var d DepositAddress + return &d, + b.SendAuthHTTPRequest(ctx, exchange.RestSpotSupplementary, http.MethodGet, depositAddress, params, spotDefaultRate, &d) } // GetWsAuthStreamKey will retrieve a key to use for authorised WS streaming diff --git a/exchanges/binance/binance_live_test.go b/exchanges/binance/binance_live_test.go index a5edbc10..843210bd 100644 --- a/exchanges/binance/binance_live_test.go +++ b/exchanges/binance/binance_live_test.go @@ -1,4 +1,5 @@ -//+build mock_test_off +//go:build mock_test_off +// +build mock_test_off // This will build if build tag mock_test_off is parsed and will do live testing // using all tests in (exchange)_test.go diff --git a/exchanges/binance/binance_test.go b/exchanges/binance/binance_test.go index 4051dae0..38c57884 100644 --- a/exchanges/binance/binance_test.go +++ b/exchanges/binance/binance_test.go @@ -27,10 +27,13 @@ const ( canManipulateRealOrders = false ) -var b Binance - -// this lock guards against orderbook tests race -var binanceOrderBookLock = &sync.Mutex{} +var ( + b Binance + // this lock guards against orderbook tests race + binanceOrderBookLock = &sync.Mutex{} + // this pair is used to ensure that endpoints match it correctly + testPairMapping = currency.NewPair(currency.DOGE, currency.USDT) +) func areTestAPIKeysSet() bool { return b.ValidateAPICredentials() @@ -53,22 +56,31 @@ func TestUServerTime(t *testing.T) { } } +func TestParseSAPITime(t *testing.T) { + t.Parallel() + tm, err := time.Parse(binanceSAPITimeLayout, "2021-05-27 03:56:46") + if err != nil { + t.Fatal(tm) + } + tm = tm.UTC() + if tm.Year() != 2021 || + tm.Month() != 5 || + tm.Day() != 27 || + tm.Hour() != 3 || + tm.Minute() != 56 || + tm.Second() != 46 { + t.Fatal("incorrect values") + } +} + func TestUpdateTicker(t *testing.T) { t.Parallel() - spotPairs, err := b.FetchTradablePairs(context.Background(), asset.Spot) + r, err := b.UpdateTicker(context.Background(), testPairMapping, asset.Spot) if err != nil { t.Error(err) } - if len(spotPairs) == 0 { - t.Error("no tradable pairs") - } - spotCP, err := currency.NewPairFromString(spotPairs[0]) - if err != nil { - t.Error(err) - } - _, err = b.UpdateTicker(context.Background(), spotCP, asset.Spot) - if err != nil { - t.Error(err) + if r.Pair.Base != currency.DOGE && r.Pair.Quote != currency.USDT { + t.Error("invalid pair values") } tradablePairs, err := b.FetchTradablePairs(context.Background(), asset.CoinMarginedFutures) if err != nil { @@ -1945,6 +1957,17 @@ func TestModifyOrder(t *testing.T) { } } +func TestGetAllCoinsInfo(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() && !mockTests { + t.Skip("API keys not set") + } + _, err := b.GetAllCoinsInfo(context.Background()) + if err != nil { + t.Error(err) + } +} + func TestWithdraw(t *testing.T) { t.Parallel() if areTestAPIKeysSet() && !canManipulateRealOrders && !mockTests { @@ -1953,7 +1976,7 @@ func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ Exchange: b.Name, - Amount: 0.00001337, + Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", Crypto: withdraw.CryptoRequest{ @@ -1968,8 +1991,20 @@ func TestWithdraw(t *testing.T) { t.Error("Withdraw() error", err) case !areTestAPIKeysSet() && err == nil && !mockTests: t.Error("Withdraw() expecting an error when no keys are set") - case mockTests && err != nil: + } +} + +func TestDepositHistory(t *testing.T) { + t.Parallel() + if areTestAPIKeysSet() && !canManipulateRealOrders && !mockTests { + t.Skip("API keys set, canManipulateRealOrders false, skipping test") + } + _, err := b.DepositHistory(context.Background(), currency.ETH, "", time.Time{}, time.Time{}, 0, 10000) + switch { + case areTestAPIKeysSet() && err != nil: t.Error(err) + case !areTestAPIKeysSet() && err == nil && !mockTests: + t.Error("expecting an error when no keys are set") } } @@ -1978,7 +2013,7 @@ func TestWithdrawHistory(t *testing.T) { if areTestAPIKeysSet() && !canManipulateRealOrders && !mockTests { t.Skip("API keys set, canManipulateRealOrders false, skipping test") } - _, err := b.GetWithdrawalsHistory(context.Background(), currency.XBT) + _, err := b.GetWithdrawalsHistory(context.Background(), currency.ETH) switch { case areTestAPIKeysSet() && err != nil: t.Error("GetWithdrawalsHistory() error", err) @@ -2007,7 +2042,7 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.USDT, "", currency.BNB.String()) switch { case areTestAPIKeysSet() && err != nil: t.Error("GetDepositAddress() error", err) @@ -2414,6 +2449,19 @@ func TestGetRecentTrades(t *testing.T) { } } +func TestGetAvailableTransferChains(t *testing.T) { + t.Parallel() + _, err := b.GetAvailableTransferChains(context.Background(), currency.BTC) + switch { + case areTestAPIKeysSet() && err != nil: + t.Error(err) + case !areTestAPIKeysSet() && err == nil && !mockTests: + t.Error("error cannot be nil") + case mockTests && err != nil: + t.Error(err) + } +} + func TestSeedLocalCache(t *testing.T) { t.Parallel() err := b.SeedLocalCache(context.Background(), currency.NewPair(currency.BTC, currency.USDT)) @@ -2428,7 +2476,7 @@ func TestGenerateSubscriptions(t *testing.T) { if err != nil { t.Fatal(err) } - if len(subs) != 4 { + if len(subs) != 8 { t.Fatal("unexpected subscription length") } } diff --git a/exchanges/binance/binance_types.go b/exchanges/binance/binance_types.go index 242d983a..8878ab76 100644 --- a/exchanges/binance/binance_types.go +++ b/exchanges/binance/binance_types.go @@ -68,6 +68,42 @@ type ExchangeInfo struct { } `json:"symbols"` } +// CoinInfo stores information about all supported coins +type CoinInfo struct { + Coin string `json:"coin"` + DepositAllEnable bool `json:"depositAllEnable"` + WithdrawAllEnable bool `json:"withdrawAllEnable"` + Free float64 `json:"free,string"` + Freeze float64 `json:"freeze,string"` + IPOAble float64 `json:"ipoable,string"` + IPOing float64 `json:"ipoing,string"` + IsLegalMoney bool `json:"isLegalMoney"` + Locked float64 `json:"locked,string"` + Name string `json:"name"` + NetworkList []struct { + AddressRegex string `json:"addressRegex"` + Coin string `json:"coin"` + DepositDescription string `json:"depositDesc"` // shown only when "depositEnable" is false + DepositEnable bool `json:"depositEnable"` + IsDefault bool `json:"isDefault"` + MemoRegex string `json:"memoRegex"` + MinimumConfirmation uint16 `json:"minConfirm"` + Name string `json:"name"` + Network string `json:"network"` + ResetAddressStatus bool `json:"resetAddressStatus"` + SpecialTips string `json:"specialTips"` + UnlockConfirm uint16 `json:"unLockConfirm"` + WithdrawDescription string `json:"withdrawDesc"` // shown only when "withdrawEnable" is false + WithdrawEnable bool `json:"withdrawEnable"` + WithdrawFee float64 `json:"withdrawFee,string"` + WithdrawMinimum float64 `json:"withdrawMin,string"` + WithdrawMaximum float64 `json:"withdrawMax,string"` + } `json:"networkList"` + Storage float64 `json:"storage,string"` + Trading bool `json:"trading"` + Withdrawing float64 `json:"withdrawing,string"` +} + // OrderBookDataRequestParams represents Klines request data. type OrderBookDataRequestParams struct { Symbol currency.Pair `json:"symbol"` // Required field; example LTCBTC,BTCUSDT @@ -648,24 +684,47 @@ var WithdrawalFees = map[currency.Code]float64{ currency.PIVX: 0.02, } +// DepositHistory stores deposit history info +type DepositHistory struct { + Amount float64 `json:"amount,string"` + Coin string `json:"coin"` + Network string `json:"network"` + Status uint8 `json:"status"` + Address string `json:"address"` + AddressTag string `json:"adressTag"` + TransactionID string `json:"txId"` + InsertTime float64 `json:"insertTime"` + TransferType uint8 `json:"transferType"` + ConfirmTimes string `json:"confirmTimes"` +} + // WithdrawResponse contains status of withdrawal request type WithdrawResponse struct { - Success bool `json:"success"` - Msg string `json:"msg"` - ID string `json:"id"` + ID string `json:"id"` } // WithdrawStatusResponse defines a withdrawal status response type WithdrawStatusResponse struct { - Amount float64 `json:"amount"` - TransactionFee float64 `json:"transactionFee"` - Address string `json:"address"` - TxID string `json:"txId"` - ID string `json:"id"` - Asset string `json:"asset"` - ApplyTime int64 `json:"applyTime"` - Status int64 `json:"status"` - Network string `json:"network"` + Address string `json:"address"` + Amount float64 `json:"amount,string"` + ApplyTime string `json:"applyTime"` + Coin string `json:"coin"` + ID string `json:"id"` + WithdrawOrderID string `json:"withdrawOrderId"` + Network string `json:"network"` + TransferType uint8 `json:"transferType"` + Status int64 `json:"status"` + TransactionFee float64 `json:"transactionFee,string"` + TransactionID string `json:"txId"` + ConfirmNumber int64 `json:"confirmNo"` +} + +// DepositAddress stores the deposit address info +type DepositAddress struct { + Address string `json:"address"` + Coin string `json:"coin"` + Tag string `json:"tag"` + URL string `json:"url"` } // UserAccountStream contains a key to maintain an authorised diff --git a/exchanges/binance/binance_wrapper.go b/exchanges/binance/binance_wrapper.go index b5f951f1..5dc1f385 100644 --- a/exchanges/binance/binance_wrapper.go +++ b/exchanges/binance/binance_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -118,25 +119,27 @@ func (b *Binance) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerBatching: true, - TickerFetching: true, - KlineFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - GetOrder: true, - GetOrders: true, - CancelOrders: true, - CancelOrder: true, - SubmitOrder: true, - DepositHistory: true, - WithdrawalHistory: true, - TradeFetching: true, - UserTradeHistory: true, - TradeFee: true, - CryptoWithdrawalFee: true, + TickerBatching: true, + TickerFetching: true, + KlineFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + GetOrder: true, + GetOrders: true, + CancelOrders: true, + CancelOrder: true, + SubmitOrder: true, + DepositHistory: true, + WithdrawalHistory: true, + TradeFetching: true, + UserTradeHistory: true, + TradeFee: true, + CryptoWithdrawalFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ TradeFetching: true, @@ -431,27 +434,40 @@ func (b *Binance) UpdateTickers(ctx context.Context, a asset.Item) error { if err != nil { return err } - for y := range tick { - cp, err := currency.NewPairFromString(tick[y].Symbol) - if err != nil { - return err - } - err = ticker.ProcessTicker(&ticker.Price{ - Last: tick[y].LastPrice, - High: tick[y].HighPrice, - Low: tick[y].LowPrice, - Bid: tick[y].BidPrice, - Ask: tick[y].AskPrice, - Volume: tick[y].Volume, - QuoteVolume: tick[y].QuoteVolume, - Open: tick[y].OpenPrice, - Close: tick[y].PrevClosePrice, - Pair: cp, - ExchangeName: b.Name, - AssetType: a, - }) - if err != nil { - return err + + pairs, err := b.GetEnabledPairs(a) + if err != nil { + return err + } + + for i := range pairs { + for y := range tick { + pairFmt, err := b.FormatExchangeCurrency(pairs[i], a) + if err != nil { + return err + } + + if tick[y].Symbol != pairFmt.String() { + continue + } + + err = ticker.ProcessTicker(&ticker.Price{ + Last: tick[y].LastPrice, + High: tick[y].HighPrice, + Low: tick[y].LowPrice, + Bid: tick[y].BidPrice, + Ask: tick[y].AskPrice, + Volume: tick[y].Volume, + QuoteVolume: tick[y].QuoteVolume, + Open: tick[y].OpenPrice, + Close: tick[y].PrevClosePrice, + Pair: pairFmt, + ExchangeName: b.Name, + AssetType: a, + }) + if err != nil { + return err + } } } case asset.USDTMarginedFutures: @@ -522,10 +538,6 @@ func (b *Binance) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Ite if err != nil { return nil, err } - cp, err := currency.NewPairFromString(tick.Symbol) - if err != nil { - return nil, err - } err = ticker.ProcessTicker(&ticker.Price{ Last: tick.LastPrice, High: tick.HighPrice, @@ -536,7 +548,7 @@ func (b *Binance) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Ite QuoteVolume: tick.QuoteVolume, Open: tick.OpenPrice, Close: tick.PrevClosePrice, - Pair: cp, + Pair: p, ExchangeName: b.Name, AssetType: a, }) @@ -548,10 +560,6 @@ func (b *Binance) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Ite if err != nil { return nil, err } - cp, err := currency.NewPairFromString(tick[0].Symbol) - if err != nil { - return nil, err - } err = ticker.ProcessTicker(&ticker.Price{ Last: tick[0].LastPrice, High: tick[0].HighPrice, @@ -560,7 +568,7 @@ func (b *Binance) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Ite QuoteVolume: tick[0].QuoteVolume, Open: tick[0].OpenPrice, Close: tick[0].PrevClosePrice, - Pair: cp, + Pair: p, ExchangeName: b.Name, AssetType: a, }) @@ -572,10 +580,6 @@ func (b *Binance) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Ite if err != nil { return nil, err } - cp, err := currency.NewPairFromString(tick[0].Symbol) - if err != nil { - return nil, err - } err = ticker.ProcessTicker(&ticker.Price{ Last: tick[0].LastPrice, High: tick[0].HighPrice, @@ -584,7 +588,7 @@ func (b *Binance) UpdateTicker(ctx context.Context, p currency.Pair, a asset.Ite QuoteVolume: tick[0].QuoteVolume, Open: tick[0].OpenPrice, Close: tick[0].PrevClosePrice, - Pair: cp, + Pair: p, ExchangeName: b.Name, AssetType: a, }) @@ -763,7 +767,6 @@ func (b *Binance) FetchAccountInfo(ctx context.Context, assetType asset.Item) (a if err != nil { return b.UpdateAccountInfo(ctx, assetType) } - return acc, nil } @@ -775,21 +778,26 @@ func (b *Binance) GetFundingHistory(ctx context.Context) ([]exchange.FundHistory // GetWithdrawalsHistory returns previous withdrawals data func (b *Binance) GetWithdrawalsHistory(ctx context.Context, c currency.Code) (resp []exchange.WithdrawalHistory, err error) { - w, err := b.WithdrawStatus(ctx, c, "", 0, 0) + w, err := b.WithdrawHistory(ctx, c, "", time.Time{}, time.Time{}, 0, 10000) if err != nil { return nil, err } for i := range w { + tm, err := time.Parse(binanceSAPITimeLayout, w[i].ApplyTime) + if err != nil { + return nil, err + } resp = append(resp, exchange.WithdrawalHistory{ Status: strconv.FormatInt(w[i].Status, 10), TransferID: w[i].ID, - Currency: w[i].Asset, + Currency: w[i].Coin, Amount: w[i].Amount, Fee: w[i].TransactionFee, CryptoToAddress: w[i].Address, - CryptoTxID: w[i].TxID, - Timestamp: time.Unix(w[i].ApplyTime/1000, 0), + CryptoTxID: w[i].TransactionID, + CryptoChain: w[i].Network, + Timestamp: tm, }) } @@ -1216,8 +1224,16 @@ func (b *Binance) GetOrderInfo(ctx context.Context, orderID string, pair currenc } // GetDepositAddress returns a deposit address for a specified currency -func (b *Binance) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - return b.GetDepositAddressForCurrency(ctx, cryptocurrency.String()) +func (b *Binance) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { + addr, err := b.GetDepositAddressForCurrency(ctx, cryptocurrency.String(), chain) + if err != nil { + return nil, err + } + + return &deposit.Address{ + Address: addr.Address, + Tag: addr.Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -1229,9 +1245,13 @@ func (b *Binance) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawReque amountStr := strconv.FormatFloat(withdrawRequest.Amount, 'f', -1, 64) v, err := b.WithdrawCrypto(ctx, withdrawRequest.Currency.String(), + "", // withdrawal order ID + withdrawRequest.Crypto.Chain, withdrawRequest.Crypto.Address, withdrawRequest.Crypto.AddressTag, - withdrawRequest.Description, amountStr) + withdrawRequest.Description, + amountStr, + false) if err != nil { return nil, err } @@ -1730,3 +1750,22 @@ func (b *Binance) UpdateOrderExecutionLimits(ctx context.Context, a asset.Item) } return b.LoadLimits(limits) } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (b *Binance) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + coinInfo, err := b.GetAllCoinsInfo(ctx) + if err != nil { + return nil, err + } + + var availableChains []string + for x := range coinInfo { + if strings.EqualFold(coinInfo[x].Coin, cryptocurrency.String()) { + for y := range coinInfo[x].NetworkList { + availableChains = append(availableChains, coinInfo[x].NetworkList[y].Network) + } + } + } + return availableChains, nil +} diff --git a/exchanges/bitfinex/bitfinex.go b/exchanges/bitfinex/bitfinex.go index 5c178783..93334234 100644 --- a/exchanges/bitfinex/bitfinex.go +++ b/exchanges/bitfinex/bitfinex.go @@ -30,7 +30,6 @@ const ( bitfinexAccountInfo = "account_infos" bitfinexAccountFees = "account_fees" bitfinexAccountSummary = "summary" - bitfinexDeposit = "deposit/new" bitfinexBalances = "balances" bitfinexTransfer = "transfer" bitfinexWithdrawal = "withdraw" @@ -77,7 +76,8 @@ const ( bitfinexCandles = "candles/trade" bitfinexKeyPermissions = "key_info" bitfinexMarginInfo = "margin_infos" - bitfinexDepositMethod = "conf/pub:map:currency:label" + bitfinexDepositMethod = "conf/pub:map:tx:method" + bitfinexDepositAddress = "auth/w/deposit/address" bitfinexMarginPairs = "conf/pub:list:pair:margin" // Bitfinex platform status values @@ -1065,27 +1065,76 @@ func (b *Bitfinex) GetAccountSummary(ctx context.Context) (AccountSummary, error // NewDeposit returns a new deposit address // Method - Example methods accepted: “bitcoin”, “litecoin”, “ethereum”, // “tethers", "ethereumc", "zcash", "monero", "iota", "bcash" -// WalletName - accepted: “trading”, “exchange”, “deposit” +// WalletName - accepted: "exchange", "margin", "funding" (can also use the old labels +// which are "exchange", "trading" and "deposit" respectively). If none is set, +// "funding" will be used by default // renew - Default is 0. If set to 1, will return a new unused deposit address -func (b *Bitfinex) NewDeposit(ctx context.Context, method, walletName string, renew int) (DepositResponse, error) { - if !common.StringDataCompare(AcceptedWalletNames, walletName) { - return DepositResponse{}, +func (b *Bitfinex) NewDeposit(ctx context.Context, method, walletName string, renew uint8) (*Deposit, error) { + if walletName == "" { + walletName = "funding" + } else if !common.StringDataCompare(AcceptedWalletNames, walletName) { + return nil, fmt.Errorf("walletname: [%s] is not allowed, supported: %s", walletName, AcceptedWalletNames) } - response := DepositResponse{} - req := make(map[string]interface{}) - req["method"] = method - req["wallet_name"] = walletName - req["renew"] = renew + req := make(map[string]interface{}, 3) + req["wallet"] = walletName + req["method"] = strings.ToLower(method) + req["op_renew"] = renew + var result []interface{} - return response, b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, - bitfinexDeposit, + err := b.SendAuthenticatedHTTPRequestV2(ctx, + exchange.RestSpot, + http.MethodPost, + bitfinexDepositAddress, req, - &response, + &result, newDepositAddress) + if err != nil { + return nil, err + } + + if len(result) != 8 { + return nil, errors.New("expected result to have a len of 8") + } + + depositInfo, ok := result[4].([]interface{}) + if !ok || len(depositInfo) != 6 { + return nil, errors.New("unable to get deposit data") + } + depositMethod, ok := depositInfo[1].(string) + if !ok { + return nil, errors.New("unable to type assert depositMethod to string") + } + coin, ok := depositInfo[2].(string) + if !ok { + return nil, errors.New("unable to type assert coin to string") + } + var address, poolAddress string + if depositInfo[5] == nil { + address, ok = depositInfo[4].(string) + if !ok { + return nil, errors.New("unable to type assert address to string") + } + } else { + poolAddress, ok = depositInfo[4].(string) + if !ok { + return nil, errors.New("unable to type assert poolAddress to string") + } + address, ok = depositInfo[5].(string) + if !ok { + return nil, errors.New("unable to type assert address to string") + } + } + + return &Deposit{ + Method: depositMethod, + CurrencyCode: coin, + Address: address, + PoolAddress: poolAddress, + }, nil } // GetKeyPermissions checks the permissions of the key being used to generate @@ -1149,10 +1198,10 @@ func (b *Bitfinex) WalletTransfer(ctx context.Context, amount float64, currency, // WithdrawCryptocurrency requests a withdrawal from one of your wallets. // For FIAT, use WithdrawFIAT -func (b *Bitfinex) WithdrawCryptocurrency(ctx context.Context, wallet, address, paymentID string, amount float64, c currency.Code) (Withdrawal, error) { +func (b *Bitfinex) WithdrawCryptocurrency(ctx context.Context, wallet, address, paymentID, curr string, amount float64) (Withdrawal, error) { var response []Withdrawal req := make(map[string]interface{}) - req["withdraw_type"] = b.ConvertSymbolToWithdrawalType(c) + req["withdraw_type"] = strings.ToLower(curr) req["walletselected"] = wallet req["amount"] = strconv.FormatFloat(amount, 'f', -1, 64) req["address"] = address @@ -1666,18 +1715,16 @@ func (b *Bitfinex) SendAuthenticatedHTTPRequestV2(ctx context.Context, ep exchan body = bytes.NewBuffer(payload) } - // This is done in a weird way because bitfinex doesn't accept unixnano - n := strconv.FormatInt(int64(b.Requester.GetNonce(false))*1e9, 10) + n := strconv.FormatInt(time.Now().Unix()*1e9, 10) headers := make(map[string]string) headers["Content-Type"] = "application/json" headers["Accept"] = "application/json" headers["bfx-apikey"] = b.API.Credentials.Key headers["bfx-nonce"] = n - strPath := "/api" + bitfinexAPIVersion2 + path + string(payload) - signStr := strPath + n + sig := "/api" + bitfinexAPIVersion2 + path + n + string(payload) hmac, err := crypto.GetHMAC( crypto.HashSHA512_384, - []byte(signStr), + []byte(sig), []byte(b.API.Credentials.Secret), ) if err != nil { @@ -1792,89 +1839,52 @@ func (b *Bitfinex) CalculateTradingFee(i []AccountInfo, purchasePrice, amount fl return (fee / 100) * purchasePrice * amount, err } -// ConvertSymbolToWithdrawalType You need to have specific withdrawal types to withdraw from Bitfinex -func (b *Bitfinex) ConvertSymbolToWithdrawalType(c currency.Code) string { - switch c { - case currency.BTC: - return "bitcoin" - case currency.LTC: - return "litecoin" - case currency.ETH: - return "ethereum" - case currency.ETC: - return "ethereumc" - case currency.USDT: - return "tetheruso" - case currency.ZEC: - return "zcash" - case currency.XMR: - return "monero" - case currency.DSH: - return "dash" - case currency.XRP: - return "ripple" - case currency.SAN: - return "santiment" - case currency.OMG: - return "omisego" - case currency.BCH: - return "bcash" - case currency.ETP: - return "metaverse" - case currency.AVT: - return "aventus" - case currency.EDO: - return "eidoo" - case currency.BTG: - return "bgold" - case currency.DATA: - return "datacoin" - case currency.GNT: - return "golem" - case currency.SNT: - return "status" - default: - return c.Lower().String() - } -} - -// ConvertSymbolToDepositMethod returns a converted currency deposit method -func (b *Bitfinex) ConvertSymbolToDepositMethod(ctx context.Context, c currency.Code) (string, error) { - if err := b.PopulateAcceptableMethods(ctx); err != nil { - return "", err - } - method, ok := AcceptableMethods[c.String()] - if !ok { - return "", fmt.Errorf("currency %s not supported in method list", - c) - } - - return strings.ToLower(method), nil -} - // PopulateAcceptableMethods retrieves all accepted currency strings and // populates a map to check func (b *Bitfinex) PopulateAcceptableMethods(ctx context.Context) error { - if len(AcceptableMethods) == 0 { - var response [][][2]string - err := b.SendHTTPRequest(ctx, exchange.RestSpot, - bitfinexAPIVersion2+bitfinexDepositMethod, - &response, - configs) - if err != nil { - return err - } - - if len(response) == 0 { - return errors.New("response contains no data cannot populate acceptable method map") - } - - for i := range response[0] { - if len(response[0][i]) != 2 { - return errors.New("response contains no data cannot populate acceptable method map") - } - AcceptableMethods[response[0][i][0]] = response[0][i][1] - } + if acceptableMethods.loaded() { + return nil } + + var response [][][]interface{} + err := b.SendHTTPRequest(ctx, + exchange.RestSpot, + bitfinexAPIVersion2+bitfinexDepositMethod, + &response, + configs) + if err != nil { + return err + } + + if len(response) == 0 { + return errors.New("response contains no data cannot populate acceptable method map") + } + + data := response[0] + storeData := make(map[string][]string) + for x := range data { + if len(data[x]) == 0 { + return fmt.Errorf("data should not be empty") + } + name, ok := data[x][0].(string) + if !ok { + return fmt.Errorf("unable to type assert name") + } + + var availOptions []string + options, ok := data[x][1].([]interface{}) + if !ok { + return fmt.Errorf("unable to type assert options") + } + for x := range options { + o, ok := options[x].(string) + if !ok { + return fmt.Errorf("unable to type assert option to string") + } + availOptions = append(availOptions, o) + } + storeData[name] = availOptions + } + acceptableMethods.load(storeData) return nil } diff --git a/exchanges/bitfinex/bitfinex_test.go b/exchanges/bitfinex/bitfinex_test.go index a2e74545..43177c8e 100644 --- a/exchanges/bitfinex/bitfinex_test.go +++ b/exchanges/bitfinex/bitfinex_test.go @@ -350,7 +350,7 @@ func TestNewDeposit(t *testing.T) { t.Error("NewDeposit() Expected error") } - _, err = b.NewDeposit(context.Background(), "bitcoin", "exchange", 0) + _, err = b.NewDeposit(context.Background(), "ripple", "", 0) if err != nil { t.Error(err) } @@ -956,11 +956,13 @@ func TestWithdraw(t *testing.T) { } withdrawCryptoRequest := withdraw.Request{ + Exchange: b.Name, Amount: -1, - Currency: currency.BTC, + Currency: currency.USDT, Description: "WITHDRAW IT ALL", Crypto: withdraw.CryptoRequest{ - Address: core.BitcoinDonationAddress, + Address: "0x1nv4l1d", + Chain: "tetheruse", }, } @@ -1034,14 +1036,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() if areTestAPIKeysSet() { - _, err := b.GetDepositAddress(context.Background(), - currency.BTC, "deposit") + _, err := b.GetDepositAddress(context.Background(), currency.USDT, "", "TETHERUSE") if err != nil { t.Error("GetDepositAddress() error", err) } } else { - _, err := b.GetDepositAddress(context.Background(), - currency.BTC, "deposit") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "deposit", "") if err == nil { t.Error("GetDepositAddress() error cannot be nil") } @@ -1201,22 +1201,6 @@ func TestWsCancelOffer(t *testing.T) { } } -func TestConvertSymbolToDepositMethod(t *testing.T) { - s, err := b.ConvertSymbolToDepositMethod(context.Background(), currency.BTC) - if err != nil { - log.Fatal(err) - } - if s != "bitcoin" { - t.Errorf("expected bitcoin but received %s", s) - } - - _, err = b.ConvertSymbolToDepositMethod(context.Background(), - currency.NewCode("CATS!")) - if err == nil { - log.Fatal("error cannot be nil") - } -} - func TestUpdateTradablePairs(t *testing.T) { err := b.UpdateTradablePairs(context.Background(), false) if err != nil { @@ -1650,3 +1634,70 @@ func TestReOrderbyID(t *testing.T) { } } } + +func TestPopulateAcceptableMethods(t *testing.T) { + t.Parallel() + if acceptableMethods.loaded() { + // we may have have been loaded from another test, so reset + acceptableMethods.m.Lock() + acceptableMethods.a = make(map[string][]string) + acceptableMethods.m.Unlock() + if acceptableMethods.loaded() { + t.Error("expected false") + } + } + if err := b.PopulateAcceptableMethods(context.Background()); err != nil { + t.Fatal(err) + } + if !acceptableMethods.loaded() { + t.Error("acceptable method store should be loaded") + } + if methods := acceptableMethods.lookup(currency.NewCode("UST")); len(methods) == 0 { + t.Error("USDT should have many available methods") + } + if methods := acceptableMethods.lookup(currency.NewCode("ASdasdasdasd")); len(methods) != 0 { + t.Error("non-existent code should return no methods") + } + // since we're already loaded, this will return nil + if err := b.PopulateAcceptableMethods(context.Background()); err != nil { + t.Fatal(err) + } +} + +func TestGetAvailableTransferChains(t *testing.T) { + t.Parallel() + r, err := b.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Fatal(err) + } + if len(r) < 2 { + t.Error("there should be many available USDT transfer chains") + } +} + +func TestAccetableMethodStore(t *testing.T) { + t.Parallel() + var a acceptableMethodStore + if a.loaded() { + t.Error("should be empty") + } + data := map[string][]string{ + "BITCOIN": {"BTC"}, + "TETHER1": {"UST"}, + "TETHER2": {"UST"}, + } + a.load(data) + if !a.loaded() { + t.Error("data should be loaded") + } + if name := a.lookup(currency.NewCode("BTC")); len(name) != 1 && name[1] != "BITCOIN" { + t.Error("incorrect values") + } + if name := a.lookup(currency.NewCode("UST")); (name[0] != "TETHER1" && name[1] != "TETHER2") && + (name[0] != "TETHER2" && name[1] != "TETHER1") { + t.Errorf("incorrect values") + } + if name := a.lookup(currency.NewCode("PANDA_HORSE")); len(name) != 0 { + t.Error("incorrect values") + } +} diff --git a/exchanges/bitfinex/bitfinex_types.go b/exchanges/bitfinex/bitfinex_types.go index 577d430f..813d0d8f 100644 --- a/exchanges/bitfinex/bitfinex_types.go +++ b/exchanges/bitfinex/bitfinex_types.go @@ -2,8 +2,11 @@ package bitfinex import ( "errors" + "sync" "time" + "github.com/thrasher-corp/gocryptotrader/common" + "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/order" ) @@ -50,8 +53,37 @@ var AcceptedOrderType = []string{"market", "limit", "stop", "trailing-stop", var AcceptedWalletNames = []string{"trading", "exchange", "deposit", "margin", "funding"} -// AcceptableMethods defines a map of currency codes to methods -var AcceptableMethods = make(map[string]string) +type acceptableMethodStore struct { + a map[string][]string + m sync.RWMutex +} + +// acceptableMethods holds the available acceptable deposit and withdraw methods +var acceptableMethods acceptableMethodStore + +func (a *acceptableMethodStore) lookup(curr currency.Code) []string { + a.m.RLock() + defer a.m.RUnlock() + var methods []string + for k, v := range a.a { + if common.StringDataCompareInsensitive(v, curr.Upper().String()) { + methods = append(methods, k) + } + } + return methods +} + +func (a *acceptableMethodStore) load(data map[string][]string) { + a.m.Lock() + defer a.m.Unlock() + a.a = data +} + +func (a *acceptableMethodStore) loaded() bool { + a.m.RLock() + defer a.m.RUnlock() + return len(a.a) > 0 +} // MarginV2FundingData stores margin funding data type MarginV2FundingData struct { @@ -238,12 +270,12 @@ type Currency struct { Amount float64 `json:"amount,string"` } -// DepositResponse holds deposit address information -type DepositResponse struct { - Result string `json:"string"` - Method string `json:"method"` - Currency string `json:"currency"` - Address string `json:"address"` +// Deposit holds the deposit address info +type Deposit struct { + Method string + CurrencyCode string + Address string // Deposit address (instead of the address, this field will show Tag/Memo/Payment_ID for currencies that require it) + PoolAddress string // Pool address (for currencies that require a Tag/Memo/Payment_ID) } // KeyPermissions holds the key permissions for the API key set diff --git a/exchanges/bitfinex/bitfinex_wrapper.go b/exchanges/bitfinex/bitfinex_wrapper.go index ce780024..7bb4d8e8 100644 --- a/exchanges/bitfinex/bitfinex_wrapper.go +++ b/exchanges/bitfinex/bitfinex_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -89,29 +90,32 @@ func (b *Bitfinex) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerBatching: true, - TickerFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - FiatWithdraw: true, - GetOrder: true, - GetOrders: true, - CancelOrders: true, - CancelOrder: true, - SubmitOrder: true, - SubmitOrders: true, - DepositHistory: true, - WithdrawalHistory: true, - TradeFetching: true, - UserTradeHistory: true, - TradeFee: true, - FiatDepositFee: true, - FiatWithdrawalFee: true, - CryptoDepositFee: true, - CryptoWithdrawalFee: true, + TickerBatching: true, + TickerFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + FiatWithdraw: true, + GetOrder: true, + GetOrders: true, + CancelOrders: true, + CancelOrder: true, + SubmitOrder: true, + SubmitOrders: true, + DepositHistory: true, + WithdrawalHistory: true, + TradeFetching: true, + UserTradeHistory: true, + TradeFee: true, + FiatDepositFee: true, + FiatWithdrawalFee: true, + CryptoDepositFee: true, + CryptoWithdrawalFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, + MultiChainDepositRequiresChainSet: true, }, WebsocketCapabilities: protocol.Features{ AccountBalance: true, @@ -731,18 +735,39 @@ func (b *Bitfinex) GetOrderInfo(ctx context.Context, orderID string, pair curren } // GetDepositAddress returns a deposit address for a specified currency -func (b *Bitfinex) GetDepositAddress(ctx context.Context, c currency.Code, accountID string) (string, error) { +func (b *Bitfinex) GetDepositAddress(ctx context.Context, c currency.Code, accountID, chain string) (*deposit.Address, error) { if accountID == "" { - accountID = "deposit" + accountID = "funding" } - method, err := b.ConvertSymbolToDepositMethod(ctx, c) - if err != nil { - return "", err + if c == currency.USDT { + // USDT is UST on Bitfinex + c = currency.NewCode("UST") + } + + if err := b.PopulateAcceptableMethods(ctx); err != nil { + return nil, err + } + + methods := acceptableMethods.lookup(c) + if len(methods) == 0 { + return nil, errors.New("unsupported currency") + } + method := methods[0] + if len(methods) > 1 && chain != "" { + method = chain + } else if len(methods) > 1 && chain == "" { + return nil, fmt.Errorf("a chain must be specified, %s available", methods) } resp, err := b.NewDeposit(ctx, method, accountID, 0) - return resp.Address, err + if err != nil { + return nil, err + } + return &deposit.Address{ + Address: resp.Address, + Tag: resp.PoolAddress, + }, err } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is submitted @@ -750,6 +775,31 @@ func (b *Bitfinex) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequ if err := withdrawRequest.Validate(); err != nil { return nil, err } + + if err := b.PopulateAcceptableMethods(ctx); err != nil { + return nil, err + } + + tmpCurr := withdrawRequest.Currency + if tmpCurr == currency.USDT { + // USDT is UST on Bitfinex + tmpCurr = currency.NewCode("UST") + } + + methods := acceptableMethods.lookup(tmpCurr) + if len(methods) == 0 { + return nil, errors.New("no transfer methods returned for currency") + } + method := methods[0] + if len(methods) > 1 && withdrawRequest.Crypto.Chain != "" { + if !common.StringDataCompareInsensitive(methods, withdrawRequest.Crypto.Chain) { + return nil, fmt.Errorf("invalid chain %s supplied, %v available", withdrawRequest.Crypto.Chain, methods) + } + method = withdrawRequest.Crypto.Chain + } else if len(methods) > 1 && withdrawRequest.Crypto.Chain == "" { + return nil, fmt.Errorf("a chain must be specified, %s available", methods) + } + // Bitfinex has support for three types, exchange, margin and deposit // As this is for trading, I've made the wrapper default 'exchange' // TODO: Discover an automated way to make the decision for wallet type to withdraw from @@ -757,9 +807,9 @@ func (b *Bitfinex) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequ resp, err := b.WithdrawCryptocurrency(ctx, walletType, withdrawRequest.Crypto.Address, - withdrawRequest.Description, - withdrawRequest.Amount, - withdrawRequest.Currency) + withdrawRequest.Crypto.AddressTag, + method, + withdrawRequest.Amount) if err != nil { return nil, err } @@ -1119,3 +1169,22 @@ func (b *Bitfinex) fixCasing(in currency.Pair, a asset.Item) (string, error) { runes[0] = unicode.ToLower(runes[0]) return string(runes), nil } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (b *Bitfinex) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + if err := b.PopulateAcceptableMethods(ctx); err != nil { + return nil, err + } + + if cryptocurrency == currency.USDT { + // USDT is UST on Bitfinex + cryptocurrency = currency.NewCode("UST") + } + + availChains := acceptableMethods.lookup(cryptocurrency) + if len(availChains) == 0 { + return nil, fmt.Errorf("unable to find any available chains") + } + return availChains, nil +} diff --git a/exchanges/bitflyer/bitflyer_test.go b/exchanges/bitflyer/bitflyer_test.go index df2882d7..b23504ff 100644 --- a/exchanges/bitflyer/bitflyer_test.go +++ b/exchanges/bitflyer/bitflyer_test.go @@ -385,6 +385,7 @@ func TestWithdraw(t *testing.T) { } withdrawCryptoRequest := withdraw.Request{ + Exchange: b.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", diff --git a/exchanges/bitflyer/bitflyer_wrapper.go b/exchanges/bitflyer/bitflyer_wrapper.go index ac99f672..8483a203 100644 --- a/exchanges/bitflyer/bitflyer_wrapper.go +++ b/exchanges/bitflyer/bitflyer_wrapper.go @@ -14,6 +14,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -407,8 +408,8 @@ func (b *Bitflyer) GetOrderInfo(_ context.Context, _ string, _ currency.Pair, _ } // GetDepositAddress returns a deposit address for a specified currency -func (b *Bitflyer) GetDepositAddress(_ context.Context, _ currency.Code, _ string) (string, error) { - return "", common.ErrNotYetImplemented +func (b *Bitflyer) GetDepositAddress(_ context.Context, _ currency.Code, _, _ string) (*deposit.Address, error) { + return nil, common.ErrNotYetImplemented } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/bithumb/bithumb.go b/exchanges/bithumb/bithumb.go index 66486fba..2ec49435 100644 --- a/exchanges/bithumb/bithumb.go +++ b/exchanges/bithumb/bithumb.go @@ -271,10 +271,10 @@ func (b *Bithumb) GetAccountBalance(ctx context.Context, c string) (FullBalance, // GetWalletAddress returns customer wallet address // // currency e.g. btc, ltc or "", will default to btc without currency specified -func (b *Bithumb) GetWalletAddress(ctx context.Context, currency string) (WalletAddressRes, error) { +func (b *Bithumb) GetWalletAddress(ctx context.Context, curr currency.Code) (WalletAddressRes, error) { response := WalletAddressRes{} params := url.Values{} - params.Set("currency", strings.ToUpper(currency)) + params.Set("currency", curr.Upper().String()) err := b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, privateWalletAdd, params, &response) if err != nil { @@ -284,7 +284,30 @@ func (b *Bithumb) GetWalletAddress(ctx context.Context, currency string) (Wallet if response.Data.WalletAddress == "" { return response, fmt.Errorf("deposit address needs to be created via the Bithumb website before retrieval for currency %s", - currency) + curr.String()) + } + + var address, tag string + switch curr { + case currency.XRP: + splitStr := "&dt=" + if !strings.Contains(response.Data.WalletAddress, splitStr) { + return response, errors.New("unable to parse XRP deposit address") + } + splitter := strings.Split(response.Data.WalletAddress, splitStr) + address, tag = splitter[0], splitter[1] + case currency.XLM, currency.BNB: + splitStr := "&memo=" + if !strings.Contains(response.Data.WalletAddress, splitStr) { + return response, fmt.Errorf("unable to parse %s deposit address", curr.String()) + } + splitter := strings.Split(response.Data.WalletAddress, splitStr) + address, tag = splitter[0], splitter[1] + } + + if tag != "" { + response.Data.WalletAddress = address + response.Data.Tag = tag } return response, nil diff --git a/exchanges/bithumb/bithumb_test.go b/exchanges/bithumb/bithumb_test.go index bf014a0d..5246ab31 100644 --- a/exchanges/bithumb/bithumb_test.go +++ b/exchanges/bithumb/bithumb_test.go @@ -132,7 +132,7 @@ func TestGetWalletAddress(t *testing.T) { t.Skip() } - _, err := b.GetWalletAddress(context.Background(), "") + _, err := b.GetWalletAddress(context.Background(), currency.BTC) if err == nil { t.Error("Bithumb GetWalletAddress() Expected error") } @@ -514,6 +514,7 @@ func TestWithdraw(t *testing.T) { } withdrawCryptoRequest := withdraw.Request{ + Exchange: b.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -575,12 +576,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() if areTestAPIKeysSet() { - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "", "") if err != nil { t.Error("GetDepositAddress() error", err) } } else { - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error cannot be nil") } diff --git a/exchanges/bithumb/bithumb_types.go b/exchanges/bithumb/bithumb_types.go index e58ce4f4..a7889954 100644 --- a/exchanges/bithumb/bithumb_types.go +++ b/exchanges/bithumb/bithumb_types.go @@ -93,6 +93,7 @@ type WalletAddressRes struct { Status string `json:"status"` Data struct { WalletAddress string `json:"wallet_address"` + Tag string // custom field we populate Currency string `json:"currency"` } `json:"data"` Message string `json:"message"` diff --git a/exchanges/bithumb/bithumb_wrapper.go b/exchanges/bithumb/bithumb_wrapper.go index f5575b59..dcc2f31e 100644 --- a/exchanges/bithumb/bithumb_wrapper.go +++ b/exchanges/bithumb/bithumb_wrapper.go @@ -18,6 +18,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" "github.com/thrasher-corp/gocryptotrader/exchanges/currencystate" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -594,13 +595,16 @@ func (b *Bithumb) GetOrderInfo(ctx context.Context, orderID string, pair currenc } // GetDepositAddress returns a deposit address for a specified currency -func (b *Bithumb) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - addr, err := b.GetWalletAddress(ctx, cryptocurrency.String()) +func (b *Bithumb) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { + addr, err := b.GetWalletAddress(ctx, cryptocurrency) if err != nil { - return "", err + return nil, err } - return addr.Data.WalletAddress, nil + return &deposit.Address{ + Address: addr.Data.WalletAddress, + Tag: addr.Data.Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/bitmex/bitmex_test.go b/exchanges/bitmex/bitmex_test.go index fabf4012..c569612d 100644 --- a/exchanges/bitmex/bitmex_test.go +++ b/exchanges/bitmex/bitmex_test.go @@ -766,6 +766,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { t.Parallel() withdrawCryptoRequest := withdraw.Request{ + Exchange: b.Name, Crypto: withdraw.CryptoRequest{ Address: core.BitcoinDonationAddress, }, @@ -819,12 +820,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() if areTestAPIKeysSet() { - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "", "") if err != nil { t.Error("GetDepositAddress() error", err) } } else { - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error cannot be nil") } diff --git a/exchanges/bitmex/bitmex_wrapper.go b/exchanges/bitmex/bitmex_wrapper.go index c7b67565..8dd0676e 100644 --- a/exchanges/bitmex/bitmex_wrapper.go +++ b/exchanges/bitmex/bitmex_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -672,8 +673,14 @@ func (b *Bitmex) GetOrderInfo(ctx context.Context, orderID string, pair currency } // GetDepositAddress returns a deposit address for a specified currency -func (b *Bitmex) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - return b.GetCryptoDepositAddress(ctx, cryptocurrency.String()) +func (b *Bitmex) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { + resp, err := b.GetCryptoDepositAddress(ctx, cryptocurrency.String()) + if err != nil { + return nil, err + } + return &deposit.Address{ + Address: resp, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/bitstamp/bitstamp.go b/exchanges/bitstamp/bitstamp.go index e34f0eb9..f6952451 100644 --- a/exchanges/bitstamp/bitstamp.go +++ b/exchanges/bitstamp/bitstamp.go @@ -38,19 +38,9 @@ const ( bitstampAPIMarket = "market" bitstampAPIWithdrawalRequests = "withdrawal_requests" bitstampAPIOpenWithdrawal = "withdrawal/open" - bitstampAPIBitcoinWithdrawal = "bitcoin_withdrawal" - bitstampAPILTCWithdrawal = "ltc_withdrawal" - bitstampAPIETHWithdrawal = "eth_withdrawal" - bitstampAPIBCHWithdrawal = "bch_withdrawal" - bitstampAPIBitcoinDeposit = "bitcoin_deposit_address" - bitstampAPILitecoinDeposit = "ltc_address" - bitstampAPIEthereumDeposit = "eth_address" - bitstampAPIBitcoinCashDeposit = "bch_address" bitstampAPIUnconfirmedBitcoin = "unconfirmed_btc" bitstampAPITransferToMain = "transfer-to-main" bitstampAPITransferFromMain = "transfer-from-main" - bitstampAPIXrpWithdrawal = "xrp_withdrawal" - bitstampAPIXrpDeposit = "xrp_address" bitstampAPIReturnType = "string" bitstampAPITradingPairsInfo = "trading-pairs-info" bitstampOHLC = "ohlc" @@ -421,38 +411,26 @@ func (b *Bitstamp) GetWithdrawalRequests(ctx context.Context, timedelta int64) ( // address - The wallet address of the cryptocurrency // symbol - the type of crypto ie "ltc", "btc", "eth" // destTag - only for XRP default to "" -// instant - only for bitcoins -func (b *Bitstamp) CryptoWithdrawal(ctx context.Context, amount float64, address, symbol, destTag string, instant bool) (CryptoWithdrawalResponse, error) { +func (b *Bitstamp) CryptoWithdrawal(ctx context.Context, amount float64, address, symbol, destTag string) (*CryptoWithdrawalResponse, error) { var req = url.Values{} req.Add("amount", strconv.FormatFloat(amount, 'f', -1, 64)) req.Add("address", address) - resp := CryptoWithdrawalResponse{} - var endpoint string - switch strings.ToLower(symbol) { - case currency.BTC.Lower().String(): - if instant { - req.Add("instant", "1") - } else { - req.Add("instant", "0") + var endpoint string + switch strings.ToUpper(symbol) { + case currency.XLM.String(): + if destTag != "" { + req.Add("memo_id", destTag) } - endpoint = bitstampAPIBitcoinWithdrawal - case currency.LTC.Lower().String(): - endpoint = bitstampAPILTCWithdrawal - case currency.ETH.Lower().String(): - endpoint = bitstampAPIETHWithdrawal - case currency.XRP.Lower().String(): + case currency.XRP.String(): if destTag != "" { req.Add("destination_tag", destTag) } - endpoint = bitstampAPIXrpWithdrawal - case currency.BCH.Lower().String(): - endpoint = bitstampAPIBCHWithdrawal - default: - return resp, errors.New("incorrect symbol") } - return resp, b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, endpoint, false, req, &resp) + var resp CryptoWithdrawalResponse + endpoint = strings.ToLower(symbol) + "_withdrawal" + return &resp, b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, endpoint, true, req, &resp) } // OpenBankWithdrawal Opens a bank withdrawal request (SEPA or international) @@ -506,36 +484,10 @@ func (b *Bitstamp) OpenInternationalBankWithdrawal(ctx context.Context, amount f // GetCryptoDepositAddress returns a depositing address by crypto // crypto - example "btc", "ltc", "eth", "xrp" or "bch" -func (b *Bitstamp) GetCryptoDepositAddress(ctx context.Context, crypto currency.Code) (string, error) { - var resp string - v2Resp := struct { - Address string `json:"address"` - }{} - - switch crypto { - case currency.BTC: - return resp, - b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, bitstampAPIBitcoinDeposit, false, nil, &resp) - - case currency.LTC: - return v2Resp.Address, - b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, bitstampAPILitecoinDeposit, true, nil, &v2Resp) - - case currency.ETH: - return v2Resp.Address, - b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, bitstampAPIEthereumDeposit, true, nil, &v2Resp) - - case currency.XRP: - return v2Resp.Address, - b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, bitstampAPIXrpDeposit, true, nil, &v2Resp) - - case currency.BCH: - return v2Resp.Address, - b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, bitstampAPIBitcoinCashDeposit, true, nil, &v2Resp) - - default: - return resp, fmt.Errorf("unsupported cryptocurrency string %s", crypto) - } +func (b *Bitstamp) GetCryptoDepositAddress(ctx context.Context, crypto currency.Code) (*DepositAddress, error) { + path := crypto.Lower().String() + "_address" + var resp DepositAddress + return &resp, b.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, path, true, nil, &resp) } // GetUnconfirmedBitcoinDeposits returns unconfirmed transactions @@ -673,31 +625,29 @@ func (b *Bitstamp) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange } errCap := struct { - Error string `json:"error"` - Status string `json:"status"` - Reason interface{} `json:"reason"` + Error string `json:"error"` // v1 errors + Status string `json:"status"` // v2 errors + Reason interface{} `json:"reason"` // v2 errors }{} if err := json.Unmarshal(interim, &errCap); err == nil { - if errCap.Error != "" { - return errors.New(errCap.Error) - } - if data, ok := errCap.Reason.(map[string][]string); ok { - var details strings.Builder - for x := range data { - details.WriteString(strings.Join(data[x], "")) + if errCap.Error != "" || errCap.Status == errStr { + if errCap.Error != "" { // v1 errors + return errors.New(errCap.Error) + } + switch data := errCap.Reason.(type) { // v2 errors + case map[string]interface{}: + var details strings.Builder + for k, v := range data { + details.WriteString(fmt.Sprintf("%s: %v", k, v)) + } + return errors.New(details.String()) + case string: + return errors.New(data) + default: + return errors.New(errCap.Status) } - return errors.New(details.String()) - } - - if data, ok := errCap.Reason.(string); ok { - return errors.New(data) - } - - if errCap.Status != "" { - return errors.New(errCap.Status) } } - return json.Unmarshal(interim, result) } diff --git a/exchanges/bitstamp/bitstamp_test.go b/exchanges/bitstamp/bitstamp_test.go index 2c625328..13b9244d 100644 --- a/exchanges/bitstamp/bitstamp_test.go +++ b/exchanges/bitstamp/bitstamp_test.go @@ -466,6 +466,7 @@ func TestWithdraw(t *testing.T) { } withdrawCryptoRequest := withdraw.Request{ + Exchange: b.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -575,7 +576,7 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.XRP, "", "") switch { case areTestAPIKeysSet() && customerID != "" && err != nil && !mockTests: t.Error("GetDepositAddress error", err) diff --git a/exchanges/bitstamp/bitstamp_types.go b/exchanges/bitstamp/bitstamp_types.go index ecd3bb47..ce4cee26 100644 --- a/exchanges/bitstamp/bitstamp_types.go +++ b/exchanges/bitstamp/bitstamp_types.go @@ -133,6 +133,12 @@ type CancelOrder struct { ID int64 `json:"id"` } +// DepositAddress holds the deposit info +type DepositAddress struct { + Address string `json:"address"` + DestinationTag int64 `json:"destination_tag"` +} + // WithdrawalRequests holds request information on withdrawals type WithdrawalRequests struct { OrderID int64 `json:"id"` @@ -147,15 +153,12 @@ type WithdrawalRequests struct { // CryptoWithdrawalResponse response from a crypto withdrawal request type CryptoWithdrawalResponse struct { - ID string `json:"id"` - Error map[string][]string `json:"error"` + ID int64 `json:"id"` } // FIATWithdrawalResponse response from a fiat withdrawal request type FIATWithdrawalResponse struct { - ID string `json:"id"` - Status string `json:"status"` - Reason map[string][]string `json:"reason"` + ID int64 `json:"id"` } // UnconfirmedBTCTransactions holds address information about unconfirmed diff --git a/exchanges/bitstamp/bitstamp_wrapper.go b/exchanges/bitstamp/bitstamp_wrapper.go index 647854ba..3f3a0b4e 100644 --- a/exchanges/bitstamp/bitstamp_wrapper.go +++ b/exchanges/bitstamp/bitstamp_wrapper.go @@ -5,7 +5,6 @@ import ( "errors" "sort" "strconv" - "strings" "sync" "time" @@ -15,6 +14,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -590,8 +590,21 @@ func (b *Bitstamp) GetOrderInfo(ctx context.Context, orderID string, pair curren } // GetDepositAddress returns a deposit address for a specified currency -func (b *Bitstamp) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - return b.GetCryptoDepositAddress(ctx, cryptocurrency) +func (b *Bitstamp) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { + addr, err := b.GetCryptoDepositAddress(ctx, cryptocurrency) + if err != nil { + return nil, err + } + + var tag string + if addr.DestinationTag != 0 { + tag = strconv.FormatInt(addr.DestinationTag, 10) + } + + return &deposit.Address{ + Address: addr.Address, + Tag: tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -604,21 +617,13 @@ func (b *Bitstamp) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequ withdrawRequest.Amount, withdrawRequest.Crypto.Address, withdrawRequest.Currency.String(), - withdrawRequest.Crypto.AddressTag, - true) + withdrawRequest.Crypto.AddressTag) if err != nil { return nil, err } - if len(resp.Error) != 0 { - var details strings.Builder - for x := range resp.Error { - details.WriteString(strings.Join(resp.Error[x], "")) - } - return nil, errors.New(details.String()) - } return &withdraw.ExchangeResponse{ - ID: resp.ID, + ID: strconv.FormatInt(resp.ID, 10), }, nil } @@ -643,17 +648,9 @@ func (b *Bitstamp) WithdrawFiatFunds(ctx context.Context, withdrawRequest *withd if err != nil { return nil, err } - if resp.Status == errStr { - var details strings.Builder - for x := range resp.Reason { - details.WriteString(strings.Join(resp.Reason[x], "")) - } - return nil, errors.New(details.String()) - } return &withdraw.ExchangeResponse{ - ID: resp.ID, - Status: resp.Status, + ID: strconv.FormatInt(resp.ID, 10), }, nil } @@ -684,17 +681,9 @@ func (b *Bitstamp) WithdrawFiatFundsToInternationalBank(ctx context.Context, wit if err != nil { return nil, err } - if resp.Status == errStr { - var details strings.Builder - for x := range resp.Reason { - details.WriteString(strings.Join(resp.Reason[x], "")) - } - return nil, errors.New(details.String()) - } return &withdraw.ExchangeResponse{ - ID: resp.ID, - Status: resp.Status, + ID: strconv.FormatInt(resp.ID, 10), }, nil } diff --git a/exchanges/bittrex/bittrex.go b/exchanges/bittrex/bittrex.go index 111ac464..39159447 100644 --- a/exchanges/bittrex/bittrex.go +++ b/exchanges/bittrex/bittrex.go @@ -46,6 +46,7 @@ const ( getBalances = "/balances" getBalance = "/balances/%s" getDepositAddress = "/addresses/%s" + depositAddresses = "/addresses/" getAllOpenOrders = "/orders/open" getOpenOrders = "/orders/open?marketSymbol=%s" getOrder = "/orders/%s" @@ -235,12 +236,26 @@ func (b *Bittrex) GetAccountBalanceByCurrency(ctx context.Context, currency stri return resp, b.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, fmt.Sprintf(getBalance, currency), nil, nil, &resp, nil) } +// GetCryptoDepositAddresses is used to retrieve all deposit addresses +func (b *Bittrex) GetCryptoDepositAddresses(ctx context.Context) ([]AddressData, error) { + var resp []AddressData + return resp, b.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, depositAddresses, nil, nil, &resp, nil) +} + // GetCryptoDepositAddress is used to retrieve an address for a specific currency func (b *Bittrex) GetCryptoDepositAddress(ctx context.Context, currency string) (AddressData, error) { var resp AddressData return resp, b.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, fmt.Sprintf(getDepositAddress, currency), nil, nil, &resp, nil) } +// ProvisionNewDepositAddress provisions a new deposit address for a specific currency +func (b *Bittrex) ProvisionNewDepositAddress(ctx context.Context, currency string) (*ProvisionNewAddressData, error) { + req := make(map[string]interface{}, 1) + req["currencySymbol"] = currency + var resp ProvisionNewAddressData + return &resp, b.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, depositAddresses, nil, req, &resp, nil) +} + // Withdraw is used to withdraw funds from your account. func (b *Bittrex) Withdraw(ctx context.Context, currency, paymentID, address string, quantity float64) (WithdrawalData, error) { req := make(map[string]interface{}) diff --git a/exchanges/bittrex/bittrex_test.go b/exchanges/bittrex/bittrex_test.go index 49f84b4a..d7086537 100644 --- a/exchanges/bittrex/bittrex_test.go +++ b/exchanges/bittrex/bittrex_test.go @@ -266,6 +266,30 @@ func TestGetOpenWithdrawals(t *testing.T) { } } +func TestGetCryptoDepositAddresses(t *testing.T) { + t.Parallel() + + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := b.GetCryptoDepositAddresses(context.Background()) + if err != nil { + t.Error(err) + } +} + +func TestProvisionNewDepositAddress(t *testing.T) { + t.Parallel() + + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := b.ProvisionNewDepositAddress(context.Background(), currency.XRP.String()) + if err != nil { + t.Error(err) + } +} + func TestGetClosedDeposits(t *testing.T) { t.Parallel() @@ -570,6 +594,7 @@ func TestModifyOrder(t *testing.T) { func WithdrawCryptocurrencyFunds(t *testing.T) { t.Helper() withdrawCryptoRequest := withdraw.Request{ + Exchange: b.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -621,12 +646,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { if areTestAPIKeysSet() { - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.XRP, "", "") if err != nil { t.Error(err) } } else { - _, err := b.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("error cannot be nil") } diff --git a/exchanges/bittrex/bittrex_types.go b/exchanges/bittrex/bittrex_types.go index 860909f8..0756a4f9 100644 --- a/exchanges/bittrex/bittrex_types.go +++ b/exchanges/bittrex/bittrex_types.go @@ -127,6 +127,13 @@ type AddressData struct { CryptoAddressTag string `json:"cryptoAddressTag"` } +// ProvisionNewAddressData holds the provision deposit data +// Status is REQUESTED +type ProvisionNewAddressData struct { + Status string `json:"status"` + CurrencySymbol string `json:"currencySymbol"` +} + // CurrencyData holds currency data // Status is ONLINE or OFFLINE type CurrencyData struct { diff --git a/exchanges/bittrex/bittrex_wrapper.go b/exchanges/bittrex/bittrex_wrapper.go index 3791546f..63f83a97 100644 --- a/exchanges/bittrex/bittrex_wrapper.go +++ b/exchanges/bittrex/bittrex_wrapper.go @@ -15,6 +15,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -697,16 +698,16 @@ func (b *Bittrex) ConstructOrderDetail(orderData *OrderData) (order.Detail, erro } // GetDepositAddress returns a deposit address for a specified currency -func (b *Bittrex) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (b *Bittrex) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { depositAddr, err := b.GetCryptoDepositAddress(ctx, cryptocurrency.String()) if err != nil { - return "", err - } - if depositAddr.Status != "PROVISIONED" { - return "", errors.New("no deposit address found for currency" + cryptocurrency.String()) + return nil, err } - return depositAddr.CryptoAddress, nil + return &deposit.Address{ + Address: depositAddr.CryptoAddress, + Tag: depositAddr.CryptoAddressTag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/bittrex/bittrex_ws_orderbook.go b/exchanges/bittrex/bittrex_ws_orderbook.go index 73b5888d..15dd5138 100644 --- a/exchanges/bittrex/bittrex_ws_orderbook.go +++ b/exchanges/bittrex/bittrex_ws_orderbook.go @@ -232,23 +232,6 @@ func (b *Bittrex) processJob(p currency.Pair) error { return b.applyBufferUpdate(p) } -// flushAndCleanup flushes orderbook and clean local cache -func (b *Bittrex) flushAndCleanup(p currency.Pair) { - errClean := b.Websocket.Orderbook.FlushOrderbook(p, asset.Spot) - if errClean != nil { - log.Errorf(log.WebsocketMgr, - "%s flushing websocket error: %v", - b.Name, - errClean) - } - errClean = b.obm.cleanup(p) - if errClean != nil { - log.Errorf(log.WebsocketMgr, "%s cleanup websocket error: %v", - b.Name, - errClean) - } -} - // stageWsUpdate stages websocket update to roll through updates that need to // be applied to a fetched orderbook via REST. func (o *orderbookManager) stageWsUpdate(u *OrderbookUpdateMessage, pair currency.Pair, a asset.Item) error { @@ -310,25 +293,6 @@ func (o *orderbookManager) stopFetchingBook(pair currency.Pair) error { return nil } -// stopNeedsFetchingBook completes the book fetching initiation. -func (o *orderbookManager) stopNeedsFetchingBook(pair currency.Pair) error { - o.Lock() - defer o.Unlock() - state, ok := o.state[pair.Base][pair.Quote][asset.Spot] - if !ok { - return fmt.Errorf("could not match pair %s and asset type %s in hash table", - pair, - asset.Spot) - } - if !state.needsFetchingBook { - return fmt.Errorf("needs fetching book already set to false for %s %s", - pair, - asset.Spot) - } - state.needsFetchingBook = false - return nil -} - // setNeedsFetchingBook completes the book fetching initiation. func (o *orderbookManager) setNeedsFetchingBook(pair currency.Pair) error { o.Lock() @@ -368,25 +332,6 @@ func (o *orderbookManager) handleFetchingBook(pair currency.Pair) (fetching, nee return false, false, nil } -// completeInitialSync sets if an asset type has completed its initial sync -func (o *orderbookManager) completeInitialSync(pair currency.Pair) error { - o.Lock() - defer o.Unlock() - state, ok := o.state[pair.Base][pair.Quote][asset.Spot] - if !ok { - return fmt.Errorf("complete initial sync cannot match currency pair %s asset type %s", - pair, - asset.Spot) - } - if !state.initialSync { - return fmt.Errorf("initital sync already set to false for %s %s", - pair, - asset.Spot) - } - state.initialSync = false - return nil -} - // checkIsInitialSync checks status if the book is Initial Sync being via the REST // protocol. func (o *orderbookManager) checkIsInitialSync(pair currency.Pair) (bool, error) { @@ -488,31 +433,3 @@ func (u *update) validate(updt *OrderbookUpdateMessage, recent *orderbook.Base) } return true, nil } - -// cleanup cleans up buffer and reset fetch and init -func (o *orderbookManager) cleanup(pair currency.Pair) error { - o.Lock() - state, ok := o.state[pair.Base][pair.Quote][asset.Spot] - if !ok { - o.Unlock() - return fmt.Errorf("cleanup cannot match %s %s to hash table", - pair, - asset.Spot) - } - -bufferEmpty: - for { - select { - case <-state.buffer: - // bleed and discard buffer - default: - break bufferEmpty - } - } - o.Unlock() - // disable rest orderbook synchronisation - _ = o.stopFetchingBook(pair) - _ = o.completeInitialSync(pair) - _ = o.stopNeedsFetchingBook(pair) - return nil -} diff --git a/exchanges/btcmarkets/btcmarkets.go b/exchanges/btcmarkets/btcmarkets.go index 12de4bf9..b707fdcd 100644 --- a/exchanges/btcmarkets/btcmarkets.go +++ b/exchanges/btcmarkets/btcmarkets.go @@ -514,13 +514,13 @@ func (b *BTCMarkets) GetTransfer(ctx context.Context, id string) (TransferData, } // FetchDepositAddress gets deposit address for the given asset -func (b *BTCMarkets) FetchDepositAddress(ctx context.Context, assetName string, before, after, limit int64) (DepositAddress, error) { +func (b *BTCMarkets) FetchDepositAddress(ctx context.Context, curr currency.Code, before, after, limit int64) (*DepositAddress, error) { var resp DepositAddress if (before > 0) && (after >= 0) { - return resp, errors.New("BTCMarkets only supports either before or after, not both") + return nil, errors.New("BTCMarkets only supports either before or after, not both") } params := url.Values{} - params.Set("assetName", assetName) + params.Set("assetName", curr.Upper().String()) if before > 0 { params.Set("before", strconv.FormatInt(before, 10)) } @@ -530,11 +530,24 @@ func (b *BTCMarkets) FetchDepositAddress(ctx context.Context, assetName string, if limit > 0 { params.Set("limit", strconv.FormatInt(limit, 10)) } - return resp, b.SendAuthenticatedRequest(ctx, http.MethodGet, + if err := b.SendAuthenticatedRequest(ctx, + http.MethodGet, common.EncodeURLValues(btcMarketsAddresses, params), nil, &resp, - request.Auth) + request.Auth); err != nil { + return nil, err + } + if curr == currency.XRP { + splitStr := "?dt=" + if !strings.Contains(resp.Address, splitStr) { + return nil, errors.New("unable to find split string for XRP") + } + splitter := strings.Split(resp.Address, splitStr) + resp.Address = splitter[0] + resp.Tag = splitter[1] + } + return &resp, nil } // GetWithdrawalFees gets withdrawal fees for all assets @@ -703,9 +716,7 @@ func (b *BTCMarkets) SendAuthenticatedRequest(ctx context.Context, method, path } newRequest := func() (*request.Item, error) { - now := time.Now() - strTime := strconv.FormatInt(now.UTC().UnixMilli(), 10) - + strTime := strconv.FormatInt(time.Now().UnixMilli(), 10) var body io.Reader var payload, hmac []byte switch data.(type) { diff --git a/exchanges/btcmarkets/btcmarkets_test.go b/exchanges/btcmarkets/btcmarkets_test.go index d348f4ab..87a09db8 100644 --- a/exchanges/btcmarkets/btcmarkets_test.go +++ b/exchanges/btcmarkets/btcmarkets_test.go @@ -340,11 +340,11 @@ func TestFetchDepositAddress(t *testing.T) { if !areTestAPIKeysSet() { t.Skip("API keys required but not set, skipping test") } - _, err := b.FetchDepositAddress(context.Background(), "LTC", -1, -1, -1) + _, err := b.FetchDepositAddress(context.Background(), currency.XRP, -1, -1, -1) if err != nil { t.Error(err) } - _, err = b.FetchDepositAddress(context.Background(), fakePair, -1, -1, -1) + _, err = b.FetchDepositAddress(context.Background(), currency.NewCode("MOOCOW"), -1, -1, -1) if err != nil { t.Error("expected an error due to invalid assetID") } diff --git a/exchanges/btcmarkets/btcmarkets_types.go b/exchanges/btcmarkets/btcmarkets_types.go index 2a0182e2..614ab30f 100644 --- a/exchanges/btcmarkets/btcmarkets_types.go +++ b/exchanges/btcmarkets/btcmarkets_types.go @@ -184,6 +184,7 @@ type TransferData struct { type DepositAddress struct { Address string `json:"address"` AssetName string `json:"assetName"` + Tag string // custom field we populate } // WithdrawalFeeData stores data for fees diff --git a/exchanges/btcmarkets/btcmarkets_websocket.go b/exchanges/btcmarkets/btcmarkets_websocket.go index a7d88a14..2ab016d6 100644 --- a/exchanges/btcmarkets/btcmarkets_websocket.go +++ b/exchanges/btcmarkets/btcmarkets_websocket.go @@ -343,7 +343,7 @@ func (b *BTCMarkets) Subscribe(channelsToSubscribe []stream.ChannelSubscription) if !common.StringDataCompare(payload.Channels, authChannels[i]) { continue } - signTime := strconv.FormatInt(time.Now().UTC().UnixMilli(), 10) + signTime := strconv.FormatInt(time.Now().UnixMilli(), 10) strToSign := "/users/self/subscribe" + "\n" + signTime tempSign, err := crypto.GetHMAC(crypto.HashSHA512, []byte(strToSign), diff --git a/exchanges/btcmarkets/btcmarkets_wrapper.go b/exchanges/btcmarkets/btcmarkets_wrapper.go index 5579a83a..b7957a5b 100644 --- a/exchanges/btcmarkets/btcmarkets_wrapper.go +++ b/exchanges/btcmarkets/btcmarkets_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -648,12 +649,15 @@ func (b *BTCMarkets) GetOrderInfo(ctx context.Context, orderID string, pair curr } // GetDepositAddress returns a deposit address for a specified currency -func (b *BTCMarkets) GetDepositAddress(ctx context.Context, c currency.Code, accountID string) (string, error) { - temp, err := b.FetchDepositAddress(ctx, strings.ToUpper(c.String()), -1, -1, -1) +func (b *BTCMarkets) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, accountID, _ string) (*deposit.Address, error) { + depositAddr, err := b.FetchDepositAddress(ctx, cryptocurrency, -1, -1, -1) if err != nil { - return "", err + return nil, err } - return temp.Address, nil + return &deposit.Address{ + Address: depositAddr.Address, + Tag: depositAddr.Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is submitted diff --git a/exchanges/btse/btse_test.go b/exchanges/btse/btse_test.go index 81743b95..d46ca77e 100644 --- a/exchanges/btse/btse_test.go +++ b/exchanges/btse/btse_test.go @@ -347,7 +347,7 @@ func TestGetDepositAddress(t *testing.T) { if !areTestAPIKeysSet() { t.Skip("API keys not set, skipping test") } - _, err := b.GetDepositAddress(context.Background(), currency.XRP, "") + _, err := b.GetDepositAddress(context.Background(), currency.BTC, "", "") if err != nil { t.Error(err) } diff --git a/exchanges/btse/btse_wrapper.go b/exchanges/btse/btse_wrapper.go index 7fadb951..01a8d51c 100644 --- a/exchanges/btse/btse_wrapper.go +++ b/exchanges/btse/btse_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -687,22 +688,39 @@ func (b *BTSE) GetOrderInfo(ctx context.Context, orderID string, pair currency.P } // GetDepositAddress returns a deposit address for a specified currency -func (b *BTSE) GetDepositAddress(ctx context.Context, c currency.Code, accountID string) (string, error) { +func (b *BTSE) GetDepositAddress(ctx context.Context, c currency.Code, accountID, _ string) (*deposit.Address, error) { address, err := b.GetWalletAddress(ctx, c.String()) if err != nil { - return "", err + return nil, err } + + exctractor := func(addr string) (string, string) { + if strings.Contains(addr, ":") { + split := strings.Split(addr, ":") + return split[0], split[1] + } + return addr, "" + } + if len(address) == 0 { addressCreate, err := b.CreateWalletAddress(ctx, c.String()) if err != nil { - return "", err + return nil, err } if len(addressCreate) != 0 { - return addressCreate[0].Address, nil + addr, tag := exctractor(addressCreate[0].Address) + return &deposit.Address{ + Address: addr, + Tag: tag, + }, nil } - return "", errors.New("address not found") + return nil, errors.New("address not found") } - return address[0].Address, nil + addr, tag := exctractor(address[0].Address) + return &deposit.Address{ + Address: addr, + Tag: tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/coinbasepro/coinbasepro.go b/exchanges/coinbasepro/coinbasepro.go index 0c629c5b..cc2cdb8b 100644 --- a/exchanges/coinbasepro/coinbasepro.go +++ b/exchanges/coinbasepro/coinbasepro.go @@ -719,8 +719,7 @@ func (c *CoinbasePro) SendAuthenticatedHTTPRequest(ctx context.Context, ep excha } } - now := time.Now() - n := strconv.FormatInt(now.Unix(), 10) + n := strconv.FormatInt(time.Now().Unix(), 10) message := n + method + "/" + path + string(payload) hmac, err := crypto.GetHMAC(crypto.HashSHA256, diff --git a/exchanges/coinbasepro/coinbasepro_test.go b/exchanges/coinbasepro/coinbasepro_test.go index ee0565db..983787ae 100644 --- a/exchanges/coinbasepro/coinbasepro_test.go +++ b/exchanges/coinbasepro/coinbasepro_test.go @@ -537,6 +537,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: c.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -609,7 +610,7 @@ func TestWithdrawInternationalBank(t *testing.T) { } func TestGetDepositAddress(t *testing.T) { - _, err := c.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := c.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error", err) } diff --git a/exchanges/coinbasepro/coinbasepro_wrapper.go b/exchanges/coinbasepro/coinbasepro_wrapper.go index 3afc7606..94e8f949 100644 --- a/exchanges/coinbasepro/coinbasepro_wrapper.go +++ b/exchanges/coinbasepro/coinbasepro_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -652,8 +653,8 @@ func (c *CoinbasePro) GetOrderInfo(ctx context.Context, orderID string, pair cur } // GetDepositAddress returns a deposit address for a specified currency -func (c *CoinbasePro) GetDepositAddress(_ context.Context, _ currency.Code, accountID string) (string, error) { - return "", common.ErrFunctionNotSupported +func (c *CoinbasePro) GetDepositAddress(_ context.Context, _ currency.Code, _, _ string) (*deposit.Address, error) { + return nil, common.ErrFunctionNotSupported } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/coinbene/coinbene.go b/exchanges/coinbene/coinbene.go index 44a16a39..8ccd7b73 100644 --- a/exchanges/coinbene/coinbene.go +++ b/exchanges/coinbene/coinbene.go @@ -15,6 +15,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/common/crypto" + "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/request" @@ -26,11 +27,11 @@ type Coinbene struct { } const ( - coinbeneAPIURL = "https://openapi-exchange.coinbene.com/api/exchange/" - coinbeneSwapAPIURL = "https://openapi-contract.coinbene.com/api/usdt/" - coinbeneAuthPath = "/api/exchange/v2" - coinbeneSwapAuthPath = "/api/usdt/v2" - coinbeneAPIVersion = "v2" + coinbeneAPIURL = "https://openapi-exchange.coinbene.com" + coinbeneSwapAPIURL = "https://openapi-contract.coinbene.com" + coinbeneSpotPath = "/api/exchange/v2" + coinbeneSwapPath = "/api/usdt/v2" + coinbeneCapitalPath = "/api/capital/v1" // Public endpoints coinbeneGetTicker = "/market/ticker/one" @@ -64,6 +65,8 @@ const ( coinbeneClosedOrdersByPage = "/order/closedOrdersByPage" coinbeneListSwapPositions = "/position/list" coinbenePositionFeeRate = "/position/feeRate" + coinbeneDepositAddress = "/deposit/address/list" + coinbeneWithdraw = "/withdraw/apply" limitOrder = "1" marketOrder = "2" @@ -81,8 +84,7 @@ func (c *Coinbene) GetAllPairs(ctx context.Context) ([]PairData, error) { resp := struct { Data []PairData `json:"data"` }{} - path := coinbeneAPIVersion + coinbeneGetAllPairs - return resp.Data, c.SendHTTPRequest(ctx, exchange.RestSpot, path, spotPairs, &resp) + return resp.Data, c.SendHTTPRequest(ctx, exchange.RestSpot, coinbeneGetAllPairs, spotPairs, &resp) } // GetPairInfo gets info about a single pair @@ -92,7 +94,7 @@ func (c *Coinbene) GetPairInfo(ctx context.Context, symbol string) (PairData, er }{} params := url.Values{} params.Set("symbol", symbol) - path := common.EncodeURLValues(coinbeneAPIVersion+coinbenePairInfo, params) + path := common.EncodeURLValues(coinbenePairInfo, params) return resp.Data, c.SendHTTPRequest(ctx, exchange.RestSpot, path, spotPairInfo, &resp) } @@ -109,7 +111,7 @@ func (c *Coinbene) GetOrderbook(ctx context.Context, symbol string, size int64) params := url.Values{} params.Set("symbol", symbol) params.Set("depth", strconv.FormatInt(size, 10)) - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneGetOrderBook, params) + path := common.EncodeURLValues(coinbeneGetOrderBook, params) err := c.SendHTTPRequest(ctx, exchange.RestSpot, path, spotOrderbook, &resp) if err != nil { return Orderbook{}, err @@ -155,7 +157,7 @@ func (c *Coinbene) GetTicker(ctx context.Context, symbol string) (TickerData, er }{} params := url.Values{} params.Set("symbol", symbol) - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneGetTicker, params) + path := common.EncodeURLValues(coinbeneGetTicker, params) return resp.TickerData, c.SendHTTPRequest(ctx, exchange.RestSpot, path, spotSpecificTicker, &resp) } @@ -165,8 +167,7 @@ func (c *Coinbene) GetTickers(ctx context.Context) ([]TickerData, error) { TickerData []TickerData `json:"data"` }{} - path := coinbeneAPIVersion + coinbeneGetTickersSpot - return resp.TickerData, c.SendHTTPRequest(ctx, exchange.RestSpot, path, spotTickerList, &resp) + return resp.TickerData, c.SendHTTPRequest(ctx, exchange.RestSpot, coinbeneGetTickersSpot, spotTickerList, &resp) } // GetTrades gets recent trades from the exchange @@ -178,7 +179,7 @@ func (c *Coinbene) GetTrades(ctx context.Context, symbol string, limit int64) (T params := url.Values{} params.Set("symbol", symbol) params.Set("limit", strconv.FormatInt(limit, 10)) - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneGetTrades, params) + path := common.EncodeURLValues(coinbeneGetTrades, params) err := c.SendHTTPRequest(ctx, exchange.RestSpot, path, spotMarketTrades, &resp) if err != nil { return nil, err @@ -214,11 +215,11 @@ func (c *Coinbene) GetAccountBalances(ctx context.Context) ([]UserBalanceData, e resp := struct { Data []UserBalanceData `json:"data"` }{} - path := coinbeneAPIVersion + coinbeneGetUserBalance - err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSpot, + http.MethodGet, coinbeneGetUserBalance, - false, + APISpotPath, nil, &resp, spotAccountInfo) @@ -235,13 +236,11 @@ func (c *Coinbene) GetAccountAssetBalance(ctx context.Context, symbol string) (U resp := struct { Data UserBalanceData `json:"data"` }{} - path := coinbeneAPIVersion + coinbeneAccountBalanceOne err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, - path, coinbeneAccountBalanceOne, - false, + APISpotPath, v, &resp, spotAccountAssetInfo) @@ -292,11 +291,11 @@ func (c *Coinbene) PlaceSpotOrder(ctx context.Context, price, quantity float64, if notional != 0 { params.Set("notional", strconv.Itoa(notional)) } - path := coinbeneAPIVersion + coinbenePlaceOrder - err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSpot, + http.MethodPost, coinbenePlaceOrder, - false, + APISpotPath, params, &resp, spotPlaceOrder) @@ -362,13 +361,11 @@ func (c *Coinbene) PlaceSpotOrders(ctx context.Context, orders []PlaceOrderReque resp := struct { Data []OrderPlacementResponse `json:"data"` }{} - path := coinbeneAPIVersion + coinbeneBatchPlaceOrder err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, - path, coinbeneBatchPlaceOrder, - false, + APISpotPath, reqOrders, &resp, spotBatchOrder) @@ -382,17 +379,17 @@ func (c *Coinbene) PlaceSpotOrders(ctx context.Context, orders []PlaceOrderReque func (c *Coinbene) FetchOpenSpotOrders(ctx context.Context, symbol string) (OrdersInfo, error) { params := url.Values{} params.Set("symbol", symbol) - path := coinbeneAPIVersion + coinbeneOpenOrders var orders OrdersInfo for i := int64(1); ; i++ { temp := struct { Data OrdersInfo `json:"data"` }{} params.Set("pageNum", strconv.FormatInt(i, 10)) - err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSpot, + http.MethodGet, coinbeneOpenOrders, - false, + APISpotPath, params, &temp, spotQueryOpenOrders) @@ -415,7 +412,6 @@ func (c *Coinbene) FetchClosedOrders(ctx context.Context, symbol, latestID strin params := url.Values{} params.Set("symbol", symbol) params.Set("latestOrderId", latestID) - path := coinbeneAPIVersion + coinbeneClosedOrders var orders OrdersInfo for i := int64(1); ; i++ { temp := struct { @@ -425,9 +421,8 @@ func (c *Coinbene) FetchClosedOrders(ctx context.Context, symbol, latestID strin err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, - path, coinbeneClosedOrders, - false, + APISpotPath, params, &temp, spotQueryClosedOrders) @@ -451,13 +446,11 @@ func (c *Coinbene) FetchSpotOrderInfo(ctx context.Context, orderID string) (Orde }{} params := url.Values{} params.Set("orderId", orderID) - path := coinbeneAPIVersion + coinbeneOrderInfo err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, - path, coinbeneOrderInfo, - false, + APISpotPath, params, &resp, spotQuerySpecficOrder) @@ -478,13 +471,11 @@ func (c *Coinbene) GetSpotOrderFills(ctx context.Context, orderID string) ([]Ord }{} params := url.Values{} params.Set("orderId", orderID) - path := coinbeneAPIVersion + coinbeneTradeFills err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, - path, coinbeneTradeFills, - false, + APISpotPath, params, &resp, spotQueryTradeFills) @@ -501,13 +492,11 @@ func (c *Coinbene) CancelSpotOrder(ctx context.Context, orderID string) (string, }{} req := make(map[string]interface{}) req["orderId"] = orderID - path := coinbeneAPIVersion + coinbeneCancelOrder err := c.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, - path, coinbeneCancelOrder, - false, + APISpotPath, req, &resp, spotCancelOrder) @@ -526,13 +515,12 @@ func (c *Coinbene) CancelSpotOrders(ctx context.Context, orderIDs []string) ([]O } var r resp - path := coinbeneAPIVersion + coinbeneBatchCancel - err := c.SendAuthHTTPRequest(ctx, + err := c.SendAuthHTTPRequest( + ctx, exchange.RestSpot, http.MethodPost, - path, coinbeneBatchCancel, - false, + APISpotPath, req, &r, spotCancelOrdersBatch) @@ -548,8 +536,7 @@ func (c *Coinbene) GetSwapTickers(ctx context.Context) (SwapTickers, error) { Data SwapTickers `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneGetTickers - err := c.SendHTTPRequest(ctx, exchange.RestSwap, path, contractTickers, &r) + err := c.SendHTTPRequest(ctx, exchange.RestSwap, coinbeneGetTickers, contractTickers, &r) if err != nil { return nil, err } @@ -575,12 +562,8 @@ func (c *Coinbene) GetSwapInstruments(ctx context.Context) ([]Instrument, error) resp := struct { Data []Instrument `json:"data"` }{} - return resp.Data, - c.SendHTTPRequest(ctx, - exchange.RestSwap, - coinbeneAPIVersion+coinbeneGetInstruments, - contractInstruments, - &resp) + return resp.Data, c.SendHTTPRequest(ctx, exchange.RestSwap, + coinbeneGetInstruments, contractInstruments, &resp) } // GetSwapOrderbook returns an orderbook for the specified currency @@ -606,7 +589,7 @@ func (c *Coinbene) GetSwapOrderbook(ctx context.Context, symbol string, size int } var r resp - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneGetOrderBook, v) + path := common.EncodeURLValues(coinbeneGetOrderBook, v) err := c.SendHTTPRequest(ctx, exchange.RestSwap, path, contractOrderbook, &r) if err != nil { return s, err @@ -662,7 +645,7 @@ func (c *Coinbene) GetKlines(ctx context.Context, pair string, start, end time.T } v.Add("period", period) - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneSpotKlines, v) + path := common.EncodeURLValues(coinbeneSpotKlines, v) if err = c.SendHTTPRequest(ctx, exchange.RestSpot, path, contractKline, &resp); err != nil { return } @@ -686,7 +669,7 @@ func (c *Coinbene) GetSwapKlines(ctx context.Context, symbol string, start, end } v.Set("resolution", resolution) - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneGetKlines, v) + path := common.EncodeURLValues(coinbeneGetKlines, v) if err = c.SendHTTPRequest(ctx, exchange.RestSwap, path, contractKline, &resp); err != nil { return } @@ -705,7 +688,7 @@ func (c *Coinbene) GetSwapTrades(ctx context.Context, symbol string, limit int) Data [][]string `json:"data"` } var r resp - path := common.EncodeURLValues(coinbeneAPIVersion+coinbeneGetTrades, v) + path := common.EncodeURLValues(coinbeneGetTrades, v) if err := c.SendHTTPRequest(ctx, exchange.RestSwap, path, contractTrades, &r); err != nil { return nil, err } @@ -744,11 +727,11 @@ func (c *Coinbene) GetSwapAccountInfo(ctx context.Context) (SwapAccountInfo, err Data SwapAccountInfo `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneAccountInfo - err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSwap, + http.MethodGet, coinbeneAccountInfo, - true, + APISwapPath, nil, &r, contractAccountInfo) @@ -766,11 +749,11 @@ func (c *Coinbene) GetSwapPositions(ctx context.Context, symbol string) (SwapPos Data SwapPositions `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneListSwapPositions - err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSwap, + http.MethodGet, coinbeneListSwapPositions, - true, + APISwapPath, v, &r, contractPositionInfo) @@ -821,13 +804,11 @@ func (c *Coinbene) PlaceSwapOrder(ctx context.Context, symbol, direction, orderT Data SwapPlaceOrderResponse `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbenePlaceOrder err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodPost, - path, coinbenePlaceOrder, - true, + APISwapPath, v, &r, contractPlaceOrder) @@ -845,11 +826,11 @@ func (c *Coinbene) CancelSwapOrder(ctx context.Context, orderID string) (string, Data string `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneCancelOrder - err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodPost, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSwap, + http.MethodPost, coinbeneCancelOrder, - true, + APISwapPath, params, &r, contractCancelOrder) @@ -873,13 +854,11 @@ func (c *Coinbene) GetSwapOpenOrders(ctx context.Context, symbol string, pageNum Data SwapOrders `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneOpenOrders err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, coinbeneOpenOrders, - true, + APISwapPath, v, &r, contractGetOpenOrders) @@ -902,13 +881,11 @@ func (c *Coinbene) GetSwapOpenOrdersByPage(ctx context.Context, symbol string, l Data SwapOrders `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneOpenOrdersByPage err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, coinbeneOpenOrdersByPage, - true, + APISwapPath, v, &r, contractOpenOrdersByPage) @@ -926,13 +903,11 @@ func (c *Coinbene) GetSwapOrderInfo(ctx context.Context, orderID string) (SwapOr Data SwapOrder `json:"data"` } var r resp - path := coinbeneAPIVersion + coinbeneOrderInfo err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, coinbeneOrderInfo, - true, + APISwapPath, v, &r, contractGetOrderInfo) @@ -971,11 +946,11 @@ func (c *Coinbene) GetSwapOrderHistory(ctx context.Context, beginTime, endTime, } var r resp - path := coinbeneAPIVersion + coinbeneClosedOrders - err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSwap, + http.MethodGet, coinbeneClosedOrders, - true, + APISwapPath, v, &r, contractGetClosedOrders) @@ -1009,13 +984,11 @@ func (c *Coinbene) GetSwapOrderHistoryByOrderID(ctx context.Context, beginTime, } var r resp - path := coinbeneAPIVersion + coinbeneClosedOrdersByPage err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, coinbeneClosedOrdersByPage, - true, + APISwapPath, v, &r, contractGetClosedOrdersbyPage) @@ -1037,13 +1010,11 @@ func (c *Coinbene) CancelSwapOrders(ctx context.Context, orderIDs []string) ([]O } var r resp - path := coinbeneAPIVersion + coinbeneBatchCancel err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodPost, - path, coinbeneBatchCancel, - true, + APISwapPath, req, &r, contractCancelMultipleOrders) @@ -1070,13 +1041,11 @@ func (c *Coinbene) GetSwapOrderFills(ctx context.Context, symbol, orderID string } var r resp - path := coinbeneAPIVersion + coinbeneOrderFills err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, coinbeneOrderFills, - true, + APISwapPath, v, &r, contractGetOrderFills) @@ -1100,13 +1069,11 @@ func (c *Coinbene) GetSwapFundingRates(ctx context.Context, pageNum, pageSize in } var r resp - path := coinbeneAPIVersion + coinbenePositionFeeRate err := c.SendAuthHTTPRequest(ctx, exchange.RestSwap, http.MethodGet, - path, coinbenePositionFeeRate, - true, + APISwapPath, v, &r, contractGetFundingRates) @@ -1123,10 +1090,15 @@ func (c *Coinbene) SendHTTPRequest(ctx context.Context, ep exchange.URL, path st return err } + epPath := coinbeneSpotPath + if ep == exchange.RestSwap { + epPath = coinbeneSwapPath + } + var resp json.RawMessage item := &request.Item{ Method: http.MethodGet, - Path: endpoint + path, + Path: endpoint + epPath + path, Result: &resp, Verbose: c.Verbose, HTTPDebugging: c.HTTPDebugging, @@ -1151,7 +1123,7 @@ func (c *Coinbene) SendHTTPRequest(ctx context.Context, ep exchange.URL, path st } // SendAuthHTTPRequest sends an authenticated HTTP request -func (c *Coinbene) SendAuthHTTPRequest(ctx context.Context, ep exchange.URL, method, path, epPath string, isSwap bool, +func (c *Coinbene) SendAuthHTTPRequest(ctx context.Context, ep exchange.URL, method, epPath string, epAuthPath uint8, params, result interface{}, f request.EndpointLimit) error { if !c.AllowAuthenticatedRequest() { return fmt.Errorf("%s %w", c.Name, exchange.ErrAuthenticatedRequestWithoutCredentialsSet) @@ -1160,9 +1132,17 @@ func (c *Coinbene) SendAuthHTTPRequest(ctx context.Context, ep exchange.URL, met if err != nil { return err } - authPath := coinbeneAuthPath - if isSwap { - authPath = coinbeneSwapAuthPath + + var authPath string + switch epAuthPath { + case APISpotPath: + authPath = coinbeneSpotPath + case APISwapPath: + authPath = coinbeneSwapPath + case APICapitalPath: + authPath = coinbeneCapitalPath + default: + return errors.New("unsupported auth path") } var resp json.RawMessage @@ -1170,15 +1150,15 @@ func (c *Coinbene) SendAuthHTTPRequest(ctx context.Context, ep exchange.URL, met timestamp := time.Now().UTC().Format("2006-01-02T15:04:05.999Z") var finalBody io.Reader var preSign string - var fullPath = path + fullPath := authPath + epPath switch { case params != nil && method == http.MethodGet: p, ok := params.(url.Values) if !ok { return nil, errors.New("params is not of type url.Values") } - preSign = timestamp + method + authPath + epPath + "?" + p.Encode() - fullPath = common.EncodeURLValues(path, p) + preSign = common.EncodeURLValues(timestamp+method+authPath+epPath, p) + fullPath = common.EncodeURLValues(authPath+epPath, p) case params != nil: var i interface{} switch p := params.(type) { @@ -1242,3 +1222,63 @@ func (c *Coinbene) SendAuthHTTPRequest(ctx context.Context, ep exchange.URL, met } return json.Unmarshal(resp, result) } + +// ListDepositAddress returns a list of deposit addresses for a given cryptocurrency +func (c *Coinbene) ListDepositAddress(ctx context.Context, crypto currency.Code) ([]DepositAddress, error) { + vals := url.Values{} + if crypto.IsEmpty() { + return nil, errors.New("crypto asset must be specified") + } + vals.Set("asset", crypto.Upper().String()) + resp := struct { + Data []DepositAddress `json:"data"` + }{} + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSpot, + http.MethodGet, + coinbeneDepositAddress, + APICapitalPath, + vals, + &resp, + capitalDeposit) + if err != nil { + return nil, err + } + return resp.Data, nil +} + +// Withdraw issues a withdrawawl request based on the supplied parameters +func (c *Coinbene) Withdraw(ctx context.Context, curr currency.Code, address, tag, chain string, amount float64) (*WithdrawResponse, error) { + if curr.IsEmpty() || address == "" || amount == 0 { + return nil, errors.New("asset, address and amount must be specified") + } + vals := url.Values{} + vals.Set("asset", curr.Upper().String()) + vals.Set("address", address) + vals.Set("amount", strconv.FormatFloat(amount, 'f', -1, 64)) + + if tag != "" { + vals.Set("tag", tag) + } + + if chain != "" { + vals.Set("chain", chain) + } + + resp := struct { + Data WithdrawResponse `json:"data"` + }{} + + err := c.SendAuthHTTPRequest(ctx, + exchange.RestSpot, + http.MethodPost, + coinbeneWithdraw, + APICapitalPath, + vals, + &resp, + capitalWithdraw) + if err != nil { + return nil, err + } + return &resp.Data, nil +} diff --git a/exchanges/coinbene/coinbene_test.go b/exchanges/coinbene/coinbene_test.go index 61de7945..ab2f9ee2 100644 --- a/exchanges/coinbene/coinbene_test.go +++ b/exchanges/coinbene/coinbene_test.go @@ -9,11 +9,13 @@ import ( "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/config" + "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" + "github.com/thrasher-corp/gocryptotrader/portfolio/withdraw" ) // Please supply your own keys here for due diligence testing @@ -191,6 +193,42 @@ func TestFetchOrderInfo(t *testing.T) { } } +func TestGetDepositAddress(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("API keys required but not set, skipping test") + } + _, err := c.GetDepositAddress(context.Background(), currency.USDT, "", "ETH") + if err != nil { + t.Error(err) + } +} + +func TestWithdraw(t *testing.T) { + t.Parallel() + if areTestAPIKeysSet() && !canManipulateRealOrders { + t.Skip("API keys set, canManipulateRealOrders false, skipping test") + } + + withdrawCryptoRequest := withdraw.Request{ + Exchange: c.Name, + Amount: -1, + Currency: currency.BTC, + Description: "WITHDRAW IT ALL", + Crypto: withdraw.CryptoRequest{ + Address: core.BitcoinDonationAddress, + }, + } + + _, err := c.WithdrawCryptocurrencyFunds(context.Background(), &withdrawCryptoRequest) + if !areTestAPIKeysSet() && err == nil { + t.Error("Expecting an error when no keys are set") + } + if areTestAPIKeysSet() && err != nil { + t.Errorf("Withdraw failed to be placed: %v", err) + } +} + func TestGetSpotOrderFills(t *testing.T) { t.Parallel() if !areTestAPIKeysSet() { @@ -814,3 +852,25 @@ func TestGetHistoricTrades(t *testing.T) { t.Error(err) } } + +func TestListDepositAddress(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := c.ListDepositAddress(context.Background(), currency.USDT) + if err != nil { + t.Fatal(err) + } +} + +func TestGetAvailableTransferCurrencies(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := c.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Fatal(err) + } +} diff --git a/exchanges/coinbene/coinbene_types.go b/exchanges/coinbene/coinbene_types.go index d63ae525..c3924ae5 100644 --- a/exchanges/coinbene/coinbene_types.go +++ b/exchanges/coinbene/coinbene_types.go @@ -7,6 +7,13 @@ import ( "github.com/thrasher-corp/gocryptotrader/exchanges/order" ) +// Coinbene path vals +const ( + APISpotPath uint8 = iota + APISwapPath + APICapitalPath +) + // TickerData stores ticker data type TickerData struct { Symbol string `json:"symbol"` @@ -410,3 +417,23 @@ type CandleResponse struct { Message string `json:"message"` Data [][]interface{} `json:"data"` } + +// DepositAddress stores the deposit address data +type DepositAddress struct { + Asset string `json:"asset"` + Chain string `json:"chain"` + Address string `json:"address"` + AddressTag string `json:"addressTag"` + DepositLimit float64 `json:"depositLimit,string"` + BlockNumber uint8 `json:"blockNumber,string"` +} + +// WithdrawResponse stores the withdrawal request response data +type WithdrawResponse struct { + ID string `json:"id"` + Amount float64 `json:"amount"` + Asset string `json:"asset"` + Address string `json:"address"` + Tag string `json:"tag"` + Chain string `json:"chain"` +} diff --git a/exchanges/coinbene/coinbene_wrapper.go b/exchanges/coinbene/coinbene_wrapper.go index a869f6a7..b58d914c 100644 --- a/exchanges/coinbene/coinbene_wrapper.go +++ b/exchanges/coinbene/coinbene_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -92,17 +93,21 @@ func (c *Coinbene) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AccountBalance: true, - AutoPairUpdates: true, - GetOrder: true, - GetOrders: true, - CancelOrder: true, - CancelOrders: true, - SubmitOrder: true, - TradeFee: true, + TickerFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AccountBalance: true, + AutoPairUpdates: true, + GetOrder: true, + GetOrders: true, + CancelOrder: true, + CancelOrders: true, + SubmitOrder: true, + TradeFee: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ TickerFetching: true, @@ -118,7 +123,7 @@ func (c *Coinbene) SetDefaults() { GetOrder: true, }, WithdrawPermissions: exchange.NoFiatWithdrawals | - exchange.WithdrawCryptoViaWebsiteOnly, + exchange.WithdrawCryptoWithAPIPermission, Kline: kline.ExchangeCapabilitiesSupported{ DateRanges: true, Intervals: true, @@ -677,14 +682,47 @@ func (c *Coinbene) GetOrderInfo(ctx context.Context, orderID string, pair curren } // GetDepositAddress returns a deposit address for a specified currency -func (c *Coinbene) GetDepositAddress(_ context.Context, _ currency.Code, _ string) (string, error) { - return "", common.ErrFunctionNotSupported +func (c *Coinbene) GetDepositAddress(ctx context.Context, curr currency.Code, _, chain string) (*deposit.Address, error) { + d, err := c.ListDepositAddress(ctx, curr) + if err != nil { + return nil, err + } + + if len(d) == 0 { + return nil, errors.New("no address(es) returned, please create one via the Coinbene website") + } + + if chain != "" { + for x := range d { + if strings.EqualFold(d[x].Chain, chain) { + return &deposit.Address{Address: d[x].Address, Tag: d[x].AddressTag}, nil + } + } + return nil, fmt.Errorf("no chain %s found", chain) + } + return &deposit.Address{Address: d[0].Address, Tag: d[0].AddressTag}, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is // submitted -func (c *Coinbene) WithdrawCryptocurrencyFunds(_ context.Context, _ *withdraw.Request) (*withdraw.ExchangeResponse, error) { - return nil, common.ErrFunctionNotSupported +func (c *Coinbene) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequest *withdraw.Request) (*withdraw.ExchangeResponse, error) { + if err := withdrawRequest.Validate(); err != nil { + return nil, err + } + + resp, err := c.Withdraw(ctx, + withdrawRequest.Currency, + withdrawRequest.Crypto.Address, + withdrawRequest.Crypto.AddressTag, + withdrawRequest.Crypto.Chain, + withdrawRequest.Amount) + if err != nil { + return nil, err + } + + return &withdraw.ExchangeResponse{ + ID: resp.ID, + }, err } // WithdrawFiatFunds returns a withdrawal ID when a withdrawal is @@ -960,3 +998,20 @@ func (c *Coinbene) GetHistoricCandles(ctx context.Context, pair currency.Pair, a func (c *Coinbene) GetHistoricCandlesExtended(ctx context.Context, pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return c.GetHistoricCandles(ctx, pair, a, start, end, interval) } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (c *Coinbene) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + r, err := c.ListDepositAddress(ctx, cryptocurrency) + if err != nil { + return nil, err + } + + var availableChains []string + for x := range r { + if r[x].Chain != "" { + availableChains = append(availableChains, r[x].Chain) + } + } + return availableChains, nil +} diff --git a/exchanges/coinbene/ratelimit.go b/exchanges/coinbene/ratelimit.go index 0cf438f6..0d2cf410 100644 --- a/exchanges/coinbene/ratelimit.go +++ b/exchanges/coinbene/ratelimit.go @@ -50,6 +50,8 @@ const ( queryTradeFillsSpotReqRate = 3 cancelOrderSpotReqRate = 6 cancelOrdersBatchSpotReqRate = 3 + capitalDepositReqRate = 1 + capitalWithdrawReqRate = 1 // Rate limit functionality contractOrderbook request.EndpointLimit = iota @@ -88,6 +90,8 @@ const ( spotQueryTradeFills spotCancelOrder spotCancelOrdersBatch + capitalDeposit + capitalWithdraw ) // RateLimit implements the request.Limiter interface @@ -127,6 +131,8 @@ type RateLimit struct { SpotQueryTradeFills *rate.Limiter SpotCancelOrder *rate.Limiter SpotCancelOrdersBatch *rate.Limiter + CapitalDeposit *rate.Limiter + CapitalWithdraw *rate.Limiter } // Limit limits outbound requests @@ -178,6 +184,10 @@ func (r *RateLimit) Limit(ctx context.Context, f request.EndpointLimit) error { return r.SpotSpecificTicker.Wait(ctx) case spotMarketTrades: return r.SpotMarketTrades.Wait(ctx) + case capitalDeposit: + return r.CapitalDeposit.Wait(ctx) + case capitalWithdraw: + return r.CapitalWithdraw.Wait(ctx) // case spotKline: // Not implemented yet // return r.SpotKline.Wait(ctx) // case spotExchangeRate: @@ -243,5 +253,7 @@ func SetRateLimit() *RateLimit { SpotQueryTradeFills: request.NewRateLimit(spotRateInterval, queryTradeFillsSpotReqRate), SpotCancelOrder: request.NewRateLimit(spotRateInterval, cancelOrderSpotReqRate), SpotCancelOrdersBatch: request.NewRateLimit(spotRateInterval, cancelOrdersBatchSpotReqRate), + CapitalDeposit: request.NewRateLimit(spotRateInterval, capitalDepositReqRate), + CapitalWithdraw: request.NewRateLimit(spotRateInterval, capitalWithdrawReqRate), } } diff --git a/exchanges/coinut/coinut_test.go b/exchanges/coinut/coinut_test.go index 6e86f3e2..d5e3e466 100644 --- a/exchanges/coinut/coinut_test.go +++ b/exchanges/coinut/coinut_test.go @@ -377,6 +377,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: c.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -422,7 +423,7 @@ func TestWithdrawInternationalBank(t *testing.T) { } func TestGetDepositAddress(t *testing.T) { - _, err := c.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := c.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() function unsupported cannot be nil") } diff --git a/exchanges/coinut/coinut_wrapper.go b/exchanges/coinut/coinut_wrapper.go index 1d2a3ed7..87e84679 100644 --- a/exchanges/coinut/coinut_wrapper.go +++ b/exchanges/coinut/coinut_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -810,8 +811,8 @@ func (c *COINUT) GetOrderInfo(_ context.Context, _ string, _ currency.Pair, _ as } // GetDepositAddress returns a deposit address for a specified currency -func (c *COINUT) GetDepositAddress(_ context.Context, _ currency.Code, _ string) (string, error) { - return "", common.ErrFunctionNotSupported +func (c *COINUT) GetDepositAddress(_ context.Context, _ currency.Code, _, _ string) (*deposit.Address, error) { + return nil, common.ErrFunctionNotSupported } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/deposit/types.go b/exchanges/deposit/types.go new file mode 100644 index 00000000..969397ec --- /dev/null +++ b/exchanges/deposit/types.go @@ -0,0 +1,8 @@ +package deposit + +// Address holds a deposit address +type Address struct { + Address string + Tag string // Represents either a tag or memo + Chain string +} diff --git a/exchanges/exchange.go b/exchanges/exchange.go index e105915f..2f23c7c5 100644 --- a/exchanges/exchange.go +++ b/exchanges/exchange.go @@ -1391,3 +1391,9 @@ func (a *AssetWebsocketSupport) IsAssetWebsocketSupported(aType asset.Item) bool func (b *Base) UpdateCurrencyStates(ctx context.Context, a asset.Item) error { return common.ErrNotYetImplemented } + +// GetAvailableTransferChains returns a list of supported transfer chains based +// on the supplied cryptocurrency +func (b *Base) GetAvailableTransferChains(_ context.Context, _ currency.Code) ([]string, error) { + return nil, common.ErrFunctionNotSupported +} diff --git a/exchanges/exchange_test.go b/exchanges/exchange_test.go index a35cf132..c89273f7 100644 --- a/exchanges/exchange_test.go +++ b/exchanges/exchange_test.go @@ -2444,3 +2444,11 @@ func TestGetGetURLTypeFromString(t *testing.T) { }) } } + +func TestGetAvailableTransferChains(t *testing.T) { + t.Parallel() + var b Base + if _, err := b.GetAvailableTransferChains(context.Background(), currency.BTC); !errors.Is(err, common.ErrFunctionNotSupported) { + t.Errorf("received: %v, expected: %v", err, common.ErrFunctionNotSupported) + } +} diff --git a/exchanges/exchange_types.go b/exchanges/exchange_types.go index 7ecc56d6..ab754985 100644 --- a/exchanges/exchange_types.go +++ b/exchanges/exchange_types.go @@ -126,6 +126,7 @@ type FundHistory struct { CryptoToAddress string CryptoFromAddress string CryptoTxID string + CryptoChain string BankTo string BankFrom string } @@ -142,6 +143,7 @@ type WithdrawalHistory struct { TransferType string CryptoToAddress string CryptoTxID string + CryptoChain string BankTo string } diff --git a/exchanges/exmo/exmo.go b/exchanges/exmo/exmo.go index 31723300..4a73ca19 100644 --- a/exchanges/exmo/exmo.go +++ b/exchanges/exmo/exmo.go @@ -21,25 +21,27 @@ const ( exmoAPIURL = "https://api.exmo.com" exmoAPIVersion = "1" - exmoTrades = "trades" - exmoOrderbook = "order_book" - exmoTicker = "ticker" - exmoPairSettings = "pair_settings" - exmoCurrency = "currency" - exmoUserInfo = "user_info" - exmoOrderCreate = "order_create" - exmoOrderCancel = "order_cancel" - exmoOpenOrders = "user_open_orders" - exmoUserTrades = "user_trades" - exmoCancelledOrders = "user_cancelled_orders" - exmoOrderTrades = "order_trades" - exmoRequiredAmount = "required_amount" - exmoDepositAddress = "deposit_address" - exmoWithdrawCrypt = "withdraw_crypt" - exmoGetWithdrawTXID = "withdraw_get_txid" - exmoExcodeCreate = "excode_create" - exmoExcodeLoad = "excode_load" - exmoWalletHistory = "wallet_history" + exmoTrades = "trades" + exmoOrderbook = "order_book" + exmoTicker = "ticker" + exmoPairSettings = "pair_settings" + exmoCurrency = "currency" + + exmoUserInfo = "user_info" + exmoOrderCreate = "order_create" + exmoOrderCancel = "order_cancel" + exmoOpenOrders = "user_open_orders" + exmoUserTrades = "user_trades" + exmoCancelledOrders = "user_cancelled_orders" + exmoOrderTrades = "order_trades" + exmoRequiredAmount = "required_amount" + exmoDepositAddress = "deposit_address" + exmoWithdrawCrypt = "withdraw_crypt" + exmoGetWithdrawTXID = "withdraw_get_txid" + exmoExcodeCreate = "excode_create" + exmoExcodeLoad = "excode_load" + exmoWalletHistory = "wallet_history" + exmoCryptoPaymentProviderList = "payments/providers/crypto/list" // Rate limit: 180 per/minute exmoRateInterval = time.Minute @@ -220,7 +222,6 @@ func (e *EXMO) GetCryptoDepositAddress(ctx context.Context) (map[string]string, mapString[key] = v } return mapString, nil - default: return nil, errors.New("no addresses found, generate required addresses via site") } @@ -228,7 +229,7 @@ func (e *EXMO) GetCryptoDepositAddress(ctx context.Context) (map[string]string, // WithdrawCryptocurrency withdraws a cryptocurrency from the exchange to the desired address // NOTE: This API function is available only after request to their tech support team -func (e *EXMO) WithdrawCryptocurrency(ctx context.Context, currency, address, invoice string, amount float64) (int64, error) { +func (e *EXMO) WithdrawCryptocurrency(ctx context.Context, currency, address, invoice, transport string, amount float64) (int64, error) { type response struct { TaskID int64 `json:"task_id,string"` Result bool `json:"result"` @@ -240,8 +241,12 @@ func (e *EXMO) WithdrawCryptocurrency(ctx context.Context, currency, address, in v.Set("currency", currency) v.Set("address", address) - if strings.EqualFold(currency, "XRP") { - v.Set(invoice, invoice) + if invoice != "" { + v.Set("invoice", invoice) + } + + if transport != "" { + v.Set("transport", strings.ToUpper(transport)) } v.Set("amount", strconv.FormatFloat(amount, 'f', -1, 64)) @@ -526,3 +531,10 @@ func getInternationalBankDepositFee(c currency.Code, amount float64, bankTransac return fee } + +// GetCryptoPaymentProvidersList returns a map of all the supported cryptocurrency transfer settings +func (e *EXMO) GetCryptoPaymentProvidersList(ctx context.Context) (map[string][]CryptoPaymentProvider, error) { + var result map[string][]CryptoPaymentProvider + path := "/v" + exmoAPIVersion + "/" + exmoCryptoPaymentProviderList + return result, e.SendHTTPRequest(ctx, exchange.RestSpot, path, &result) +} diff --git a/exchanges/exmo/exmo_test.go b/exchanges/exmo/exmo_test.go index b3d5a4b5..13c55a5e 100644 --- a/exchanges/exmo/exmo_test.go +++ b/exchanges/exmo/exmo_test.go @@ -383,6 +383,7 @@ func TestWithdraw(t *testing.T) { } withdrawCryptoRequest := withdraw.Request{ + Exchange: e.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -428,12 +429,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { if areTestAPIKeysSet() { - _, err := e.GetDepositAddress(context.Background(), currency.LTC, "") + _, err := e.GetDepositAddress(context.Background(), currency.USDT, "", "ERC20") if err != nil { t.Error("GetDepositAddress() error", err) } } else { - _, err := e.GetDepositAddress(context.Background(), currency.LTC, "") + _, err := e.GetDepositAddress(context.Background(), currency.LTC, "", "") if err == nil { t.Error("GetDepositAddress() error cannot be nil") } @@ -483,3 +484,18 @@ func TestUpdateTickers(t *testing.T) { t.Error(err) } } + +func TestGetCryptoPaymentProvidersList(t *testing.T) { + t.Parallel() + _, err := e.GetCryptoPaymentProvidersList(context.Background()) + if err != nil { + t.Fatal(err) + } +} + +func TestGetAvailableTransferChains(t *testing.T) { + _, err := e.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Error(err) + } +} diff --git a/exchanges/exmo/exmo_types.go b/exchanges/exmo/exmo_types.go index 6ee01fa2..f84bbad8 100644 --- a/exchanges/exmo/exmo_types.go +++ b/exchanges/exmo/exmo_types.go @@ -175,3 +175,16 @@ var WithdrawalFees = map[currency.Code]float64{ currency.ZRX: 1, currency.GNT: 1, } + +// CryptoPaymentProvider stores the cryptocurrency transfer settings +type CryptoPaymentProvider struct { + Type string `json:"type"` + Name string `json:"name"` + CurrencyName string `json:"currency_name"` + Min float64 `json:"min,string"` + Max float64 `json:"max,string"` + Enabled bool `json:"enabled"` + Comment string `json:"comment"` + CommissionDescription string `json:"commission_desc"` + CurrencyConfirmations uint16 `json:"currency_confirmations"` +} diff --git a/exchanges/exmo/exmo_wrapper.go b/exchanges/exmo/exmo_wrapper.go index beb76265..57d7fd38 100644 --- a/exchanges/exmo/exmo_wrapper.go +++ b/exchanges/exmo/exmo_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -77,26 +78,29 @@ func (e *EXMO) SetDefaults() { REST: true, Websocket: false, RESTCapabilities: protocol.Features{ - TickerBatching: true, - TickerFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - GetOrder: true, - GetOrders: true, - CancelOrder: true, - SubmitOrder: true, - DepositHistory: true, - WithdrawalHistory: true, - UserTradeHistory: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - TradeFee: true, - FiatDepositFee: true, - FiatWithdrawalFee: true, - CryptoDepositFee: true, - CryptoWithdrawalFee: true, + TickerBatching: true, + TickerFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + GetOrder: true, + GetOrders: true, + CancelOrder: true, + SubmitOrder: true, + DepositHistory: true, + WithdrawalHistory: true, + UserTradeHistory: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + TradeFee: true, + FiatDepositFee: true, + FiatWithdrawalFee: true, + CryptoDepositFee: true, + CryptoWithdrawalFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, + MultiChainDepositRequiresChainSet: true, }, WithdrawPermissions: exchange.AutoWithdrawCryptoWithSetup | exchange.NoFiatWithdrawals, @@ -524,19 +528,42 @@ func (e *EXMO) GetOrderInfo(ctx context.Context, orderID string, pair currency.P } // GetDepositAddress returns a deposit address for a specified currency -func (e *EXMO) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (e *EXMO) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { fullAddr, err := e.GetCryptoDepositAddress(ctx) if err != nil { - return "", err + return nil, err } - // TODO: Protect map with mutex - addr, ok := fullAddr[cryptocurrency.String()] + curr := cryptocurrency.Upper().String() + if chain != "" && !strings.EqualFold(chain, curr) { + curr += strings.ToUpper(chain) + } + + addr, ok := fullAddr[curr] if !ok { - return "", fmt.Errorf("currency %s could not be found, please generate via the exmo website", cryptocurrency.String()) + chains, err := e.GetAvailableTransferChains(ctx, cryptocurrency) + if err != nil { + return nil, err + } + + if len(chains) > 1 { + // rather than assume, return an error + return nil, fmt.Errorf("currency %s has %v chains available, one must be specified", cryptocurrency, chains) + } + return nil, fmt.Errorf("deposit address for %s could not be found, please generate via the exmo website", cryptocurrency.String()) } - return addr, nil + var tag string + if strings.Contains(addr, ",") { + split := strings.Split(addr, ",") + addr, tag = split[0], split[1] + } + + return &deposit.Address{ + Address: addr, + Tag: tag, + Chain: chain, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -549,6 +576,7 @@ func (e *EXMO) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequest withdrawRequest.Currency.String(), withdrawRequest.Crypto.Address, withdrawRequest.Crypto.AddressTag, + withdrawRequest.Crypto.Chain, withdrawRequest.Amount) return &withdraw.ExchangeResponse{ @@ -680,3 +708,30 @@ func (e *EXMO) GetHistoricCandles(ctx context.Context, pair currency.Pair, a ass func (e *EXMO) GetHistoricCandlesExtended(ctx context.Context, pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return kline.Item{}, common.ErrFunctionNotSupported } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (e *EXMO) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + chains, err := e.GetCryptoPaymentProvidersList(ctx) + if err != nil { + return nil, err + } + + methods, ok := chains[cryptocurrency.Upper().String()] + if !ok { + return nil, errors.New("no available chains") + } + + var availChains []string + for x := range methods { + if methods[x].Type == "deposit" && methods[x].Enabled { + chain := methods[x].Name + if strings.Contains(chain, "(") && strings.Contains(chain, ")") { + chain = chain[strings.Index(chain, "(")+1 : strings.Index(chain, ")")] + } + availChains = append(availChains, chain) + } + } + + return availChains, nil +} diff --git a/exchanges/ftx/ftx.go b/exchanges/ftx/ftx.go index c070cfbe..aee9cf84 100644 --- a/exchanges/ftx/ftx.go +++ b/exchanges/ftx/ftx.go @@ -526,35 +526,44 @@ func (f *FTX) GetAllWalletBalances(ctx context.Context) (AllWalletBalances, erro } // FetchDepositAddress gets deposit address for a given coin -func (f *FTX) FetchDepositAddress(ctx context.Context, coin currency.Code) (DepositData, error) { +func (f *FTX) FetchDepositAddress(ctx context.Context, coin currency.Code, chain string) (*DepositData, error) { resp := struct { Data DepositData `json:"result"` }{} - return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, getDepositAddress+coin.Upper().String(), nil, &resp) + vals := url.Values{} + if chain != "" { + vals.Set("method", strings.ToLower(chain)) + } + path := common.EncodeURLValues(getDepositAddress+coin.Upper().String(), vals) + return &resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, path, nil, &resp) } // FetchDepositHistory gets deposit history -func (f *FTX) FetchDepositHistory(ctx context.Context) ([]TransactionData, error) { +func (f *FTX) FetchDepositHistory(ctx context.Context) ([]DepositItem, error) { resp := struct { - Data []TransactionData `json:"result"` + Data []DepositItem `json:"result"` }{} return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, getDepositHistory, nil, &resp) } // FetchWithdrawalHistory gets withdrawal history -func (f *FTX) FetchWithdrawalHistory(ctx context.Context) ([]TransactionData, error) { +func (f *FTX) FetchWithdrawalHistory(ctx context.Context) ([]WithdrawItem, error) { resp := struct { - Data []TransactionData `json:"result"` + Data []WithdrawItem `json:"result"` }{} return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, getWithdrawalHistory, nil, &resp) } // Withdraw sends a withdrawal request -func (f *FTX) Withdraw(ctx context.Context, coin currency.Code, address, tag, password, code string, size float64) (TransactionData, error) { +func (f *FTX) Withdraw(ctx context.Context, coin currency.Code, address, tag, password, chain, code string, size float64) (*WithdrawItem, error) { + if coin.IsEmpty() || address == "" || size == 0 { + return nil, errors.New("coin, address and size must be specified") + } + req := make(map[string]interface{}) req["coin"] = coin.Upper().String() - req["address"] = address req["size"] = size + req["address"] = address if code != "" { req["code"] = code } @@ -564,10 +573,13 @@ func (f *FTX) Withdraw(ctx context.Context, coin currency.Code, address, tag, pa if password != "" { req["password"] = password } + if chain != "" { + req["method"] = chain + } resp := struct { - Data TransactionData `json:"result"` + Data WithdrawItem `json:"result"` }{} - return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, withdrawRequest, req, &resp) + return &resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, withdrawRequest, req, &resp) } // GetOpenOrders gets open orders @@ -1145,6 +1157,10 @@ func (f *FTX) StakeRequest(ctx context.Context, coin currency.Code, size float64 // SendAuthHTTPRequest sends an authenticated request func (f *FTX) SendAuthHTTPRequest(ctx context.Context, ep exchange.URL, method, path string, data, result interface{}) error { + if !f.AllowAuthenticatedRequest() { + return fmt.Errorf("%s %w", f.Name, exchange.ErrAuthenticatedRequestWithoutCredentialsSet) + } + endpoint, err := f.API.Endpoints.GetURL(ep) if err != nil { return err @@ -1295,13 +1311,13 @@ func (f *FTX) RequestForQuotes(ctx context.Context, base, quote currency.Code, a } // GetOTCQuoteStatus gets quote status of a quote -func (f *FTX) GetOTCQuoteStatus(ctx context.Context, marketName, quoteID string) ([]QuoteStatusData, error) { +func (f *FTX) GetOTCQuoteStatus(ctx context.Context, marketName, quoteID string) (*QuoteStatusData, error) { resp := struct { - Data []QuoteStatusData `json:"result"` + Data QuoteStatusData `json:"result"` }{} params := url.Values{} params.Set("market", marketName) - return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, getOTCQuoteStatus+quoteID, params, &resp) + return &resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, getOTCQuoteStatus+quoteID, params, &resp) } // AcceptOTCQuote requests for otc quotes diff --git a/exchanges/ftx/ftx_test.go b/exchanges/ftx/ftx_test.go index 97ea0c47..e1e1560b 100644 --- a/exchanges/ftx/ftx_test.go +++ b/exchanges/ftx/ftx_test.go @@ -9,7 +9,6 @@ import ( "time" "github.com/thrasher-corp/gocryptotrader/config" - "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" @@ -370,6 +369,9 @@ func TestGetMarginMarketLendingHistory(t *testing.T) { t.Errorf("expected %s, got %s", errStartTimeCannotBeAfterEndTime, err) } + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } _, err = f.GetMarginMarketLendingHistory(context.Background(), currency.USD, tmNow.AddDate(0, 0, -1), tmNow) if err != nil { @@ -435,9 +437,12 @@ func TestFetchDepositAddress(t *testing.T) { if !areTestAPIKeysSet() { t.Skip() } - _, err := f.FetchDepositAddress(context.Background(), currency.NewCode("tUsD")) + r, err := f.FetchDepositAddress(context.Background(), currency.NewCode("UsDt"), "trx") if err != nil { - t.Error(err) + t.Fatal(err) + } + if r.Method != "trx" { + t.Error("expected trx method") } } @@ -469,7 +474,13 @@ func TestWithdraw(t *testing.T) { t.Skip("skipping test, either api keys or canManipulateRealOrders isnt set correctly") } _, err := f.Withdraw(context.Background(), - currency.NewCode("bTc"), core.BitcoinDonationAddress, "", "", "957378", 0.0009) + currency.NewCode("UsDT"), + "TJU9piX2WA8WTvxVKMqpvTzZGhvXQAZKSY", + "", + "", + "trx", + "715913", + -1) if err != nil { t.Error(err) } @@ -1174,7 +1185,7 @@ func TestGetDepositAddress(t *testing.T) { if !areTestAPIKeysSet() { t.Skip("API keys required but not set, skipping test") } - _, err := f.GetDepositAddress(context.Background(), currency.NewCode("FTT"), "") + _, err := f.GetDepositAddress(context.Background(), currency.NewCode("FTT"), "", "") if err != nil { t.Error(err) } diff --git a/exchanges/ftx/ftx_types.go b/exchanges/ftx/ftx_types.go index 851406ca..6f7e789f 100644 --- a/exchanges/ftx/ftx_types.go +++ b/exchanges/ftx/ftx_types.go @@ -223,22 +223,27 @@ type AccountInfoData struct { // WalletCoinsData stores data about wallet coins type WalletCoinsData struct { - Bep2Asset interface{} `json:"bep2Asset"` - CanConvert bool `json:"canConvert"` - CanDeposit bool `json:"canDeposit"` - CanWithdraw bool `json:"canWithdraw"` - Collateral bool `json:"collateral"` - CollateralWeight float64 `json:"collateralWeight"` - CreditTo interface{} `json:"creditTo"` - ERC20Contract interface{} `json:"erc20Contract"` - Fiat bool `json:"fiat"` - HasTag bool `json:"hasTag"` - Hidden bool `json:"hidden"` - IsETF bool `json:"isEtf"` - IsToken bool `json:"isToken"` - Methods []interface{} - ID string `json:"id"` - Name string `json:"name"` + USDFungible bool `json:"usdFungible"` + CanDeposit bool `json:"canDeposit"` + CanWithdraw bool `json:"canWithdraw"` + CanConvert bool `json:"canConvert"` + Collateral bool `json:"collateral"` + CollateralWeight float64 `json:"collateralWeight"` + CreditTo string `json:"creditTo"` + ERC20Contract string `json:"erc20Contract"` + BEP2Asset string `json:"bep2Asset"` + TRC20Contract string `json:"trc20Contract"` + SpotMargin bool `json:"spotMargin"` + IndexPrice float64 `json:"indexPrice"` + SPLMint string `json:"splMint"` + Fiat bool `json:"fiat"` + HasTag bool `json:"hasTag"` + Hidden bool `json:"hidden"` + IsETF bool `json:"isEtf"` + IsToken bool `json:"isToken"` + Methods []string `json:"methods"` + ID string `json:"id"` + Name string `json:"name"` } // WalletBalance stores balances data @@ -258,10 +263,12 @@ type AllWalletBalances map[string][]WalletBalance type DepositData struct { Address string `json:"address"` Tag string `json:"tag"` + Method string `json:"method"` + Coin string `json:"coin"` } -// TransactionData stores data about deposit history -type TransactionData struct { +// DepositItem stores data about deposit history +type DepositItem struct { Coin string `json:"coin"` Confirmations int64 `json:"conformations"` ConfirmedTime time.Time `json:"confirmedTime"` @@ -272,6 +279,28 @@ type TransactionData struct { Status string `json:"status"` Time time.Time `json:"time"` TxID string `json:"txid"` + Address struct { + Address string `json:"address"` + Tag string `json:"tag"` + Method string `json:"method"` + } `json:"address"` +} + +// WithdrawItem stores data about withdraw history +type WithdrawItem struct { + ID int64 `json:"id"` + Coin string `json:"coin"` + Address string `json:"address"` + Tag string `json:"tag"` + Method string `json:"method"` + TXID string `json:"txid"` + Size float64 `json:"size"` + Fee float64 `json:"fee"` + Status string `json:"status"` + Complete time.Time `json:"complete"` + Time time.Time `json:"time"` + Notes string `json:"notes"` + DestinationName string `json:"destinationName"` } // OrderData stores open order data diff --git a/exchanges/ftx/ftx_wrapper.go b/exchanges/ftx/ftx_wrapper.go index 16d71b6a..86dd6940 100644 --- a/exchanges/ftx/ftx_wrapper.go +++ b/exchanges/ftx/ftx_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -94,22 +95,26 @@ func (f *FTX) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerFetching: true, - TickerBatching: true, - KlineFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - GetOrder: true, - GetOrders: true, - CancelOrders: true, - CancelOrder: true, - SubmitOrder: true, - TradeFee: true, - FiatDepositFee: true, - FiatWithdrawalFee: true, - CryptoWithdrawalFee: true, + TickerFetching: true, + TickerBatching: true, + KlineFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + GetOrder: true, + GetOrders: true, + CancelOrders: true, + CancelOrder: true, + SubmitOrder: true, + TradeFee: true, + FiatDepositFee: true, + FiatWithdrawalFee: true, + CryptoWithdrawalFee: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ OrderbookFetching: true, @@ -119,7 +124,7 @@ func (f *FTX) SetDefaults() { GetOrders: true, GetOrder: true, }, - WithdrawPermissions: exchange.NoAPIWithdrawalMethods, + WithdrawPermissions: exchange.AutoWithdrawCrypto, Kline: kline.ExchangeCapabilitiesSupported{ DateRanges: true, Intervals: true, @@ -491,7 +496,9 @@ func (f *FTX) GetFundingHistory(ctx context.Context) ([]exchange.FundHistory, er tempData.Fee = depositData[x].Fee tempData.Timestamp = depositData[x].Time tempData.ExchangeName = f.Name + tempData.CryptoToAddress = depositData[x].Address.Address tempData.CryptoTxID = depositData[x].TxID + tempData.CryptoChain = depositData[x].Address.Method tempData.Status = depositData[x].Status tempData.Amount = depositData[x].Size tempData.Currency = depositData[x].Coin @@ -504,14 +511,16 @@ func (f *FTX) GetFundingHistory(ctx context.Context) ([]exchange.FundHistory, er } for y := range withdrawalData { var tempData exchange.FundHistory - tempData.Fee = depositData[y].Fee - tempData.Timestamp = depositData[y].Time + tempData.Fee = withdrawalData[y].Fee + tempData.Timestamp = withdrawalData[y].Time tempData.ExchangeName = f.Name - tempData.CryptoTxID = depositData[y].TxID - tempData.Status = depositData[y].Status - tempData.Amount = depositData[y].Size - tempData.Currency = depositData[y].Coin - tempData.TransferID = strconv.FormatInt(depositData[y].ID, 10) + tempData.CryptoToAddress = withdrawalData[y].Address + tempData.CryptoTxID = withdrawalData[y].TXID + tempData.CryptoChain = withdrawalData[y].Method + tempData.Status = withdrawalData[y].Status + tempData.Amount = withdrawalData[y].Size + tempData.Currency = withdrawalData[y].Coin + tempData.TransferID = strconv.FormatInt(withdrawalData[y].ID, 10) resp = append(resp, tempData) } return resp, nil @@ -824,12 +833,15 @@ func (f *FTX) GetOrderInfo(ctx context.Context, orderID string, pair currency.Pa } // GetDepositAddress returns a deposit address for a specified currency -func (f *FTX) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - a, err := f.FetchDepositAddress(ctx, cryptocurrency) +func (f *FTX) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { + a, err := f.FetchDepositAddress(ctx, cryptocurrency, chain) if err != nil { - return "", err + return nil, err } - return a.Address, nil + return &deposit.Address{ + Address: a.Address, + Tag: a.Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -843,6 +855,7 @@ func (f *FTX) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequest * withdrawRequest.Crypto.Address, withdrawRequest.Crypto.AddressTag, withdrawRequest.TradePassword, + withdrawRequest.Crypto.Chain, strconv.FormatInt(withdrawRequest.OneTimePassword, 10), withdrawRequest.Amount) if err != nil { @@ -1214,3 +1227,22 @@ func (f *FTX) UpdateOrderExecutionLimits(ctx context.Context, _ asset.Item) erro } return f.LoadLimits(limits) } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (f *FTX) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + coins, err := f.GetCoins(ctx) + if err != nil { + return nil, err + } + + var availableChains []string + for x := range coins { + if strings.EqualFold(coins[x].ID, cryptocurrency.String()) { + for y := range coins[x].Methods { + availableChains = append(availableChains, coins[x].Methods[y]) + } + } + } + return availableChains, nil +} diff --git a/exchanges/gateio/gateio.go b/exchanges/gateio/gateio.go index a6e559e1..53cd4029 100644 --- a/exchanges/gateio/gateio.go +++ b/exchanges/gateio/gateio.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "net/http" + "net/url" "strconv" "strings" @@ -521,53 +522,64 @@ func getCryptocurrencyWithdrawalFee(c currency.Code) float64 { } // WithdrawCrypto withdraws cryptocurrency to your selected wallet -func (g *Gateio) WithdrawCrypto(ctx context.Context, currency, address string, amount float64) (*withdraw.ExchangeResponse, error) { - type response struct { +func (g *Gateio) WithdrawCrypto(ctx context.Context, curr, address, memo, chain string, amount float64) (*withdraw.ExchangeResponse, error) { + if curr == "" || address == "" || amount <= 0 { + return nil, errors.New("currency, address and amount must be set") + } + + resp := struct { Result bool `json:"result"` Message string `json:"message"` Code int `json:"code"` + }{} + + vals := url.Values{} + vals.Set("currency", strings.ToUpper(curr)) + vals.Set("amount", strconv.FormatFloat(amount, 'f', -1, 64)) + + // Transaction MEMO has to be entered after the address separated by a space + if memo != "" { + address += " " + memo + } + vals.Set("address", address) + + if chain != "" { + vals.Set("chain", strings.ToUpper(chain)) } - var result response - params := fmt.Sprintf("currency=%v&amount=%v&address=%v", - currency, - address, - amount, - ) - err := g.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, gateioWithdraw, params, &result) + err := g.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, gateioWithdraw, vals.Encode(), &resp) if err != nil { return nil, err } - if !result.Result { - return nil, fmt.Errorf("code:%d message:%s", result.Code, result.Message) + if !resp.Result { + return nil, fmt.Errorf("code:%d message:%s", resp.Code, resp.Message) } return &withdraw.ExchangeResponse{ - Status: result.Message, + Status: resp.Message, }, nil } // GetCryptoDepositAddress returns a deposit address for a cryptocurrency -func (g *Gateio) GetCryptoDepositAddress(ctx context.Context, currency string) (string, error) { - type response struct { - Result bool `json:"result,string"` - Code int `json:"code"` - Message string `json:"message"` - Address string `json:"addr"` - } - - var result response +func (g *Gateio) GetCryptoDepositAddress(ctx context.Context, curr string) (*DepositAddr, error) { + var result DepositAddr params := fmt.Sprintf("currency=%s", - currency) + curr) err := g.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, gateioDepositAddress, params, &result) if err != nil { - return "", err + return nil, err } if !result.Result { - return "", fmt.Errorf("code:%d message:%s", result.Code, result.Message) + return nil, fmt.Errorf("code:%d message:%s", result.Code, result.Message) } - return result.Address, nil + // For memo/payment ID currencies + if strings.Contains(result.Address, " ") { + split := strings.Split(result.Address, " ") + result.Address = split[0] + result.Tag = split[1] + } + return &result, nil } diff --git a/exchanges/gateio/gateio_test.go b/exchanges/gateio/gateio_test.go index 27717dfe..3ca51e67 100644 --- a/exchanges/gateio/gateio_test.go +++ b/exchanges/gateio/gateio_test.go @@ -423,6 +423,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: g.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -472,12 +473,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { if areTestAPIKeysSet() { - _, err := g.GetDepositAddress(context.Background(), currency.ETC, "") + _, err := g.GetDepositAddress(context.Background(), currency.USDT, "", "TRX") if err != nil { t.Error("Test Fail - GetDepositAddress error", err) } } else { - _, err := g.GetDepositAddress(context.Background(), currency.ETC, "") + _, err := g.GetDepositAddress(context.Background(), currency.ETC, "", "") if err == nil { t.Error("Test Fail - GetDepositAddress error cannot be nil") } @@ -867,3 +868,25 @@ func TestUpdateTickers(t *testing.T) { t.Error(err) } } + +func TestGetCryptoDepositAddress(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := g.GetCryptoDepositAddress(context.Background(), currency.USDT.String()) + if err != nil { + t.Error(err) + } +} + +func TestGetAvailableTransferTrains(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := g.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Error(err) + } +} diff --git a/exchanges/gateio/gateio_types.go b/exchanges/gateio/gateio_types.go index 051ba8e7..35cb7d77 100644 --- a/exchanges/gateio/gateio_types.go +++ b/exchanges/gateio/gateio_types.go @@ -532,3 +532,19 @@ type wsOrderbook struct { Bids [][]string `json:"bids"` ID int64 `json:"id"` } + +// DepositAddr stores the deposit address info +type DepositAddr struct { + Result bool `json:"result,string"` + Code int `json:"code"` + Message string `json:"message"` + Address string `json:"addr"` + Tag string + MultichainAddresses []struct { + Chain string `json:"chain"` + Address string `json:"address"` + PaymentID string `json:"payment_id"` + PaymentName string `json:"payment_name"` + ObtainFailed uint8 `json:"obtain_failed"` + } `json:"multichain_addresses"` +} diff --git a/exchanges/gateio/gateio_wrapper.go b/exchanges/gateio/gateio_wrapper.go index b27e144e..d397e27a 100644 --- a/exchanges/gateio/gateio_wrapper.go +++ b/exchanges/gateio/gateio_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -72,23 +73,25 @@ func (g *Gateio) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerBatching: true, - TickerFetching: true, - KlineFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - GetOrder: true, - GetOrders: true, - CancelOrders: true, - CancelOrder: true, - SubmitOrder: true, - UserTradeHistory: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - TradeFee: true, - CryptoWithdrawalFee: true, + TickerBatching: true, + TickerFetching: true, + KlineFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + GetOrder: true, + GetOrders: true, + CancelOrders: true, + CancelOrder: true, + SubmitOrder: true, + UserTradeHistory: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + TradeFee: true, + CryptoWithdrawalFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ TickerFetching: true, @@ -626,17 +629,32 @@ func (g *Gateio) GetOrderInfo(ctx context.Context, orderID string, pair currency } // GetDepositAddress returns a deposit address for a specified currency -func (g *Gateio) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (g *Gateio) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { addr, err := g.GetCryptoDepositAddress(ctx, cryptocurrency.String()) if err != nil { - return "", err + return nil, err } - if addr == gateioGenerateAddress { - return "", + if addr.Address == gateioGenerateAddress { + return nil, errors.New("new deposit address is being generated, please retry again shortly") } - return addr, nil + + if chain != "" { + for x := range addr.MultichainAddresses { + if strings.EqualFold(addr.MultichainAddresses[x].Chain, chain) { + return &deposit.Address{ + Address: addr.MultichainAddresses[x].Address, + Tag: addr.MultichainAddresses[x].PaymentName, + }, nil + } + } + return nil, fmt.Errorf("network %s not found", chain) + } + return &deposit.Address{ + Address: addr.Address, + Tag: addr.Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -648,7 +666,10 @@ func (g *Gateio) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawReques return g.WithdrawCrypto(ctx, withdrawRequest.Currency.String(), withdrawRequest.Crypto.Address, - withdrawRequest.Amount) + withdrawRequest.Crypto.AddressTag, + withdrawRequest.Crypto.Chain, + withdrawRequest.Amount, + ) } // WithdrawFiatFunds returns a withdrawal ID when a @@ -865,3 +886,18 @@ func (g *Gateio) GetHistoricCandles(ctx context.Context, pair currency.Pair, a a func (g *Gateio) GetHistoricCandlesExtended(ctx context.Context, pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return g.GetHistoricCandles(ctx, pair, a, start, end, interval) } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (g *Gateio) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + chains, err := g.GetCryptoDepositAddress(ctx, cryptocurrency.String()) + if err != nil { + return nil, err + } + + var availableChains []string + for x := range chains.MultichainAddresses { + availableChains = append(availableChains, chains.MultichainAddresses[x].Chain) + } + return availableChains, nil +} diff --git a/exchanges/gemini/gemini_live_test.go b/exchanges/gemini/gemini_live_test.go index 2770fa8b..9ab7ae1b 100644 --- a/exchanges/gemini/gemini_live_test.go +++ b/exchanges/gemini/gemini_live_test.go @@ -1,4 +1,5 @@ -//+build mock_test_off +//go:build mock_test_off +// +build mock_test_off // This will build if build tag mock_test_off is parsed and will do live testing // using all tests in (exchange)_test.go @@ -35,9 +36,9 @@ func TestMain(m *testing.M) { if err != nil { log.Fatal("Gemini setup error", err) } - err = g.API.Endpoints.SetRunning(exchange.RestSpot.String(), geminiSandboxAPIURL) + err = g.API.Endpoints.SetRunning(exchange.RestSpot.String(), geminiAPIURL) if err != nil { - log.Fatalf("endpoint setting failed. key: %s, val: %s", exchange.RestSpot.String(), geminiSandboxAPIURL) + log.Fatalf("endpoint setting failed. key: %s, val: %s", exchange.RestSpot.String(), geminiAPIURL) } log.Printf(sharedtestvalues.LiveTesting, g.Name) os.Exit(m.Run()) diff --git a/exchanges/gemini/gemini_test.go b/exchanges/gemini/gemini_test.go index ea464449..8c775739 100644 --- a/exchanges/gemini/gemini_test.go +++ b/exchanges/gemini/gemini_test.go @@ -23,8 +23,6 @@ import ( const ( apiKey = "" apiSecret = "" - apiKeyRole = "" - sessionHeartBeat = false canManipulateRealOrders = false ) @@ -487,6 +485,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { t.Parallel() withdrawCryptoRequest := withdraw.Request{ + Exchange: g.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -545,7 +544,7 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() - _, err := g.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := g.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress error cannot be nil") } diff --git a/exchanges/gemini/gemini_wrapper.go b/exchanges/gemini/gemini_wrapper.go index 7bd4ffbb..0e287a94 100644 --- a/exchanges/gemini/gemini_wrapper.go +++ b/exchanges/gemini/gemini_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -610,12 +611,12 @@ func (g *Gemini) GetOrderInfo(ctx context.Context, orderID string, pair currency } // GetDepositAddress returns a deposit address for a specified currency -func (g *Gemini) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (g *Gemini) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { addr, err := g.GetCryptoDepositAddress(ctx, "", cryptocurrency.String()) if err != nil { - return "", err + return nil, err } - return addr.Address, nil + return &deposit.Address{Address: addr.Address}, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/hitbtc/hitbtc_test.go b/exchanges/hitbtc/hitbtc_test.go index 6dec89ad..2a48f0f7 100644 --- a/exchanges/hitbtc/hitbtc_test.go +++ b/exchanges/hitbtc/hitbtc_test.go @@ -394,6 +394,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: h.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -443,12 +444,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { if areTestAPIKeysSet() { - _, err := h.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := h.GetDepositAddress(context.Background(), currency.XRP, "", "") if err != nil { t.Error("GetDepositAddress() error", err) } } else { - _, err := h.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := h.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error cannot be nil") } diff --git a/exchanges/hitbtc/hitbtc_wrapper.go b/exchanges/hitbtc/hitbtc_wrapper.go index 0f928afb..5379c910 100644 --- a/exchanges/hitbtc/hitbtc_wrapper.go +++ b/exchanges/hitbtc/hitbtc_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -646,13 +647,16 @@ func (h *HitBTC) GetOrderInfo(ctx context.Context, orderID string, pair currency } // GetDepositAddress returns a deposit address for a specified currency -func (h *HitBTC) GetDepositAddress(ctx context.Context, c currency.Code, _ string) (string, error) { - resp, err := h.GetDepositAddresses(ctx, c.String()) +func (h *HitBTC) GetDepositAddress(ctx context.Context, currency currency.Code, _, _ string) (*deposit.Address, error) { + resp, err := h.GetDepositAddresses(ctx, currency.String()) if err != nil { - return "", err + return nil, err } - return resp.Address, nil + return &deposit.Address{ + Address: resp.Address, + Tag: resp.PaymentID, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/huobi/huobi.go b/exchanges/huobi/huobi.go index 1ce4b7d2..095b9f51 100644 --- a/exchanges/huobi/huobi.go +++ b/exchanges/huobi/huobi.go @@ -9,6 +9,7 @@ import ( "net/http" "net/url" "strconv" + "strings" "time" "github.com/thrasher-corp/gocryptotrader/common" @@ -21,47 +22,49 @@ import ( const ( huobiAPIURL = "https://api.huobi.pro" - huobiURL = "https://api.hbdm.com/" - huobiFuturesURL = "https://api.hbdm.com" + huobiURL = "https://api.hbdm.com" + huobiFuturesURL = huobiURL huobiAPIVersion = "1" huobiAPIVersion2 = "2" // Spot endpoints - huobiMarketHistoryKline = "market/history/kline" - huobiMarketDetail = "market/detail" - huobiMarketDetailMerged = "market/detail/merged" - huobi24HrMarketSummary = "/market/detail?" - huobiMarketDepth = "market/depth" - huobiMarketTrade = "market/trade" - huobiMarketTickers = "market/tickers" - huobiMarketTradeHistory = "market/history/trade" - huobiSymbols = "common/symbols" - huobiCurrencies = "common/currencys" - huobiTimestamp = "common/timestamp" - huobiAccounts = "account/accounts" - huobiAccountBalance = "account/accounts/%s/balance" - huobiAccountDepositAddress = "account/deposit/address" - huobiAccountWithdrawQuota = "account/withdraw/quota" - huobiAggregatedBalance = "subuser/aggregate-balance" - huobiOrderPlace = "order/orders/place" - huobiOrderCancel = "order/orders/%s/submitcancel" - huobiOrderCancelBatch = "order/orders/batchcancel" - huobiBatchCancelOpenOrders = "order/orders/batchCancelOpenOrders" - huobiGetOrder = "order/orders/getClientOrder" - huobiGetOrderMatch = "order/orders/%s/matchresults" - huobiGetOrders = "order/orders" - huobiGetOpenOrders = "order/openOrders" - huobiGetOrdersMatch = "orders/matchresults" - huobiMarginTransferIn = "dw/transfer-in/margin" - huobiMarginTransferOut = "dw/transfer-out/margin" - huobiMarginOrders = "margin/orders" - huobiMarginRepay = "margin/orders/%s/repay" - huobiMarginLoanOrders = "margin/loan-orders" - huobiMarginAccountBalance = "margin/accounts/balance" - huobiWithdrawCreate = "dw/withdraw/api/create" - huobiWithdrawCancel = "dw/withdraw-virtual/%s/cancel" - huobiStatusError = "error" - huobiMarginRates = "margin/loan-info" + huobiMarketHistoryKline = "/market/history/kline" + huobiMarketDetail = "/market/detail" + huobiMarketDetailMerged = "/market/detail/merged" + huobi24HrMarketSummary = "/market/detail?" + huobiMarketDepth = "/market/depth" + huobiMarketTrade = "/market/trade" + huobiMarketTickers = "/market/tickers" + huobiMarketTradeHistory = "/market/history/trade" + huobiSymbols = "/v1/common/symbols" + huobiCurrencies = "/v1/common/currencys" + huobiTimestamp = "/common/timestamp" + huobiAccounts = "/account/accounts" + huobiAccountBalance = "/account/accounts/%s/balance" + huobiAccountDepositAddress = "/account/deposit/address" + huobiAccountWithdrawQuota = "/account/withdraw/quota" + huobiAccountQueryWithdrawAddress = "/account/withdraw/" + huobiAggregatedBalance = "/subuser/aggregate-balance" + huobiOrderPlace = "/order/orders/place" + huobiOrderCancel = "/order/orders/%s/submitcancel" + huobiOrderCancelBatch = "/order/orders/batchcancel" + huobiBatchCancelOpenOrders = "/order/orders/batchCancelOpenOrders" + huobiGetOrder = "/order/orders/getClientOrder" + huobiGetOrderMatch = "/order/orders/%s/matchresults" + huobiGetOrders = "/order/orders" + huobiGetOpenOrders = "/order/openOrders" + huobiGetOrdersMatch = "/orders/matchresults" + huobiMarginTransferIn = "/dw/transfer-in/margin" + huobiMarginTransferOut = "/dw/transfer-out/margin" + huobiMarginOrders = "/margin/orders" + huobiMarginRepay = "/margin/orders/%s/repay" + huobiMarginLoanOrders = "/margin/loan-orders" + huobiMarginAccountBalance = "/margin/accounts/balance" + huobiWithdrawCreate = "/dw/withdraw/api/create" + huobiWithdrawCancel = "/dw/withdraw-virtual/%s/cancel" + huobiStatusError = "error" + huobiMarginRates = "/margin/loan-info" + huobiCurrenciesReference = "/v2/reference/currencies" ) // HUOBI is the overarching type across this package @@ -106,7 +109,7 @@ func (h *HUOBI) GetSpotKline(ctx context.Context, arg KlinesRequestParams) ([]Kl var result response - err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues("/"+huobiMarketHistoryKline, vals), &result) + err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues(huobiMarketHistoryKline, vals), &result) if result.ErrorMessage != "" { return nil, errors.New(result.ErrorMessage) } @@ -128,7 +131,7 @@ func (h *HUOBI) Get24HrMarketSummary(ctx context.Context, symbol currency.Pair) // GetTickers returns the ticker for the specified symbol func (h *HUOBI) GetTickers(ctx context.Context) (Tickers, error) { var result Tickers - return result, h.SendHTTPRequest(ctx, exchange.RestSpot, "/"+huobiMarketTickers, &result) + return result, h.SendHTTPRequest(ctx, exchange.RestSpot, huobiMarketTickers, &result) } // GetMarketDetailMerged returns the ticker for the specified symbol @@ -147,7 +150,7 @@ func (h *HUOBI) GetMarketDetailMerged(ctx context.Context, symbol currency.Pair) var result response - err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues("/"+huobiMarketDetailMerged, vals), &result) + err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues(huobiMarketDetailMerged, vals), &result) if result.ErrorMessage != "" { return result.Tick, errors.New(result.ErrorMessage) } @@ -174,7 +177,7 @@ func (h *HUOBI) GetDepth(ctx context.Context, obd OrderBookDataRequestParams) (O var result response - err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues("/"+huobiMarketDepth, vals), &result) + err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues(huobiMarketDepth, vals), &result) if result.ErrorMessage != "" { return result.Depth, errors.New(result.ErrorMessage) } @@ -199,7 +202,7 @@ func (h *HUOBI) GetTrades(ctx context.Context, symbol currency.Pair) ([]Trade, e var result response - err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues("/"+huobiMarketTrade, vals), &result) + err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues(huobiMarketTrade, vals), &result) if result.ErrorMessage != "" { return nil, errors.New(result.ErrorMessage) } @@ -242,7 +245,7 @@ func (h *HUOBI) GetTradeHistory(ctx context.Context, symbol currency.Pair, size var result response - err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues("/"+huobiMarketTradeHistory, vals), &result) + err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues(huobiMarketTradeHistory, vals), &result) if result.ErrorMessage != "" { return nil, errors.New(result.ErrorMessage) } @@ -265,7 +268,7 @@ func (h *HUOBI) GetMarketDetail(ctx context.Context, symbol currency.Pair) (Deta var result response - err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues("/"+huobiMarketDetail, vals), &result) + err = h.SendHTTPRequest(ctx, exchange.RestSpot, common.EncodeURLValues(huobiMarketDetail, vals), &result) if result.ErrorMessage != "" { return result.Tick, errors.New(result.ErrorMessage) } @@ -281,7 +284,7 @@ func (h *HUOBI) GetSymbols(ctx context.Context) ([]Symbol, error) { var result response - err := h.SendHTTPRequest(ctx, exchange.RestSpot, "/v"+huobiAPIVersion+"/"+huobiSymbols, &result) + err := h.SendHTTPRequest(ctx, exchange.RestSpot, huobiSymbols, &result) if result.ErrorMessage != "" { return nil, errors.New(result.ErrorMessage) } @@ -296,16 +299,32 @@ func (h *HUOBI) GetCurrencies(ctx context.Context) ([]string, error) { } var result response - err := h.SendHTTPRequest(ctx, - exchange.RestSpot, - "/v"+huobiAPIVersion+"/"+huobiCurrencies, - &result) + + err := h.SendHTTPRequest(ctx, exchange.RestSpot, huobiCurrencies, &result) if result.ErrorMessage != "" { return nil, errors.New(result.ErrorMessage) } return result.Currencies, err } +// GetCurrenciesIncludingChains returns currency and chain data +func (h *HUOBI) GetCurrenciesIncludingChains(ctx context.Context, curr currency.Code) ([]CurrenciesChainData, error) { + resp := struct { + Data []CurrenciesChainData `json:"data"` + }{} + + vals := url.Values{} + if !curr.IsEmpty() { + vals.Set("currency", curr.Lower().String()) + } + path := common.EncodeURLValues(huobiCurrenciesReference, vals) + err := h.SendHTTPRequest(ctx, exchange.RestSpot, path, &resp) + if err != nil { + return nil, err + } + return resp.Data, nil +} + // GetTimestamp returns the Huobi server time func (h *HUOBI) GetTimestamp(ctx context.Context) (int64, error) { type response struct { @@ -714,7 +733,11 @@ func (h *HUOBI) GetMarginAccountBalance(ctx context.Context, symbol currency.Pai } // Withdraw withdraws the desired amount and currency -func (h *HUOBI) Withdraw(ctx context.Context, c currency.Code, address, addrTag string, amount, fee float64) (int64, error) { +func (h *HUOBI) Withdraw(ctx context.Context, c currency.Code, address, addrTag, chain string, amount, fee float64) (int64, error) { + if c.IsEmpty() || address == "" || amount <= 0 { + return 0, errors.New("currency, address and amount must be set") + } + resp := struct { WithdrawID int64 `json:"data"` }{} @@ -724,6 +747,7 @@ func (h *HUOBI) Withdraw(ctx context.Context, c currency.Code, address, addrTag Amount string `json:"amount"` Currency string `json:"currency"` Fee string `json:"fee,omitempty"` + Chain string `json:"chain,omitempty"` AddrTag string `json:"addr-tag,omitempty"` }{ Address: address, @@ -735,11 +759,15 @@ func (h *HUOBI) Withdraw(ctx context.Context, c currency.Code, address, addrTag data.Fee = strconv.FormatFloat(fee, 'f', -1, 64) } - if c == currency.XRP { + if addrTag != "" { data.AddrTag = addrTag } - err := h.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, huobiWithdrawCreate, nil, data, &resp.WithdrawID, false) + if chain != "" { + data.Chain = strings.ToLower(chain) + } + + err := h.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodPost, huobiWithdrawCreate, nil, data, &resp, false) return resp.WithdrawID, err } @@ -757,22 +785,22 @@ func (h *HUOBI) CancelWithdraw(ctx context.Context, withdrawID int64) (int64, er } // QueryDepositAddress returns the deposit address for a specified currency -func (h *HUOBI) QueryDepositAddress(ctx context.Context, cryptocurrency string) (DepositAddress, error) { +func (h *HUOBI) QueryDepositAddress(ctx context.Context, cryptocurrency currency.Code) ([]DepositAddress, error) { resp := struct { DepositAddress []DepositAddress `json:"data"` }{} vals := url.Values{} - vals.Set("currency", cryptocurrency) + vals.Set("currency", cryptocurrency.Lower().String()) err := h.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, huobiAccountDepositAddress, vals, nil, &resp, true) if err != nil { - return DepositAddress{}, err + return nil, err } if len(resp.DepositAddress) == 0 { - return DepositAddress{}, errors.New("deposit address data isn't populated") + return nil, errors.New("deposit address data isn't populated") } - return resp.DepositAddress[0], nil + return resp.DepositAddress, nil } // QueryWithdrawQuotas returns the users cryptocurrency withdraw quotas @@ -817,8 +845,13 @@ func (h *HUOBI) SendHTTPRequest(ctx context.Context, ep exchange.URL, path strin var errCap errorCapture if err := json.Unmarshal(tempResp, &errCap); err == nil { - if errCap.Code != 200 && errCap.ErrMsg != "" { - return errors.New(errCap.ErrMsg) + if errCap.ErrMsgType1 != "" { + return fmt.Errorf("error code: %v error message: %s", errCap.CodeType1, + errors.New(errCap.ErrMsgType1)) + } + if errCap.ErrMsgType2 != "" { + return fmt.Errorf("error code: %v error message: %s", errCap.CodeType2, + errors.New(errCap.ErrMsgType2)) } } return json.Unmarshal(tempResp, result) @@ -839,16 +872,15 @@ func (h *HUOBI) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.UR interim := json.RawMessage{} newRequest := func() (*request.Item, error) { - now := time.Now() values.Set("AccessKeyId", h.API.Credentials.Key) values.Set("SignatureMethod", "HmacSHA256") values.Set("SignatureVersion", "2") - values.Set("Timestamp", now.UTC().Format("2006-01-02T15:04:05")) + values.Set("Timestamp", time.Now().UTC().Format("2006-01-02T15:04:05")) if isVersion2API { - endpoint = "/v" + huobiAPIVersion2 + "/" + endpoint + endpoint = "/v" + huobiAPIVersion2 + endpoint } else { - endpoint = "/v" + huobiAPIVersion + "/" + endpoint + endpoint = "/v" + huobiAPIVersion + endpoint } payload := fmt.Sprintf("%s\napi.huobi.pro\n%s\n%s", @@ -903,14 +935,14 @@ func (h *HUOBI) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.UR var errCap ResponseV2 if err = json.Unmarshal(interim, &errCap); err == nil { if errCap.Code != 200 && errCap.Message != "" { - return errors.New(errCap.Message) + return fmt.Errorf("error code: %v error message: %s", errCap.Code, errCap.Message) } } } else { var errCap Response if err = json.Unmarshal(interim, &errCap); err == nil { if errCap.Status == huobiStatusError && errCap.ErrorMessage != "" { - return errors.New(errCap.ErrorMessage) + return fmt.Errorf("error code: %v error message: %s", errCap.ErrorCode, errCap.ErrorMessage) } } } diff --git a/exchanges/huobi/huobi_cfutures.go b/exchanges/huobi/huobi_cfutures.go index 6731e4b2..f558099d 100644 --- a/exchanges/huobi/huobi_cfutures.go +++ b/exchanges/huobi/huobi_cfutures.go @@ -18,43 +18,43 @@ import ( const ( // Coin Margined Swap (perpetual futures) endpoints - huobiSwapMarkets = "swap-api/v1/swap_contract_info?" - huobiSwapFunding = "swap-api/v1/swap_funding_rate?" - huobiSwapIndexPriceInfo = "swap-api/v1/swap_index?" - huobiSwapPriceLimitation = "swap-api/v1/swap_price_limit?" - huobiSwapOpenInterestInfo = "swap-api/v1/swap_open_interest?" - huobiSwapMarketDepth = "swap-ex/market/depth?" - huobiKLineData = "swap-ex/market/history/kline?" - huobiMarketDataOverview = "swap-ex/market/detail/merged?" - huobiLastTradeContract = "swap-ex/market/trade?" - huobiRequestBatchOfTradingRecords = "swap-ex/market/history/trade?" - huobiInsuranceBalanceAndClawbackRate = "swap-api/v1/swap_risk_info?" - huobiInsuranceBalanceHistory = "swap-api/v1/swap_insurance_fund?" - huobiTieredAdjustmentFactor = "swap-api/v1/swap_adjustfactor?" - huobiOpenInterestInfo = "swap-api/v1/swap_his_open_interest?" - huobiSwapSystemStatus = "swap-api/v1/swap_api_state?" - huobiSwapSentimentAccountData = "swap-api/v1/swap_elite_account_ratio?" - huobiSwapSentimentPosition = "swap-api/v1/swap_elite_position_ratio?" - huobiSwapLiquidationOrders = "swap-api/v1/swap_liquidation_orders?" - huobiSwapHistoricalFundingRate = "swap-api/v1/swap_historical_funding_rate?" - huobiPremiumIndexKlineData = "index/market/history/swap_premium_index_kline?" - huobiPredictedFundingRateData = "index/market/history/swap_estimated_rate_kline?" - huobiBasisData = "index/market/history/swap_basis?" - huobiSwapAccInfo = "swap-api/v1/swap_account_info" - huobiSwapPosInfo = "swap-api/v1/swap_position_info" - huobiSwapAssetsAndPos = "swap-api/v1/swap_account_position_info" // nolint // false positive gosec - huobiSwapSubAccList = "swap-api/v1/swap_sub_account_list" - huobiSwapSubAccInfo = "swap-api/v1/swap_sub_account_info" - huobiSwapSubAccPosInfo = "swap-api/v1/swap_sub_position_info" - huobiSwapFinancialRecords = "swap-api/v1/swap_financial_record" - huobiSwapSettlementRecords = "swap-api/v1/swap_user_settlement_records" - huobiSwapAvailableLeverage = "swap-api/v1/swap_available_level_rate" - huobiSwapOrderLimitInfo = "swap-api/v1/swap_order_limit" - huobiSwapTradingFeeInfo = "swap-api/v1/swap_fee" - huobiSwapTransferLimitInfo = "swap-api/v1/swap_transfer_limit" - huobiSwapPositionLimitInfo = "swap-api/v1/swap_position_limit" - huobiSwapInternalTransferData = "swap-api/v1/swap_master_sub_transfer" - huobiSwapInternalTransferRecords = "swap-api/v1/swap_master_sub_transfer_record" + huobiSwapMarkets = "/swap-api/v1/swap_contract_info" + huobiSwapFunding = "/swap-api/v1/swap_funding_rate" + huobiSwapIndexPriceInfo = "/swap-api/v1/swap_index" + huobiSwapPriceLimitation = "/swap-api/v1/swap_price_limit" + huobiSwapOpenInterestInfo = "/swap-api/v1/swap_open_interest" + huobiSwapMarketDepth = "/swap-ex/market/depth" + huobiKLineData = "/swap-ex/market/history/kline" + huobiMarketDataOverview = "/swap-ex/market/detail/merged" + huobiLastTradeContract = "/swap-ex/market/trade" + huobiRequestBatchOfTradingRecords = "/swap-ex/market/history/trade" + huobiInsuranceBalanceAndClawbackRate = "/swap-api/v1/swap_risk_info" + huobiInsuranceBalanceHistory = "/swap-api/v1/swap_insurance_fund" + huobiTieredAdjustmentFactor = "/swap-api/v1/swap_adjustfactor" + huobiOpenInterestInfo = "/swap-api/v1/swap_his_open_interest" + huobiSwapSystemStatus = "/swap-api/v1/swap_api_state" + huobiSwapSentimentAccountData = "/swap-api/v1/swap_elite_account_ratio" + huobiSwapSentimentPosition = "/swap-api/v1/swap_elite_position_ratio" + huobiSwapLiquidationOrders = "/swap-api/v1/swap_liquidation_orders" + huobiSwapHistoricalFundingRate = "/swap-api/v1/swap_historical_funding_rate" + huobiPremiumIndexKlineData = "/index/market/history/swap_premium_index_kline" + huobiPredictedFundingRateData = "/index/market/history/swap_estimated_rate_kline" + huobiBasisData = "/index/market/history/swap_basis" + huobiSwapAccInfo = "/swap-api/v1/swap_account_info" + huobiSwapPosInfo = "/swap-api/v1/swap_position_info" + huobiSwapAssetsAndPos = "/swap-api/v1/swap_account_position_info" // nolint // false positive gosec + huobiSwapSubAccList = "/swap-api/v1/swap_sub_account_list" + huobiSwapSubAccInfo = "/swap-api/v1/swap_sub_account_info" + huobiSwapSubAccPosInfo = "/swap-api/v1/swap_sub_position_info" + huobiSwapFinancialRecords = "/swap-api/v1/swap_financial_record" + huobiSwapSettlementRecords = "/swap-api/v1/swap_user_settlement_records" + huobiSwapAvailableLeverage = "/swap-api/v1/swap_available_level_rate" + huobiSwapOrderLimitInfo = "/swap-api/v1/swap_order_limit" + huobiSwapTradingFeeInfo = "/swap-api/v1/swap_fee" + huobiSwapTransferLimitInfo = "/swap-api/v1/swap_transfer_limit" + huobiSwapPositionLimitInfo = "/swap-api/v1/swap_position_limit" + huobiSwapInternalTransferData = "/swap-api/v1/swap_master_sub_transfer" + huobiSwapInternalTransferRecords = "/swap-api/v1/swap_master_sub_transfer_record" huobiSwapPlaceOrder = "/swap-api/v1/swap_order" huobiSwapPlaceBatchOrder = "/swap-api/v1/swap_batchorder" huobiSwapCancelOrder = "/swap-api/v1/swap_cancel" @@ -65,7 +65,7 @@ const ( huobiSwapOpenOrders = "/swap-api/v1/swap_openorders" huobiSwapOrderHistory = "/swap-api/v1/swap_hisorders" huobiSwapTradeHistory = "/swap-api/v1/swap_matchresults" - huobiSwapTriggerOrder = "swap-api/v1/swap_trigger_order" + huobiSwapTriggerOrder = "/swap-api/v1/swap_trigger_order" huobiSwapCancelTriggerOrder = "/swap-api/v1/swap_trigger_cancel" huobiSwapCancelAllTriggerOrders = "/swap-api/v1/swap_trigger_cancelall" huobiSwapTriggerOrderHistory = "/swap-api/v1/swap_trigger_hisorders" @@ -82,7 +82,7 @@ func (h *HUOBI) QuerySwapIndexPriceInfo(ctx context.Context, code currency.Pair) } params := url.Values{} params.Set("contract_code", codeValue) - path = huobiSwapIndexPriceInfo + params.Encode() + path = common.EncodeURLValues(path, params) } return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -90,57 +90,59 @@ func (h *HUOBI) QuerySwapIndexPriceInfo(ctx context.Context, code currency.Pair) // GetSwapPriceLimits gets price caps for perpetual futures func (h *HUOBI) GetSwapPriceLimits(ctx context.Context, code currency.Pair) (SwapPriceLimitsData, error) { var resp SwapPriceLimitsData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapPriceLimitation+params.Encode(), - &resp) + path := common.EncodeURLValues(huobiSwapPriceLimitation, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // SwapOpenInterestInformation gets open interest data for perpetual futures func (h *HUOBI) SwapOpenInterestInformation(ctx context.Context, code currency.Pair) (SwapOpenInterestData, error) { var resp SwapOpenInterestData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapOpenInterestInfo+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapOpenInterestInfo, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetSwapMarketDepth gets market depth for perpetual futures func (h *HUOBI) GetSwapMarketDepth(ctx context.Context, code currency.Pair, dataType string) (SwapMarketDepthData, error) { var resp SwapMarketDepthData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) params.Set("type", dataType) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapMarketDepth+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapMarketDepth, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetSwapKlineData gets kline data for perpetual futures func (h *HUOBI) GetSwapKlineData(ctx context.Context, code currency.Pair, period string, size int64, startTime, endTime time.Time) (SwapKlineData, error) { var resp SwapKlineData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } - params.Set("period", period) if size == 1 || size > 2000 { return resp, fmt.Errorf("invalid size") } + params := url.Values{} + params.Set("contract_code", codeValue) + params.Set("period", period) params.Set("size", strconv.FormatInt(size, 10)) if !startTime.IsZero() && !endTime.IsZero() { if startTime.After(endTime) { @@ -149,69 +151,74 @@ func (h *HUOBI) GetSwapKlineData(ctx context.Context, code currency.Pair, period params.Set("start_time", strconv.FormatInt(startTime.Unix(), 10)) params.Set("end_time", strconv.FormatInt(endTime.Unix(), 10)) } - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiKLineData+params.Encode(), &resp) + path := common.EncodeURLValues(huobiKLineData, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetSwapMarketOverview gets market data overview for perpetual futures func (h *HUOBI) GetSwapMarketOverview(ctx context.Context, code currency.Pair) (MarketOverviewData, error) { var resp MarketOverviewData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiMarketDataOverview+params.Encode(), &resp) + path := common.EncodeURLValues(huobiMarketDataOverview, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetLastTrade gets the last trade for a given perpetual contract func (h *HUOBI) GetLastTrade(ctx context.Context, code currency.Pair) (LastTradeData, error) { var resp LastTradeData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiLastTradeContract+params.Encode(), &resp) + path := common.EncodeURLValues(huobiLastTradeContract, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetBatchTrades gets batch trades for a specified contract (fetching size cannot be bigger than 2000) func (h *HUOBI) GetBatchTrades(ctx context.Context, code currency.Pair, size int64) (BatchTradesData, error) { var resp BatchTradesData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) if size <= 0 || size > 1200 { - return resp, fmt.Errorf("invalid size provided values from 1-1200 supported") + return resp, fmt.Errorf("invalid size provided, only values between 1-1200 are supported") } + params := url.Values{} + params.Set("contract_code", codeValue) params.Set("size", strconv.FormatInt(size, 10)) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiRequestBatchOfTradingRecords+params.Encode(), &resp) + path := common.EncodeURLValues(huobiRequestBatchOfTradingRecords, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetInsuranceData gets insurance fund data and clawback rates func (h *HUOBI) GetInsuranceData(ctx context.Context, code currency.Pair) (InsuranceAndClawbackData, error) { var resp InsuranceAndClawbackData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiInsuranceBalanceAndClawbackRate+params.Encode(), &resp) + path := common.EncodeURLValues(huobiInsuranceBalanceAndClawbackRate, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetHistoricalInsuranceData gets historical insurance fund data and clawback rates func (h *HUOBI) GetHistoricalInsuranceData(ctx context.Context, code currency.Pair, pageIndex, pageSize int64) (HistoricalInsuranceFundBalance, error) { var resp HistoricalInsuranceFundBalance - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) if pageIndex != 0 { params.Set("page_index", strconv.FormatInt(pageIndex, 10)) @@ -219,119 +226,114 @@ func (h *HUOBI) GetHistoricalInsuranceData(ctx context.Context, code currency.Pa if pageSize != 0 { params.Set("page_size", strconv.FormatInt(pageIndex, 10)) } - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiInsuranceBalanceHistory+params.Encode(), &resp) + path := common.EncodeURLValues(huobiInsuranceBalanceHistory, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetTieredAjustmentFactorInfo gets tiered adjustment factor data func (h *HUOBI) GetTieredAjustmentFactorInfo(ctx context.Context, code currency.Pair) (TieredAdjustmentFactorData, error) { var resp TieredAdjustmentFactorData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiTieredAdjustmentFactor+params.Encode(), &resp) + path := common.EncodeURLValues(huobiTieredAdjustmentFactor, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetOpenInterestInfo gets open interest data func (h *HUOBI) GetOpenInterestInfo(ctx context.Context, code currency.Pair, period, amountType string, size int64) (OpenInterestData, error) { var resp OpenInterestData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } - params.Set("period", period) if size <= 0 || size > 1200 { - return resp, fmt.Errorf("invalid size provided values from 1-1200 supported") + return resp, fmt.Errorf("invalid size provided, only values between 1-1200 are supported") } - params.Set("size", strconv.FormatInt(size, 10)) aType, ok := validAmountType[amountType] if !ok { return resp, fmt.Errorf("invalid trade type") } + params := url.Values{} + params.Set("contract_code", codeValue) + params.Set("period", period) + params.Set("size", strconv.FormatInt(size, 10)) params.Set("amount_type", strconv.FormatInt(aType, 10)) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiOpenInterestInfo+params.Encode(), &resp) + path := common.EncodeURLValues(huobiOpenInterestInfo, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetSystemStatusInfo gets system status data -func (h *HUOBI) GetSystemStatusInfo(ctx context.Context, code currency.Pair, period, amountType string, size int64) (SystemStatusData, error) { +func (h *HUOBI) GetSystemStatusInfo(ctx context.Context, code currency.Pair) (SystemStatusData, error) { var resp SystemStatusData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { - return resp, fmt.Errorf("invalid period value received") - } - params.Set("period", period) - if size > 0 && size <= 1200 { - params.Set("size", strconv.FormatInt(size, 10)) - } - aType, ok := validAmountType[amountType] - if !ok { - return resp, fmt.Errorf("invalid trade type") - } - params.Set("amount_type", strconv.FormatInt(aType, 10)) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapSystemStatus+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapSystemStatus, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetTraderSentimentIndexAccount gets top trader sentiment function-account func (h *HUOBI) GetTraderSentimentIndexAccount(ctx context.Context, code currency.Pair, period string) (TraderSentimentIndexAccountData, error) { var resp TraderSentimentIndexAccountData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } + params := url.Values{} + params.Set("contract_code", codeValue) params.Set("period", period) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapSentimentAccountData+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapSentimentAccountData, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetTraderSentimentIndexPosition gets top trader sentiment function-position func (h *HUOBI) GetTraderSentimentIndexPosition(ctx context.Context, code currency.Pair, period string) (TraderSentimentIndexPositionData, error) { var resp TraderSentimentIndexPositionData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } + params := url.Values{} + params.Set("contract_code", codeValue) params.Set("period", period) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapSentimentPosition+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapSentimentPosition, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetLiquidationOrders gets liquidation orders for a given perp func (h *HUOBI) GetLiquidationOrders(ctx context.Context, code currency.Pair, tradeType string, pageIndex, pageSize, createDate int64) (LiquidationOrdersData, error) { var resp LiquidationOrdersData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) if createDate != 7 && createDate != 90 { return resp, fmt.Errorf("invalid createDate. 7 and 90 are the only supported values") } - params.Set("create_date", strconv.FormatInt(createDate, 10)) tType, ok := validTradeTypes[tradeType] if !ok { return resp, fmt.Errorf("invalid trade type") } + params := url.Values{} + params.Set("contract_code", codeValue) + params.Set("create_date", strconv.FormatInt(createDate, 10)) params.Set("trade_type", strconv.FormatInt(tType, 10)) if pageIndex != 0 { params.Set("page_index", strconv.FormatInt(pageIndex, 10)) @@ -339,17 +341,18 @@ func (h *HUOBI) GetLiquidationOrders(ctx context.Context, code currency.Pair, tr if pageSize != 0 { params.Set("page_size", strconv.FormatInt(pageIndex, 10)) } - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapLiquidationOrders+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapLiquidationOrders, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetHistoricalFundingRates gets historical funding rates for perpetual futures func (h *HUOBI) GetHistoricalFundingRates(ctx context.Context, code currency.Pair, pageSize, pageIndex int64) (HistoricalFundingRateData, error) { var resp HistoricalFundingRateData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } + params := url.Values{} params.Set("contract_code", codeValue) if pageIndex != 0 { params.Set("page_index", strconv.FormatInt(pageIndex, 10)) @@ -357,70 +360,74 @@ func (h *HUOBI) GetHistoricalFundingRates(ctx context.Context, code currency.Pai if pageSize != 0 { params.Set("page_size", strconv.FormatInt(pageIndex, 10)) } - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiSwapHistoricalFundingRate+params.Encode(), &resp) + path := common.EncodeURLValues(huobiSwapHistoricalFundingRate, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetPremiumIndexKlineData gets kline data for premium index func (h *HUOBI) GetPremiumIndexKlineData(ctx context.Context, code currency.Pair, period string, size int64) (PremiumIndexKlineData, error) { var resp PremiumIndexKlineData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } - params.Set("period", period) if size <= 0 || size > 1200 { - return resp, fmt.Errorf("invalid size provided values from 1-1200 supported") + return resp, fmt.Errorf("invalid size provided, only values between 1-1200 are supported") } + params := url.Values{} + params.Set("contract_code", codeValue) params.Set("size", strconv.FormatInt(size, 10)) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiPremiumIndexKlineData+params.Encode(), &resp) + params.Set("period", period) + path := common.EncodeURLValues(huobiPremiumIndexKlineData, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetEstimatedFundingRates gets estimated funding rates for perpetual futures func (h *HUOBI) GetEstimatedFundingRates(ctx context.Context, code currency.Pair, period string, size int64) (EstimatedFundingRateData, error) { var resp EstimatedFundingRateData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } - params.Set("period", period) if size <= 0 || size > 1200 { - return resp, fmt.Errorf("invalid size provided values from 1-1200 supported") + return resp, fmt.Errorf("invalid size provided, only values between 1-1200 are supported") } + params := url.Values{} + params.Set("contract_code", codeValue) + params.Set("period", period) params.Set("size", strconv.FormatInt(size, 10)) - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiPredictedFundingRateData+params.Encode(), &resp) + path := common.EncodeURLValues(huobiPredictedFundingRateData, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetBasisData gets basis data for perpetual futures func (h *HUOBI) GetBasisData(ctx context.Context, code currency.Pair, period, basisPriceType string, size int64) (BasisData, error) { var resp BasisData - params := url.Values{} codeValue, err := h.FormatSymbol(code, asset.CoinMarginedFutures) if err != nil { return resp, err } - params.Set("contract_code", codeValue) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period value received") } - params.Set("period", period) if size <= 0 || size > 1200 { - return resp, fmt.Errorf("invalid size provided values from 1-1200 supported") + return resp, fmt.Errorf("invalid size provided, only values between 1-1200 are supported") } - params.Set("size", strconv.FormatInt(size, 10)) - if !common.StringDataCompare(validBasisPriceTypes, basisPriceType) { + if !common.StringDataCompareInsensitive(validBasisPriceTypes, basisPriceType) { return resp, fmt.Errorf("invalid period value received") } - return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, huobiBasisData+params.Encode(), &resp) + params := url.Values{} + params.Set("contract_code", codeValue) + params.Set("period", period) + params.Set("size", strconv.FormatInt(size, 10)) + path := common.EncodeURLValues(huobiBasisData, params) + return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } // GetSwapAccountInfo gets swap account info @@ -573,7 +580,7 @@ func (h *HUOBI) GetSwapOrderLimitInfo(ctx context.Context, code currency.Pair, o return resp, err } req["contract_code"] = codeValue - if !common.StringDataCompare(validOrderTypes, orderType) { + if !common.StringDataCompareInsensitive(validOrderTypes, orderType) { return resp, fmt.Errorf("inavlid ordertype provided") } req["order_price_type"] = orderType @@ -627,7 +634,7 @@ func (h *HUOBI) AccountTransferData(ctx context.Context, code currency.Pair, sub req["contract_code"] = codeValue req["subUid"] = subUID req["amount"] = amount - if !common.StringDataCompare(validTransferType, transferType) { + if !common.StringDataCompareInsensitive(validTransferType, transferType) { return resp, fmt.Errorf("inavlid transferType received") } req["type"] = transferType @@ -643,7 +650,7 @@ func (h *HUOBI) AccountTransferRecords(ctx context.Context, code currency.Pair, return resp, err } req["contract_code"] = codeValue - if !common.StringDataCompare(validTransferType, transferType) { + if !common.StringDataCompareInsensitive(validTransferType, transferType) { return resp, fmt.Errorf("inavlid transferType received") } req["type"] = transferType @@ -674,7 +681,7 @@ func (h *HUOBI) PlaceSwapOrders(ctx context.Context, code currency.Pair, clientO } req["direction"] = direction req["offset"] = offset - if !common.StringDataCompare(validOrderTypes, orderPriceType) { + if !common.StringDataCompareInsensitive(validOrderTypes, orderPriceType) { return resp, fmt.Errorf("inavlid ordertype provided") } req["order_price_type"] = orderPriceType @@ -742,7 +749,7 @@ func (h *HUOBI) PlaceLightningCloseOrder(ctx context.Context, contractCode curre req["client_order_id"] = clientOrderID } if orderPriceType != "" { - if !common.StringDataCompare(validLightningOrderPriceType, orderPriceType) { + if !common.StringDataCompareInsensitive(validLightningOrderPriceType, orderPriceType) { return resp, fmt.Errorf("invalid orderPriceType") } req["order_price_type"] = orderPriceType @@ -905,7 +912,7 @@ func (h *HUOBI) PlaceSwapTriggerOrder(ctx context.Context, contractCode currency req["volume"] = volume req["lever_rate"] = leverageRate req["order_price"] = orderPrice - if !common.StringDataCompare(validOrderPriceType, orderPriceType) { + if !common.StringDataCompareInsensitive(validOrderPriceType, orderPriceType) { return resp, fmt.Errorf("invalid order price type") } req["order_price_type"] = orderPriceType diff --git a/exchanges/huobi/huobi_futures.go b/exchanges/huobi/huobi_futures.go index b8bb28cf..a361ebc5 100644 --- a/exchanges/huobi/huobi_futures.go +++ b/exchanges/huobi/huobi_futures.go @@ -23,58 +23,58 @@ import ( const ( // Unauth - fContractInfo = "api/v1/contract_contract_info?" - fContractIndexPrice = "api/v1/contract_index?" - fContractPriceLimitation = "api/v1/contract_price_limit?" - fContractOpenInterest = "api/v1/contract_open_interest?" - fEstimatedDeliveryPrice = "api/v1/contract_delivery_price?" - fContractMarketDepth = "/market/depth?" - fContractKline = "/market/history/kline?" - fMarketOverview = "/market/detail/merged?" - fLastTradeContract = "/market/trade?" - fContractBatchTradeRecords = "/market/history/trade?" - fInsuranceAndClawback = "api/v1/contract_risk_info?" - fInsuranceBalanceHistory = "api/v1/contract_insurance_fund?" - fTieredAdjustmentFactor = "api/v1/contract_adjustfactor?" - fHisContractOpenInterest = "api/v1/contract_his_open_interest?" - fSystemStatus = "api/v1/contract_api_state?" - fTopAccountsSentiment = "api/v1/contract_elite_account_ratio?" - fTopPositionsSentiment = "api/v1/contract_elite_position_ratio?" - fLiquidationOrders = "api/v1/contract_liquidation_orders?" - fIndexKline = "/index/market/history/index?" - fBasisData = "/index/market/history/basis?" + fContractInfo = "/api/v1/contract_contract_info" + fContractIndexPrice = "/api/v1/contract_index" + fContractPriceLimitation = "/api/v1/contract_price_limit" + fContractOpenInterest = "/api/v1/contract_open_interest" + fEstimatedDeliveryPrice = "/api/v1/contract_delivery_price" + fContractMarketDepth = "/market/depth" + fContractKline = "/market/history/kline" + fMarketOverview = "/market/detail/merged" + fLastTradeContract = "/market/trade" + fContractBatchTradeRecords = "/market/history/trade" + fInsuranceAndClawback = "/api/v1/contract_risk_info" + fInsuranceBalanceHistory = "/api/v1/contract_insurance_fund" + fTieredAdjustmentFactor = "/api/v1/contract_adjustfactor" + fHisContractOpenInterest = "/api/v1/contract_his_open_interest" + fSystemStatus = "/api/v1/contract_api_state" + fTopAccountsSentiment = "/api/v1/contract_elite_account_ratio" + fTopPositionsSentiment = "/api/v1/contract_elite_position_ratio" + fLiquidationOrders = "/api/v1/contract_liquidation_orders" + fIndexKline = "/index/market/history/index" + fBasisData = "/index/market/history/basis" // Auth - fAccountData = "api/v1/contract_account_info" - fPositionInformation = "api/v1/contract_position_info" - fAllSubAccountAssets = "api/v1/contract_sub_account_list" - fSingleSubAccountAssets = "api/v1/contract_sub_account_info" - fSingleSubAccountPositions = "api/v1/contract_sub_position_info" - fFinancialRecords = "api/v1/contract_financial_record" - fSettlementRecords = "api/v1/contract_user_settlement_records" - fOrderLimitInfo = "api/v1/contract_order_limit" - fContractTradingFee = "api/v1/contract_fee" - fTransferLimitInfo = "api/v1/contract_transfer_limit" - fPositionLimitInfo = "api/v1/contract_position_limit" - fQueryAssetsAndPositions = "api/v1/contract_account_position_info" - fTransfer = "api/v1/contract_master_sub_transfer" - fTransferRecords = "api/v1/contract_master_sub_transfer_record" - fAvailableLeverage = "api/v1/contract_available_level_rate" - fOrder = "api/v1/contract_order" - fBatchOrder = "api/v1/contract_batchorder" - fCancelOrder = "api/v1/contract_cancel" - fCancelAllOrders = "api/v1/contract_cancelall" - fFlashCloseOrder = "api/v1/lightning_close_position" - fOrderInfo = "api/v1/contract_order_info" - fOrderDetails = "api/v1/contract_order_detail" - fQueryOpenOrders = "api/v1/contract_openorders" - fOrderHistory = "api/v1/contract_hisorders" - fMatchResult = "api/v1/contract_matchresults" - fTriggerOrder = "api/v1/contract_trigger_order" - fCancelTriggerOrder = "api/v1/contract_trigger_cancel" - fCancelAllTriggerOrders = "api/v1/contract_trigger_cancelall" - fTriggerOpenOrders = "api/v1/contract_trigger_openorders" - fTriggerOrderHistory = "api/v1/contract_trigger_hisorders" + fAccountData = "/api/v1/contract_account_info" + fPositionInformation = "/api/v1/contract_position_info" + fAllSubAccountAssets = "/api/v1/contract_sub_account_list" + fSingleSubAccountAssets = "/api/v1/contract_sub_account_info" + fSingleSubAccountPositions = "/api/v1/contract_sub_position_info" + fFinancialRecords = "/api/v1/contract_financial_record" + fSettlementRecords = "/api/v1/contract_user_settlement_records" + fOrderLimitInfo = "/api/v1/contract_order_limit" + fContractTradingFee = "/api/v1/contract_fee" + fTransferLimitInfo = "/api/v1/contract_transfer_limit" + fPositionLimitInfo = "/api/v1/contract_position_limit" + fQueryAssetsAndPositions = "/api/v1/contract_account_position_info" + fTransfer = "/api/v1/contract_master_sub_transfer" + fTransferRecords = "/api/v1/contract_master_sub_transfer_record" + fAvailableLeverage = "/api/v1/contract_available_level_rate" + fOrder = "/api/v1/contract_order" + fBatchOrder = "/api/v1/contract_batchorder" + fCancelOrder = "/api/v1/contract_cancel" + fCancelAllOrders = "/api/v1/contract_cancelall" + fFlashCloseOrder = "/api/v1/lightning_close_position" + fOrderInfo = "/api/v1/contract_order_info" + fOrderDetails = "/api/v1/contract_order_detail" + fQueryOpenOrders = "/api/v1/contract_openorders" + fOrderHistory = "/api/v1/contract_hisorders" + fMatchResult = "/api/v1/contract_matchresults" + fTriggerOrder = "/api/v1/contract_trigger_order" + fCancelTriggerOrder = "/api/v1/contract_trigger_cancel" + fCancelAllTriggerOrders = "/api/v1/contract_trigger_cancelall" + fTriggerOpenOrders = "/api/v1/contract_trigger_openorders" + fTriggerOrderHistory = "/api/v1/contract_trigger_hisorders" ) // FGetContractInfo gets contract info for futures @@ -85,7 +85,7 @@ func (h *HUOBI) FGetContractInfo(ctx context.Context, symbol, contractType strin params.Set("symbol", symbol) } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType") } params.Set("contract_type", contractType) @@ -97,7 +97,7 @@ func (h *HUOBI) FGetContractInfo(ctx context.Context, symbol, contractType strin } params.Set("contract_code", codeValue) } - path := fContractInfo + params.Encode() + path := common.EncodeURLValues(fContractInfo, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -112,7 +112,7 @@ func (h *HUOBI) FIndexPriceInfo(ctx context.Context, symbol currency.Code) (FCon } params.Set("symbol", codeValue) } - path := fContractIndexPrice + params.Encode() + path := common.EncodeURLValues(fContractIndexPrice, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -124,7 +124,7 @@ func (h *HUOBI) FContractPriceLimitations(ctx context.Context, symbol, contractT params.Set("symbol", symbol) } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType: %s", contractType) } params.Set("contract_type", contractType) @@ -136,7 +136,7 @@ func (h *HUOBI) FContractPriceLimitations(ctx context.Context, symbol, contractT } params.Set("contract_code", codeValue) } - path := fContractPriceLimitation + params.Encode() + path := common.EncodeURLValues(fContractPriceLimitation, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -148,7 +148,7 @@ func (h *HUOBI) FContractOpenInterest(ctx context.Context, symbol, contractType params.Set("symbol", symbol) } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType") } params.Set("contract_type", contractType) @@ -160,7 +160,7 @@ func (h *HUOBI) FContractOpenInterest(ctx context.Context, symbol, contractType } params.Set("contract_code", codeValue) } - path := fContractOpenInterest + params.Encode() + path := common.EncodeURLValues(fContractOpenInterest, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -173,7 +173,7 @@ func (h *HUOBI) FGetEstimatedDeliveryPrice(ctx context.Context, symbol currency. return resp, err } params.Set("symbol", codeValue) - path := fEstimatedDeliveryPrice + params.Encode() + path := common.EncodeURLValues(fEstimatedDeliveryPrice, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -182,13 +182,13 @@ func (h *HUOBI) FGetMarketDepth(ctx context.Context, symbol currency.Pair, dataT var resp OBData var tempData FMarketDepth params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } params.Set("symbol", symbolValue) params.Set("type", dataType) - path := fContractMarketDepth + params.Encode() + path := common.EncodeURLValues(fContractMarketDepth, params) err = h.SendHTTPRequest(ctx, exchange.RestFutures, path, &tempData) if err != nil { return resp, err @@ -213,12 +213,12 @@ func (h *HUOBI) FGetMarketDepth(ctx context.Context, symbol currency.Pair, dataT func (h *HUOBI) FGetKlineData(ctx context.Context, symbol currency.Pair, period string, size int64, startTime, endTime time.Time) (FKlineData, error) { var resp FKlineData params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } params.Set("symbol", symbolValue) - if !common.StringDataCompare(validFuturesPeriods, period) { + if !common.StringDataCompareInsensitive(validFuturesPeriods, period) { return resp, fmt.Errorf("invalid period value received") } params.Set("period", period) @@ -233,7 +233,7 @@ func (h *HUOBI) FGetKlineData(ctx context.Context, symbol currency.Pair, period params.Set("start_time", strconv.FormatInt(startTime.Unix(), 10)) params.Set("end_time", strconv.FormatInt(endTime.Unix(), 10)) } - path := fContractKline + params.Encode() + path := common.EncodeURLValues(fContractKline, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -241,12 +241,12 @@ func (h *HUOBI) FGetKlineData(ctx context.Context, symbol currency.Pair, period func (h *HUOBI) FGetMarketOverviewData(ctx context.Context, symbol currency.Pair) (FMarketOverviewData, error) { var resp FMarketOverviewData params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } params.Set("symbol", symbolValue) - path := fMarketOverview + params.Encode() + path := common.EncodeURLValues(fMarketOverview, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -254,12 +254,12 @@ func (h *HUOBI) FGetMarketOverviewData(ctx context.Context, symbol currency.Pair func (h *HUOBI) FLastTradeData(ctx context.Context, symbol currency.Pair) (FLastTradeData, error) { var resp FLastTradeData params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } params.Set("symbol", symbolValue) - path := fLastTradeContract + params.Encode() + path := common.EncodeURLValues(fLastTradeContract, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -267,7 +267,7 @@ func (h *HUOBI) FLastTradeData(ctx context.Context, symbol currency.Pair) (FLast func (h *HUOBI) FRequestPublicBatchTrades(ctx context.Context, symbol currency.Pair, size int64) (FBatchTradesForContractData, error) { var resp FBatchTradesForContractData params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } @@ -275,7 +275,7 @@ func (h *HUOBI) FRequestPublicBatchTrades(ctx context.Context, symbol currency.P if size > 1 && size < 2000 { params.Set("size", strconv.FormatInt(size, 10)) } - path := fContractBatchTradeRecords + params.Encode() + path := common.EncodeURLValues(fContractBatchTradeRecords, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -290,7 +290,7 @@ func (h *HUOBI) FQueryInsuranceAndClawbackData(ctx context.Context, symbol curre } params.Set("symbol", codeValue) } - path := fInsuranceAndClawback + params.Encode() + path := common.EncodeURLValues(fInsuranceAndClawback, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -305,7 +305,7 @@ func (h *HUOBI) FQueryHistoricalInsuranceData(ctx context.Context, symbol curren } params.Set("symbol", codeValue) } - path := fInsuranceBalanceHistory + params.Encode() + path := common.EncodeURLValues(fInsuranceBalanceHistory, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -320,7 +320,7 @@ func (h *HUOBI) FQueryTieredAdjustmentFactor(ctx context.Context, symbol currenc } params.Set("symbol", codeValue) } - path := fTieredAdjustmentFactor + params.Encode() + path := common.EncodeURLValues(fTieredAdjustmentFactor, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -331,11 +331,11 @@ func (h *HUOBI) FQueryHisOpenInterest(ctx context.Context, symbol, contractType, if symbol != "" { params.Set("symbol", symbol) } - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contract type") } params.Set("contract_type", contractType) - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period") } params.Set("period", period) @@ -347,7 +347,7 @@ func (h *HUOBI) FQueryHisOpenInterest(ctx context.Context, symbol, contractType, return resp, fmt.Errorf("invalid amountType") } params.Set("amount_type", strconv.FormatInt(validAmount, 10)) - path := fHisContractOpenInterest + params.Encode() + path := common.EncodeURLValues(fHisContractOpenInterest, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -362,7 +362,7 @@ func (h *HUOBI) FQuerySystemStatus(ctx context.Context, symbol currency.Code) (F } params.Set("symbol", codeValue) } - path := fSystemStatus + params.Encode() + path := common.EncodeURLValues(fSystemStatus, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -373,11 +373,11 @@ func (h *HUOBI) FQueryTopAccountsRatio(ctx context.Context, symbol, period strin if symbol != "" { params.Set("symbol", symbol) } - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period") } params.Set("period", period) - path := fTopAccountsSentiment + params.Encode() + path := common.EncodeURLValues(fTopAccountsSentiment, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -388,11 +388,11 @@ func (h *HUOBI) FQueryTopPositionsRatio(ctx context.Context, symbol, period stri if symbol != "" { params.Set("symbol", symbol) } - if !common.StringDataCompare(validPeriods, period) { + if !common.StringDataCompareInsensitive(validPeriods, period) { return resp, fmt.Errorf("invalid period") } params.Set("period", period) - path := fTopPositionsSentiment + params.Encode() + path := common.EncodeURLValues(fTopPositionsSentiment, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -416,7 +416,7 @@ func (h *HUOBI) FLiquidationOrders(ctx context.Context, symbol, tradeType string if pageSize != 0 { params.Set("page_size", strconv.FormatInt(pageIndex, 10)) } - path := fLiquidationOrders + params.Encode() + path := common.EncodeURLValues(fLiquidationOrders, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -424,12 +424,12 @@ func (h *HUOBI) FLiquidationOrders(ctx context.Context, symbol, tradeType string func (h *HUOBI) FIndexKline(ctx context.Context, symbol currency.Pair, period string, size int64) (FIndexKlineData, error) { var resp FIndexKlineData params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } params.Set("symbol", symbolValue) - if !common.StringDataCompare(validFuturesPeriods, period) { + if !common.StringDataCompareInsensitive(validFuturesPeriods, period) { return resp, fmt.Errorf("invalid period value received") } params.Set("period", period) @@ -437,7 +437,7 @@ func (h *HUOBI) FIndexKline(ctx context.Context, symbol currency.Pair, period st return resp, fmt.Errorf("invalid size") } params.Set("size", strconv.FormatInt(size, 10)) - path := fIndexKline + params.Encode() + path := common.EncodeURLValues(fIndexKline, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -445,24 +445,24 @@ func (h *HUOBI) FIndexKline(ctx context.Context, symbol currency.Pair, period st func (h *HUOBI) FGetBasisData(ctx context.Context, symbol currency.Pair, period, basisPriceType string, size int64) (FBasisData, error) { var resp FBasisData params := url.Values{} - symbolValue, err := h.FormatSymbol(symbol, asset.Futures) + symbolValue, err := h.formatFuturesPair(symbol) if err != nil { return resp, err } params.Set("symbol", symbolValue) - if !common.StringDataCompare(validFuturesPeriods, period) { + if !common.StringDataCompareInsensitive(validFuturesPeriods, period) { return resp, fmt.Errorf("invalid period value received") } params.Set("period", period) if basisPriceType != "" { - if common.StringDataCompare(validBasisPriceTypes, basisPriceType) { + if common.StringDataCompareInsensitive(validBasisPriceTypes, basisPriceType) { params.Set("basis_price_type", basisPriceType) } } if size > 0 && size <= 2000 { params.Set("size", strconv.FormatInt(size, 10)) } - path := fBasisData + params.Encode() + path := common.EncodeURLValues(fBasisData, params) return resp, h.SendHTTPRequest(ctx, exchange.RestFutures, path, &resp) } @@ -585,7 +585,7 @@ func (h *HUOBI) FGetOrderLimits(ctx context.Context, symbol, orderPriceType stri req["symbol"] = symbol } if orderPriceType != "" { - if !common.StringDataCompare(validFuturesOrderPriceTypes, orderPriceType) { + if !common.StringDataCompareInsensitive(validFuturesOrderPriceTypes, orderPriceType) { return resp, fmt.Errorf("invalid orderPriceType") } req["order_price_type"] = orderPriceType @@ -650,7 +650,7 @@ func (h *HUOBI) FTransfer(ctx context.Context, subUID, symbol, transferType stri req["symbol"] = symbol req["subUid"] = subUID req["amount"] = amount - if !common.StringDataCompare(validTransferType, transferType) { + if !common.StringDataCompareInsensitive(validTransferType, transferType) { return resp, fmt.Errorf("inavlid transferType received") } req["type"] = transferType @@ -664,7 +664,7 @@ func (h *HUOBI) FGetTransferRecords(ctx context.Context, symbol, transferType st if symbol != "" { req["symbol"] = symbol } - if !common.StringDataCompare(validTransferType, transferType) { + if !common.StringDataCompareInsensitive(validTransferType, transferType) { return resp, fmt.Errorf("inavlid transferType received") } req["type"] = transferType @@ -703,7 +703,7 @@ func (h *HUOBI) FOrder(ctx context.Context, contractCode currency.Pair, symbol, req["symbol"] = symbol } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType") } req["contract_type"] = contractType @@ -719,10 +719,10 @@ func (h *HUOBI) FOrder(ctx context.Context, contractCode currency.Pair, symbol, req["client_order_id"] = clientOrderID } req["direction"] = direction - if !common.StringDataCompare(validOffsetTypes, offset) { + if !common.StringDataCompareInsensitive(validOffsetTypes, offset) { return resp, fmt.Errorf("invalid offset amounts") } - if !common.StringDataCompare(validFuturesOrderPriceTypes, orderPriceType) { + if !common.StringDataCompareInsensitive(validFuturesOrderPriceTypes, orderPriceType) { return resp, fmt.Errorf("invalid orderPriceType") } req["order_price_type"] = orderPriceType @@ -753,14 +753,14 @@ func (h *HUOBI) FPlaceBatchOrder(ctx context.Context, data []fBatchOrderData) (F data[x].ContractCode = formattedPair.String() } if data[x].ContractType != "" { - if !common.StringDataCompare(validContractTypes, data[x].ContractType) { + if !common.StringDataCompareInsensitive(validContractTypes, data[x].ContractType) { return resp, fmt.Errorf("invalid contractType") } } - if !common.StringDataCompare(validOffsetTypes, data[x].Offset) { + if !common.StringDataCompareInsensitive(validOffsetTypes, data[x].Offset) { return resp, fmt.Errorf("invalid offset amounts") } - if !common.StringDataCompare(validFuturesOrderPriceTypes, data[x].OrderPriceType) { + if !common.StringDataCompareInsensitive(validFuturesOrderPriceTypes, data[x].OrderPriceType) { return resp, fmt.Errorf("invalid orderPriceType") } } @@ -792,7 +792,7 @@ func (h *HUOBI) FCancelAllOrders(ctx context.Context, contractCode currency.Pair req["symbol"] = symbol } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType") } req["contract_type"] = contractType @@ -813,7 +813,7 @@ func (h *HUOBI) FFlashCloseOrder(ctx context.Context, contractCode currency.Pair req := make(map[string]interface{}) req["symbol"] = symbol if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType") } req["contract_type"] = contractType @@ -831,7 +831,7 @@ func (h *HUOBI) FFlashCloseOrder(ctx context.Context, contractCode currency.Pair req["client_order_id"] = clientOrderID } if orderPriceType != "" { - if !common.StringDataCompare(validOPTypes, orderPriceType) { + if !common.StringDataCompareInsensitive(validOPTypes, orderPriceType) { return resp, fmt.Errorf("invalid orderPriceType") } req["orderPriceType"] = orderPriceType @@ -985,7 +985,7 @@ func (h *HUOBI) FPlaceTriggerOrder(ctx context.Context, contractCode currency.Pa req["symbol"] = symbol } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, fmt.Errorf("invalid contractType: %s", contractType) } req["contract_type"] = contractType @@ -1003,7 +1003,7 @@ func (h *HUOBI) FPlaceTriggerOrder(ctx context.Context, contractCode currency.Pa } req["trigger_type"] = tType req["direction"] = direction - if !common.StringDataCompare(validOffsetTypes, offset) { + if !common.StringDataCompareInsensitive(validOffsetTypes, offset) { return resp, fmt.Errorf("invalid offset") } req["offset"] = offset @@ -1011,7 +1011,7 @@ func (h *HUOBI) FPlaceTriggerOrder(ctx context.Context, contractCode currency.Pa req["volume"] = volume req["lever_rate"] = leverageRate req["order_price"] = orderPrice - if !common.StringDataCompare(validOrderPriceType, orderPriceType) { + if !common.StringDataCompareInsensitive(validOrderPriceType, orderPriceType) { return resp, fmt.Errorf("invalid order price type") } req["order_price_type"] = orderPriceType @@ -1040,7 +1040,7 @@ func (h *HUOBI) FCancelAllTriggerOrders(ctx context.Context, contractCode curren req["contract_code"] = codeValue } if contractType != "" { - if !common.StringDataCompare(validContractTypes, contractType) { + if !common.StringDataCompareInsensitive(validContractTypes, contractType) { return resp, nil } req["contract_type"] = contractType @@ -1115,18 +1115,22 @@ func (h *HUOBI) FuturesAuthenticatedHTTPRequest(ctx context.Context, ep exchange if err != nil { return err } + if ep == exchange.RestFutures && ePoint[len(ePoint)-1] == '/' { + // prevent signature errors for non-standard paths until we can + // have a method to force update endpoints + ePoint = ePoint[:len(ePoint)-1] + } if values == nil { values = url.Values{} } var tempResp json.RawMessage newRequest := func() (*request.Item, error) { - now := time.Now() values.Set("AccessKeyId", h.API.Credentials.Key) values.Set("SignatureMethod", "HmacSHA256") values.Set("SignatureVersion", "2") - values.Set("Timestamp", now.UTC().Format("2006-01-02T15:04:05")) - sigPath := fmt.Sprintf("%s\napi.hbdm.com\n/%s\n%s", + values.Set("Timestamp", time.Now().UTC().Format("2006-01-02T15:04:05")) + sigPath := fmt.Sprintf("%s\napi.hbdm.com\n%s\n%s", method, endpoint, values.Encode()) headers := make(map[string]string) if method == http.MethodGet { @@ -1142,10 +1146,8 @@ func (h *HUOBI) FuturesAuthenticatedHTTPRequest(ctx context.Context, ep exchange if err != nil { return nil, err } - sigValues := url.Values{} - sigValues.Add("Signature", crypto.Base64Encode(hmac)) - urlPath := - common.EncodeURLValues(ePoint+endpoint, values) + "&" + sigValues.Encode() + values.Add("Signature", crypto.Base64Encode(hmac)) + urlPath := common.EncodeURLValues(ePoint+endpoint, values) var body io.Reader var payload []byte if data != nil { @@ -1176,8 +1178,13 @@ func (h *HUOBI) FuturesAuthenticatedHTTPRequest(ctx context.Context, ep exchange var errCap errorCapture if err := json.Unmarshal(tempResp, &errCap); err == nil { - if errCap.Code != 200 && errCap.ErrMsg != "" { - return errors.New(errCap.ErrMsg) + if errCap.ErrMsgType1 != "" { + return fmt.Errorf("error code: %v error message: %s", errCap.CodeType1, + errors.New(errCap.ErrMsgType1)) + } + if errCap.ErrMsgType2 != "" { + return fmt.Errorf("error code: %v error message: %s", errCap.CodeType2, + errors.New(errCap.ErrMsgType2)) } } return json.Unmarshal(tempResp, result) @@ -1193,3 +1200,11 @@ func (h *HUOBI) formatFuturesCode(p currency.Code) (string, error) { } return p.Lower().String(), nil } + +// formatFuturesPair handles pairs in the format as "BTC-NW" and "BTC210827" +func (h *HUOBI) formatFuturesPair(p currency.Pair) (string, error) { + if common.StringDataCompareInsensitive(validContractShortTypes, p.Quote.String()) { + return p.Format("_", true).String(), nil + } + return h.FormatSymbol(p, asset.Futures) +} diff --git a/exchanges/huobi/huobi_test.go b/exchanges/huobi/huobi_test.go index f52a3004..25931280 100644 --- a/exchanges/huobi/huobi_test.go +++ b/exchanges/huobi/huobi_test.go @@ -5,6 +5,7 @@ import ( "log" "os" "strconv" + "strings" "testing" "time" @@ -30,8 +31,11 @@ const ( testSymbol = "btcusdt" ) -var h HUOBI -var wsSetupRan bool +var ( + h HUOBI + wsSetupRan bool + futuresTestPair = currency.NewPair(currency.BTC, currency.NewCode("NQ")) +) func TestMain(m *testing.M) { h.SetDefaults() @@ -79,6 +83,24 @@ func setupWsTests(t *testing.T) { wsSetupRan = true } +func TestGetCurrenciesIncludingChains(t *testing.T) { + t.Parallel() + r, err := h.GetCurrenciesIncludingChains(context.Background(), currency.Code{}) + if err != nil { + t.Error(err) + } + if len(r) == 1 { + t.Error("expected 1 result") + } + r, err = h.GetCurrenciesIncludingChains(context.Background(), currency.USDT) + if err != nil { + t.Error(err) + } + if len(r) < 1 { + t.Error("expected >= 1 results") + } +} + func TestFGetContractInfo(t *testing.T) { t.Parallel() _, err := h.FGetContractInfo(context.Background(), "", "", currency.Pair{}) @@ -123,11 +145,7 @@ func TestFGetEstimatedDeliveryPrice(t *testing.T) { func TestFGetMarketDepth(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NW") - if err != nil { - t.Error(err) - } - _, err = h.FGetMarketDepth(context.Background(), cp, "step5") + _, err := h.FGetMarketDepth(context.Background(), futuresTestPair, "step5") if err != nil { t.Error(err) } @@ -135,12 +153,7 @@ func TestFGetMarketDepth(t *testing.T) { func TestFGetKlineData(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NW") - if err != nil { - t.Error(err) - } - _, err = h.FGetKlineData(context.Background(), - cp, "5min", 5, time.Now().Add(-time.Minute*5), time.Now()) + _, err := h.FGetKlineData(context.Background(), futuresTestPair, "5min", 5, time.Now().Add(-time.Minute*5), time.Now()) if err != nil { t.Error(err) } @@ -148,11 +161,7 @@ func TestFGetKlineData(t *testing.T) { func TestFGetMarketOverviewData(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NW") - if err != nil { - t.Error(err) - } - _, err = h.FGetMarketOverviewData(context.Background(), cp) + _, err := h.FGetMarketOverviewData(context.Background(), futuresTestPair) if err != nil { t.Error(err) } @@ -160,11 +169,7 @@ func TestFGetMarketOverviewData(t *testing.T) { func TestFLastTradeData(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NW") - if err != nil { - t.Error(err) - } - _, err = h.FLastTradeData(context.Background(), cp) + _, err := h.FLastTradeData(context.Background(), futuresTestPair) if err != nil { t.Error(err) } @@ -172,11 +177,7 @@ func TestFLastTradeData(t *testing.T) { func TestFRequestPublicBatchTrades(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NQ") - if err != nil { - t.Error(err) - } - a, err := h.FRequestPublicBatchTrades(context.Background(), cp, 50) + a, err := h.FRequestPublicBatchTrades(context.Background(), futuresTestPair, 50) if err != nil { t.Error(err) } @@ -253,11 +254,7 @@ func TestFLiquidationOrders(t *testing.T) { func TestFIndexKline(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NQ") - if err != nil { - t.Error(err) - } - _, err = h.FIndexKline(context.Background(), cp, "5min", 5) + _, err := h.FIndexKline(context.Background(), futuresTestPair, "5min", 5) if err != nil { t.Error(err) } @@ -265,11 +262,7 @@ func TestFIndexKline(t *testing.T) { func TestFGetBasisData(t *testing.T) { t.Parallel() - cp, err := currency.NewPairFromString("BTC_NQ") - if err != nil { - t.Error(err) - } - _, err = h.FGetBasisData(context.Background(), cp, "5min", "open", 3) + _, err := h.FGetBasisData(context.Background(), futuresTestPair, "5min", "open", 3) if err != nil { t.Error(err) } @@ -682,11 +675,11 @@ func TestFetchTradablePairs(t *testing.T) { func TestUpdateTickerSpot(t *testing.T) { t.Parallel() - sp, err := currency.NewPairFromString("BTC_USDT") - if err != nil { - t.Error(err) + _, err := h.UpdateTicker(context.Background(), currency.NewPairWithDelimiter("INV", "ALID", "-"), asset.Spot) + if err == nil { + t.Error("exepcted invalid pair") } - _, err = h.UpdateTicker(context.Background(), sp, asset.Spot) + _, err = h.UpdateTicker(context.Background(), currency.NewPairWithDelimiter("BTC", "USDT", "_"), asset.Spot) if err != nil { t.Error(err) } @@ -694,11 +687,11 @@ func TestUpdateTickerSpot(t *testing.T) { func TestUpdateTickerCMF(t *testing.T) { t.Parallel() - cp1, err := currency.NewPairFromString("BTC-USD") - if err != nil { - t.Error(err) + _, err := h.UpdateTicker(context.Background(), currency.NewPairWithDelimiter("INV", "ALID", "_"), asset.CoinMarginedFutures) + if err == nil { + t.Error("exepcted invalid contract code") } - _, err = h.UpdateTicker(context.Background(), cp1, asset.CoinMarginedFutures) + _, err = h.UpdateTicker(context.Background(), currency.NewPairWithDelimiter("BTC", "USD", "_"), asset.CoinMarginedFutures) if err != nil { t.Error(err) } @@ -778,7 +771,7 @@ func TestUpdateOrderbookFuture(t *testing.T) { if err != nil { t.Error(err) } - _, err = h.UpdateOrderbook(context.Background(), cp2, asset.Futures) + _, err = h.UpdateOrderbook(context.Background(), cp2, asset.CoinMarginedFutures) if err != nil { t.Error(err) } @@ -1077,8 +1070,7 @@ func TestGetSystemStatusInfo(t *testing.T) { if err != nil { t.Error(err) } - _, err = h.GetSystemStatusInfo(context.Background(), - cp, "5min", "cryptocurrency", 50) + _, err = h.GetSystemStatusInfo(context.Background(), cp) if err != nil { t.Error(err) } @@ -1801,7 +1793,7 @@ func TestSpotNewOrder(t *testing.T) { } arg := SpotNewOrderRequestParams{ Symbol: cp, - AccountID: 1, + AccountID: 1997024, Amount: 0.01, Price: 10.1, Type: SpotNewOrderRequestTypeBuyLimit, @@ -2019,7 +2011,7 @@ func TestSubmitOrder(t *testing.T) { }, Side: order.Buy, Type: order.Limit, - Price: 1, + Price: 5, Amount: 1, ClientID: strconv.FormatInt(accounts[0].ID, 10), AssetType: asset.Spot, @@ -2125,6 +2117,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: h.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -2173,8 +2166,17 @@ func TestWithdrawInternationalBank(t *testing.T) { } func TestQueryDepositAddress(t *testing.T) { - _, err := h.QueryDepositAddress(context.Background(), - currency.BTC.Lower().String()) + _, err := h.QueryDepositAddress(context.Background(), currency.USDT) + if !areTestAPIKeysSet() && err == nil { + t.Error("Expecting an error when no keys are set") + } + if areTestAPIKeysSet() && err != nil { + t.Error(err) + } +} + +func TestGetDepositAddress(t *testing.T) { + _, err := h.GetDepositAddress(context.Background(), currency.USDT, "", "uSdTeRc20") if !areTestAPIKeysSet() && err == nil { t.Error("Expecting an error when no keys are set") } @@ -2677,3 +2679,44 @@ func TestGetHistoricTrades(t *testing.T) { t.Error(err) } } + +func TestGetAvailableTransferChains(t *testing.T) { + t.Parallel() + r, err := h.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Fatal(err) + } + if len(r) < 2 { + t.Error("expected more than one result") + } +} + +func TestFormatFuturesPair(t *testing.T) { + r, err := h.formatFuturesPair(futuresTestPair) + if err != nil { + t.Fatal(err) + } + if r != "BTC_NQ" { + t.Errorf("expected BTC_NQ, got %s", r) + } + availInstruments, err := h.FetchTradablePairs(context.Background(), asset.Futures) + if err != nil { + t.Fatal(err) + } + if len(availInstruments) == 0 { + t.Fatal("expected instruments, got 0") + } + // test getting a tradable pair in the format of BTC210827 but make it lower + // case to test correct formatting + p, err := currency.NewPairFromString(strings.ToLower(availInstruments[0])) + if err != nil { + t.Fatal(err) + } + r, err = h.formatFuturesPair(p) + if err != nil { + t.Fatal(err) + } + if r != availInstruments[0] { + t.Errorf("expected %s, got %s", availInstruments[0], r) + } +} diff --git a/exchanges/huobi/huobi_types.go b/exchanges/huobi/huobi_types.go index 3d275cce..ba835386 100644 --- a/exchanges/huobi/huobi_types.go +++ b/exchanges/huobi/huobi_types.go @@ -6,10 +6,12 @@ import ( ) type errorCapture struct { - Status string `json:"status"` - Code int64 `json:"err_code"` - ErrMsg string `json:"err_msg"` - Timestamp int64 `json:"ts"` + Status string `json:"status"` + CodeType1 interface{} `json:"err-code"` // can be either a string or int depending on the endpoint + ErrMsgType1 string `json:"err-msg"` + CodeType2 interface{} `json:"err_code"` + ErrMsgType2 string `json:"err_msg"` + Timestamp int64 `json:"ts"` } // MarketSummary24Hr stores past 24hr market summary data of a given symbol @@ -27,6 +29,35 @@ type MarketSummary24Hr struct { } } +// CurrenciesChainData stores currency and chain info +type CurrenciesChainData struct { + Currency string `json:"currency"` + AssetType uint8 `json:"assetType"` + InstStatus string `json:"instStatus"` + ChainData []struct { + Chain string `json:"chain"` + DisplayName string `json:"displayName"` + BaseChain string `json:"baseChain"` + BaseChainProtocol string `json:"baseChainProtocol"` + IsDynamic bool `json:"isDynamic"` + NumberOfConfirmations uint16 `json:"numOfConfirmations"` + NumberOfFastConfirmations uint16 `json:"numOfFastConfirmations"` + DepositStatus string `json:"depositStatus"` + MinimumDepositAmount float64 `json:"minDepositAmt,string"` + WithdrawStatus string `json:"withdrawStatus"` + MinimumWithdrawalAmount float64 `json:"minWithdrawAmt,string"` + WithdrawPrecision int16 `json:"withdrawPrecision"` + MaximumWithdrawAmount float64 `json:"maxWithdrawwAmt,string"` + WithdrawQuotaPerDay float64 `json:"withdrawQuotaPerDay,string"` + WithdrawQuotaPerYear float64 `json:"withdrawQuotaPerYear,string"` + WithdrawQuotaTotal float64 `json:"withdrawQuotaTotal,string"` + WithdrawFeeType string `json:"withdrawFeeType"` + TransactFeeWithdraw float64 `json:"transactFeeWithdraw,string"` + AddressWithTag bool `json:"addrWithTag"` + AddressDepositTag bool `json:"addrDepositTag"` + } `json:"chains"` +} + // WsKlineData stores kline data for futures and swap websocket type WsKlineData struct { Channel string `json:"ch"` @@ -699,6 +730,7 @@ type SpotNewOrderRequestParams struct { // DepositAddress stores the users deposit address info type DepositAddress struct { + UserID int64 `json:"userId"` Currency string `json:"currency"` Address string `json:"address"` AddressTag string `json:"addressTag"` @@ -1023,21 +1055,6 @@ type WsPong struct { Pong int64 `json:"pong"` } -type wsKlineResponse struct { - Data []struct { - Amount float64 `json:"amount"` - Close float64 `json:"close"` - Count float64 `json:"count"` - High float64 `json:"high"` - ID int64 `json:"id"` - Low float64 `json:"low"` - Open float64 `json:"open"` - Volume float64 `json:"vol"` - } `json:"data"` - Rep string `json:"rep"` - Status string `json:"status"` -} - type authenticationPing struct { OP string `json:"op"` TS int64 `json:"ts"` @@ -1127,6 +1144,10 @@ var ( "this_week", "next_week", "quarter", "next_quarter", } + validContractShortTypes = []string{ + "cw", "nw", "cq", "nq", + } + validFuturesPeriods = []string{ "1min", "5min", "15min", "30min", "60min", "1hour", "4hour", "1day", } diff --git a/exchanges/huobi/huobi_wrapper.go b/exchanges/huobi/huobi_wrapper.go index 2547edad..8afd3e4f 100644 --- a/exchanges/huobi/huobi_wrapper.go +++ b/exchanges/huobi/huobi_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -78,7 +79,6 @@ func (h *HUOBI) SetDefaults() { futures := currency.PairStore{ RequestFormat: ¤cy.PairFormat{ Uppercase: true, - Delimiter: currency.UnderscoreDelimiter, }, ConfigFormat: ¤cy.PairFormat{ Uppercase: true, @@ -102,20 +102,22 @@ func (h *HUOBI) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerFetching: true, - KlineFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - GetOrder: true, - GetOrders: true, - CancelOrders: true, - CancelOrder: true, - SubmitOrder: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - TradeFee: true, + TickerFetching: true, + KlineFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + GetOrder: true, + GetOrders: true, + CancelOrders: true, + CancelOrder: true, + SubmitOrder: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + TradeFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ KlineFetching: true, @@ -162,7 +164,7 @@ func (h *HUOBI) SetDefaults() { h.API.Endpoints = h.NewEndpoints() err = h.API.Endpoints.SetDefaultEndpoints(map[exchange.URL]string{ exchange.RestSpot: huobiAPIURL, - exchange.RestFutures: huobiURL, + exchange.RestFutures: huobiFuturesURL, exchange.RestCoinMargined: huobiFuturesURL, exchange.WebsocketSpot: wsMarketURL, }) @@ -1244,9 +1246,26 @@ func (h *HUOBI) GetOrderInfo(ctx context.Context, orderID string, pair currency. } // GetDepositAddress returns a deposit address for a specified currency -func (h *HUOBI) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - resp, err := h.QueryDepositAddress(ctx, cryptocurrency.Lower().String()) - return resp.Address, err +func (h *HUOBI) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { + resp, err := h.QueryDepositAddress(ctx, cryptocurrency) + if err != nil { + return nil, err + } + + for x := range resp { + if chain != "" && strings.EqualFold(resp[x].Chain, chain) { + return &deposit.Address{ + Address: resp[x].Address, + Tag: resp[x].AddressTag, + }, nil + } else if chain == "" && strings.EqualFold(resp[x].Currency, cryptocurrency.String()) { + return &deposit.Address{ + Address: resp[x].Address, + Tag: resp[x].AddressTag, + }, nil + } + } + return nil, fmt.Errorf("unable to match deposit address currency or chain") } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -1259,6 +1278,7 @@ func (h *HUOBI) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequest withdrawRequest.Currency, withdrawRequest.Crypto.Address, withdrawRequest.Crypto.AddressTag, + withdrawRequest.Crypto.Chain, withdrawRequest.Amount, withdrawRequest.Crypto.FeeAmount) if err != nil { @@ -1395,6 +1415,7 @@ func (h *HUOBI) GetActiveOrders(ctx context.Context, req *order.GetOrdersRequest if err != nil { return orders, err } + var orderVars OrderVars for x := range openOrders.Data.Orders { orderVars, err = compatibleVars(openOrders.Data.Orders[x].Direction, @@ -1424,6 +1445,8 @@ func (h *HUOBI) GetActiveOrders(ctx context.Context, req *order.GetOrdersRequest Pair: p, }) } + currentPage++ + done = currentPage == openOrders.Data.TotalPage } } case asset.Futures: @@ -1464,6 +1487,8 @@ func (h *HUOBI) GetActiveOrders(ctx context.Context, req *order.GetOrdersRequest Pair: p, }) } + currentPage++ + done = currentPage == openOrders.Data.TotalPage } } } @@ -1562,9 +1587,7 @@ func (h *HUOBI) GetOrderHistory(ctx context.Context, req *order.GetOrdersRequest }) } currentPage++ - if currentPage == orderHistory.Data.TotalPage { - done = true - } + done = currentPage == orderHistory.Data.TotalPage } } case asset.Futures: @@ -1623,9 +1646,7 @@ func (h *HUOBI) GetOrderHistory(ctx context.Context, req *order.GetOrdersRequest }) } currentPage++ - if currentPage == openOrders.Data.TotalPage { - done = true - } + done = currentPage == openOrders.Data.TotalPage } } } @@ -1762,3 +1783,22 @@ func compatibleVars(side, orderPriceType string, status int64) (OrderVars, error } return resp, nil } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (h *HUOBI) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + chains, err := h.GetCurrenciesIncludingChains(ctx, cryptocurrency) + if err != nil { + return nil, err + } + + if len(chains) == 0 { + return nil, errors.New("chain data isn't populated") + } + + var availableChains []string + for x := range chains[0].ChainData { + availableChains = append(availableChains, chains[0].ChainData[x].Chain) + } + return availableChains, nil +} diff --git a/exchanges/interfaces.go b/exchanges/interfaces.go index 09b51e06..654cbef8 100644 --- a/exchanges/interfaces.go +++ b/exchanges/interfaces.go @@ -10,6 +10,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" "github.com/thrasher-corp/gocryptotrader/exchanges/currencystate" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -59,7 +60,8 @@ type IBotExchange interface { CancelBatchOrders(ctx context.Context, o []order.Cancel) (order.CancelBatchResponse, error) CancelAllOrders(ctx context.Context, orders *order.Cancel) (order.CancelAllResponse, error) GetOrderInfo(ctx context.Context, orderID string, pair currency.Pair, assetType asset.Item) (order.Detail, error) - GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, accountID string) (string, error) + GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, accountID, chain string) (*deposit.Address, error) + GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) GetOrderHistory(ctx context.Context, getOrdersRequest *order.GetOrdersRequest) ([]order.Detail, error) GetWithdrawalsHistory(ctx context.Context, code currency.Code) ([]WithdrawalHistory, error) GetActiveOrders(ctx context.Context, getOrdersRequest *order.GetOrdersRequest) ([]order.Detail, error) diff --git a/exchanges/itbit/itbit_test.go b/exchanges/itbit/itbit_test.go index 6f18c02b..82bd880b 100644 --- a/exchanges/itbit/itbit_test.go +++ b/exchanges/itbit/itbit_test.go @@ -396,6 +396,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: i.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -442,7 +443,7 @@ func TestWithdrawInternationalBank(t *testing.T) { } func TestGetDepositAddress(t *testing.T) { - _, err := i.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := i.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error cannot be nil") } diff --git a/exchanges/itbit/itbit_wrapper.go b/exchanges/itbit/itbit_wrapper.go index b79e51c0..a6b87812 100644 --- a/exchanges/itbit/itbit_wrapper.go +++ b/exchanges/itbit/itbit_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -480,8 +481,8 @@ func (i *ItBit) GetOrderInfo(ctx context.Context, orderID string, pair currency. // NOTE: This has not been implemented due to the fact you need to generate a // a specific wallet ID and they restrict the amount of deposit address you can // request limiting them to 2. -func (i *ItBit) GetDepositAddress(_ context.Context, _ currency.Code, _ string) (string, error) { - return "", common.ErrNotYetImplemented +func (i *ItBit) GetDepositAddress(_ context.Context, _ currency.Code, _, _ string) (*deposit.Address, error) { + return nil, common.ErrNotYetImplemented } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/kraken/kraken.go b/exchanges/kraken/kraken.go index ed927dad..ee5a7785 100644 --- a/exchanges/kraken/kraken.go +++ b/exchanges/kraken/kraken.go @@ -1071,8 +1071,13 @@ func (k *Kraken) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.U } var errCap SpotAuthError if err = json.Unmarshal(interim, &errCap); err == nil { - if len(errCap.Error) != 0 { - return errors.New(errCap.Error[0]) + if errCap.Error != nil { + switch e := errCap.Error.(type) { + case []string: + return errors.New(e[0]) + case string: + return errors.New(e) + } } } return json.Unmarshal(interim, result) @@ -1148,7 +1153,7 @@ func calculateTradingFee(currency string, feePair map[string]TradeVolumeFee, pur } // GetCryptoDepositAddress returns a deposit address for a cryptocurrency -func (k *Kraken) GetCryptoDepositAddress(ctx context.Context, method, code string) (string, error) { +func (k *Kraken) GetCryptoDepositAddress(ctx context.Context, method, code string, createNew bool) ([]DepositAddress, error) { var resp = struct { Error []string `json:"error"` Result []DepositAddress `json:"result"` @@ -1158,16 +1163,19 @@ func (k *Kraken) GetCryptoDepositAddress(ctx context.Context, method, code strin values.Set("asset", code) values.Set("method", method) + if createNew { + values.Set("new", "1") + } + err := k.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, krakenDepositAddresses, values, &resp) if err != nil { - return "", err + return nil, err } - for _, a := range resp.Result { - return a.Address, nil + if len(resp.Result) == 0 { + return nil, errors.New("no addresses returned") } - - return "", errors.New("no addresses returned") + return resp.Result, nil } // WithdrawStatus gets the status of recent withdrawals diff --git a/exchanges/kraken/kraken_test.go b/exchanges/kraken/kraken_test.go index 37f7a985..3753ddaf 100644 --- a/exchanges/kraken/kraken_test.go +++ b/exchanges/kraken/kraken_test.go @@ -560,6 +560,18 @@ func TestGetBalance(t *testing.T) { } } +// TestGetTradeBalance API endpoint test +func TestGetDepositMethods(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("no api keys set") + } + _, err := k.GetDepositMethods(context.Background(), "USDT") + if err != nil { + t.Error(err) + } +} + // TestGetTradeBalance API endpoint test func TestGetTradeBalance(t *testing.T) { t.Parallel() @@ -1082,16 +1094,34 @@ func TestWithdrawInternationalBank(t *testing.T) { } } +func TestGetCryptoDepositAddress(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("API keys not set") + } + _, err := k.GetCryptoDepositAddress(context.Background(), "Bitcoin", "XBT", false) + if err != nil { + t.Error(err) + } + if !canManipulateRealOrders { + t.Skip("canManipulateRealOrders not set, skipping test") + } + _, err = k.GetCryptoDepositAddress(context.Background(), "Bitcoin", "XBT", true) + if err != nil { + t.Error(err) + } +} + // TestGetDepositAddress wrapper test func TestGetDepositAddress(t *testing.T) { t.Parallel() if areTestAPIKeysSet() { - _, err := k.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := k.GetDepositAddress(context.Background(), currency.USDT, "", "") if err != nil { t.Error("GetDepositAddress() error", err) } } else { - _, err := k.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := k.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error can not be nil") } diff --git a/exchanges/kraken/kraken_types.go b/exchanges/kraken/kraken_types.go index 65f4ba03..21abfa20 100644 --- a/exchanges/kraken/kraken_types.go +++ b/exchanges/kraken/kraken_types.go @@ -90,7 +90,7 @@ type AuthErrorData struct { // SpotAuthError stores authenticated error messages type SpotAuthError struct { - Error []string `json:"error"` + Error interface{} `json:"error"` // can be a []string or string } // Asset holds asset information @@ -456,9 +456,10 @@ var WithdrawalFees = map[currency.Code]float64{ // DepositAddress defines a deposit address type DepositAddress struct { - Address string `json:"address"` - ExpireTime int64 `json:"expiretm,string"` - New bool `json:"new"` + Address string `json:"address"` + ExpireTime interface{} `json:"expiretm"` // this is an int when new is specified + Tag string `json:"tag"` + New bool `json:"new"` } // WithdrawStatusResponse defines a withdrawal status response diff --git a/exchanges/kraken/kraken_wrapper.go b/exchanges/kraken/kraken_wrapper.go index 3549a620..621e17b7 100644 --- a/exchanges/kraken/kraken_wrapper.go +++ b/exchanges/kraken/kraken_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -104,27 +105,29 @@ func (k *Kraken) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerBatching: true, - TickerFetching: true, - KlineFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - GetOrder: true, - GetOrders: true, - CancelOrder: true, - SubmitOrder: true, - UserTradeHistory: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - FiatDeposit: true, - FiatWithdraw: true, - TradeFee: true, - FiatDepositFee: true, - FiatWithdrawalFee: true, - CryptoDepositFee: true, - CryptoWithdrawalFee: true, + TickerBatching: true, + TickerFetching: true, + KlineFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + GetOrder: true, + GetOrders: true, + CancelOrder: true, + SubmitOrder: true, + UserTradeHistory: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + FiatDeposit: true, + FiatWithdraw: true, + TradeFee: true, + FiatDepositFee: true, + FiatWithdrawalFee: true, + CryptoDepositFee: true, + CryptoWithdrawalFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ TickerFetching: true, @@ -975,19 +978,33 @@ func (k *Kraken) GetOrderInfo(ctx context.Context, orderID string, pair currency } // GetDepositAddress returns a deposit address for a specified currency -func (k *Kraken) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - methods, err := k.GetDepositMethods(ctx, cryptocurrency.String()) +func (k *Kraken) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { + if chain == "" { + methods, err := k.GetDepositMethods(ctx, cryptocurrency.String()) + if err != nil { + return nil, err + } + if len(methods) == 0 { + return nil, errors.New("unable to get any deposit methods") + } + chain = methods[0].Method + } + + depositAddr, err := k.GetCryptoDepositAddress(ctx, chain, cryptocurrency.String(), false) if err != nil { - return "", err + if strings.Contains(err.Error(), "no addresses returned") { + depositAddr, err = k.GetCryptoDepositAddress(ctx, chain, cryptocurrency.String(), true) + if err != nil { + return nil, err + } + } else { + return nil, err + } } - var method string - for _, m := range methods { - method = m.Method - } - if method == "" { - return "", errors.New("method not found") - } - return k.GetCryptoDepositAddress(ctx, method, cryptocurrency.String()) + return &deposit.Address{ + Address: depositAddr[0].Address, + Tag: depositAddr[0].Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal @@ -1501,3 +1518,18 @@ func compatibleFillOrderType(fillType string) (order.Type, error) { } return resp, nil } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (k *Kraken) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + methods, err := k.GetDepositMethods(ctx, cryptocurrency.String()) + if err != nil { + return nil, err + } + + var availableChains []string + for x := range methods { + availableChains = append(availableChains, methods[x].Method) + } + return availableChains, nil +} diff --git a/exchanges/lbank/lbank_wrapper.go b/exchanges/lbank/lbank_wrapper.go index da792166..d5e4ce62 100644 --- a/exchanges/lbank/lbank_wrapper.go +++ b/exchanges/lbank/lbank_wrapper.go @@ -15,6 +15,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -611,8 +612,8 @@ func (l *Lbank) GetOrderInfo(ctx context.Context, orderID string, pair currency. } // GetDepositAddress returns a deposit address for a specified currency -func (l *Lbank) GetDepositAddress(ctx context.Context, c currency.Code, accountID string) (string, error) { - return "", common.ErrFunctionNotSupported +func (l *Lbank) GetDepositAddress(_ context.Context, _ currency.Code, _, _ string) (*deposit.Address, error) { + return nil, common.ErrFunctionNotSupported } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -622,9 +623,10 @@ func (l *Lbank) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequest return nil, err } resp, err := l.Withdraw(ctx, - withdrawRequest.Crypto.Address, withdrawRequest.Currency.String(), + withdrawRequest.Crypto.Address, + withdrawRequest.Currency.String(), strconv.FormatFloat(withdrawRequest.Amount, 'f', -1, 64), - "", + withdrawRequest.Crypto.AddressTag, withdrawRequest.Description, "") if err != nil { diff --git a/exchanges/localbitcoins/localbitcoins_test.go b/exchanges/localbitcoins/localbitcoins_test.go index ff80cfb9..57c0abaf 100644 --- a/exchanges/localbitcoins/localbitcoins_test.go +++ b/exchanges/localbitcoins/localbitcoins_test.go @@ -357,6 +357,7 @@ func TestWithdraw(t *testing.T) { t.Parallel() withdrawCryptoRequest := withdraw.Request{ + Exchange: l.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -408,7 +409,7 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() - _, err := l.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := l.GetDepositAddress(context.Background(), currency.BTC, "", "") switch { case areTestAPIKeysSet() && err != nil && !mockTests: t.Error("GetDepositAddress() error", err) diff --git a/exchanges/localbitcoins/localbitcoins_wrapper.go b/exchanges/localbitcoins/localbitcoins_wrapper.go index 1f63ec38..8f8d41b2 100644 --- a/exchanges/localbitcoins/localbitcoins_wrapper.go +++ b/exchanges/localbitcoins/localbitcoins_wrapper.go @@ -17,6 +17,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -467,13 +468,18 @@ func (l *LocalBitcoins) GetOrderInfo(ctx context.Context, orderID string, pair c } // GetDepositAddress returns a deposit address for a specified currency -func (l *LocalBitcoins) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (l *LocalBitcoins) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { if !strings.EqualFold(currency.BTC.String(), cryptocurrency.String()) { - return "", fmt.Errorf("%s does not have support for currency %s, it only supports bitcoin", + return nil, fmt.Errorf("%s does not have support for currency %s, it only supports bitcoin", l.Name, cryptocurrency) } - return l.GetWalletAddress(ctx) + depositAddr, err := l.GetWalletAddress(ctx) + if err != nil { + return nil, err + } + + return &deposit.Address{Address: depositAddr}, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/okcoin/okcoin_test.go b/exchanges/okcoin/okcoin_test.go index e4cbbc21..20c01cda 100644 --- a/exchanges/okcoin/okcoin_test.go +++ b/exchanges/okcoin/okcoin_test.go @@ -1032,6 +1032,7 @@ func TestWithdraw(t *testing.T) { TestSetRealOrderDefaults(t) withdrawCryptoRequest := withdraw.Request{ + Exchange: o.Name, Crypto: withdraw.CryptoRequest{ Address: core.BitcoinDonationAddress, FeeAmount: 1, diff --git a/exchanges/okex/okex_test.go b/exchanges/okex/okex_test.go index 0f1c9e25..ef616ab3 100644 --- a/exchanges/okex/okex_test.go +++ b/exchanges/okex/okex_test.go @@ -1905,6 +1905,7 @@ func TestWithdraw(t *testing.T) { TestSetRealOrderDefaults(t) t.Parallel() withdrawCryptoRequest := withdraw.Request{ + Exchange: o.Name, Crypto: withdraw.CryptoRequest{ Address: core.BitcoinDonationAddress, FeeAmount: 1, diff --git a/exchanges/okgroup/okgroup.go b/exchanges/okgroup/okgroup.go index 69a38a13..a6de9d2b 100644 --- a/exchanges/okgroup/okgroup.go +++ b/exchanges/okgroup/okgroup.go @@ -575,8 +575,7 @@ func (o *OKGroup) SendHTTPRequest(ctx context.Context, ep exchange.URL, httpMeth var intermediary json.RawMessage newRequest := func() (*request.Item, error) { - now := time.Now() - utcTime := now.UTC().Format(time.RFC3339) + utcTime := time.Now().UTC().Format(time.RFC3339) payload := []byte("") if data != nil { diff --git a/exchanges/okgroup/okgroup_wrapper.go b/exchanges/okgroup/okgroup_wrapper.go index 74f3264d..cbbe523f 100644 --- a/exchanges/okgroup/okgroup_wrapper.go +++ b/exchanges/okgroup/okgroup_wrapper.go @@ -15,6 +15,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -426,12 +427,15 @@ func (o *OKGroup) GetOrderInfo(ctx context.Context, orderID string, pair currenc } // GetDepositAddress returns a deposit address for a specified currency -func (o *OKGroup) GetDepositAddress(ctx context.Context, p currency.Code, _ string) (string, error) { +func (o *OKGroup) GetDepositAddress(ctx context.Context, p currency.Code, _, _ string) (*deposit.Address, error) { wallet, err := o.GetAccountDepositAddressForCurrency(ctx, p.Lower().String()) if err != nil || len(wallet) == 0 { - return "", err + return nil, err } - return wallet[0].Address, nil + return &deposit.Address{ + Address: wallet[0].Address, + Tag: wallet[0].Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/poloniex/currency_details.go b/exchanges/poloniex/currency_details.go index 7bc242f1..42aedeba 100644 --- a/exchanges/poloniex/currency_details.go +++ b/exchanges/poloniex/currency_details.go @@ -69,7 +69,7 @@ func (w *CurrencyDetails) loadPairs(data map[string]Ticker) error { } // loadCodes loads currency codes from currency map -func (w *CurrencyDetails) loadCodes(data map[string]Currencies) error { +func (w *CurrencyDetails) loadCodes(data map[string]*Currencies) error { if data == nil { return errCannotLoadNoData } diff --git a/exchanges/poloniex/currency_details_test.go b/exchanges/poloniex/currency_details_test.go index a23dc1aa..d5c68584 100644 --- a/exchanges/poloniex/currency_details_test.go +++ b/exchanges/poloniex/currency_details_test.go @@ -108,25 +108,25 @@ func TestWsCurrencyMap(t *testing.T) { t.Fatal("expecting USDT_BTC pair") } - maid, err := m.GetCode(127) + eth, err := m.GetCode(267) if !errors.Is(err, nil) { t.Fatalf("expected: %v but received: %v", nil, err) } - if maid.String() != "MAID" { + if eth.String() != "ETH" { t.Fatal("unexpected value") } - txFee, err := m.GetWithdrawalTXFee(maid) + txFee, err := m.GetWithdrawalTXFee(eth) if err != nil { t.Fatal(err) } - if txFee != 80 { + if txFee == 0 { t.Fatal("unexpected value") } - _, err = m.GetDepositAddress(maid) + _, err = m.GetDepositAddress(eth) if !errors.Is(err, errNoDepositAddress) { t.Fatalf("expected: %v but received: %v", errNoDepositAddress, err) } @@ -140,7 +140,7 @@ func TestWsCurrencyMap(t *testing.T) { t.Fatal("unexpected deposit address") } - wdEnabled, err := m.IsWithdrawAndDepositsEnabled(maid) + wdEnabled, err := m.IsWithdrawAndDepositsEnabled(eth) if !errors.Is(err, nil) { t.Fatalf("expected: %v but received: %v", nil, err) } @@ -149,7 +149,7 @@ func TestWsCurrencyMap(t *testing.T) { t.Fatal("unexpected results") } - tEnabled, err := m.IsTradingEnabledForCurrency(maid) + tEnabled, err := m.IsTradingEnabledForCurrency(eth) if !errors.Is(err, nil) { t.Fatalf("expected: %v but received: %v", nil, err) } diff --git a/exchanges/poloniex/poloniex.go b/exchanges/poloniex/poloniex.go index b5636cf2..dd006481 100644 --- a/exchanges/poloniex/poloniex.go +++ b/exchanges/poloniex/poloniex.go @@ -9,6 +9,7 @@ import ( "net/http" "net/url" "strconv" + "strings" "time" "github.com/thrasher-corp/gocryptotrader/common/crypto" @@ -220,12 +221,16 @@ func (p *Poloniex) GetChartData(ctx context.Context, currencyPair string, start, } // GetCurrencies returns information about currencies -func (p *Poloniex) GetCurrencies(ctx context.Context) (map[string]Currencies, error) { +func (p *Poloniex) GetCurrencies(ctx context.Context) (map[string]*Currencies, error) { type Response struct { - Data map[string]Currencies + Data map[string]*Currencies } resp := Response{} - return resp.Data, p.SendHTTPRequest(ctx, exchange.RestSpot, "/public?command=returnCurrencies", &resp.Data) + return resp.Data, p.SendHTTPRequest(ctx, + exchange.RestSpot, + "/public?command=returnCurrencies&includeMultiChainCurrencies=true", + &resp.Data, + ) } // GetLoanOrders returns the list of loan offers and demands for a given @@ -577,12 +582,15 @@ func (p *Poloniex) MoveOrder(ctx context.Context, orderID int64, rate, amount fl return result, nil } -// Withdraw withdraws a currency to a specific delegated address +// Withdraw withdraws a currency to a specific delegated address. +// For currencies where there are multiple networks to choose from (like USDT or BTC), +// you can specify the chain by setting the "currency" parameter to be a multiChain currency +// name, like USDTTRON, USDTETH, or BTCTRON func (p *Poloniex) Withdraw(ctx context.Context, currency, address string, amount float64) (*Withdraw, error) { result := &Withdraw{} values := url.Values{} - values.Set("currency", currency) + values.Set("currency", strings.ToUpper(currency)) values.Set("amount", strconv.FormatFloat(amount, 'f', -1, 64)) values.Set("address", address) @@ -869,7 +877,7 @@ func (p *Poloniex) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange headers := make(map[string]string) headers["Content-Type"] = "application/x-www-form-urlencoded" headers["Key"] = p.API.Credentials.Key - values.Set("nonce", strconv.FormatInt(time.Now().UnixNano(), 10)) + values.Set("nonce", p.Requester.GetNonce(true).String()) values.Set("command", endpoint) hmac, err := crypto.GetHMAC(crypto.HashSHA512, @@ -888,6 +896,7 @@ func (p *Poloniex) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange Body: bytes.NewBufferString(values.Encode()), Result: result, AuthRequest: true, + NonceEnabled: true, Verbose: p.Verbose, HTTPDebugging: p.HTTPDebugging, HTTPRecording: p.HTTPRecording, diff --git a/exchanges/poloniex/poloniex_live_test.go b/exchanges/poloniex/poloniex_live_test.go index de3c9452..dfc71968 100644 --- a/exchanges/poloniex/poloniex_live_test.go +++ b/exchanges/poloniex/poloniex_live_test.go @@ -1,4 +1,5 @@ -//+build mock_test_off +//go:build mock_test_off +// +build mock_test_off // This will build if build tag mock_test_off is parsed and will do live testing // using all tests in (exchange)_test.go diff --git a/exchanges/poloniex/poloniex_test.go b/exchanges/poloniex/poloniex_test.go index fcda0527..61f46edc 100644 --- a/exchanges/poloniex/poloniex_test.go +++ b/exchanges/poloniex/poloniex_test.go @@ -459,9 +459,9 @@ func TestWithdraw(t *testing.T) { Exchange: p.Name, Crypto: withdraw.CryptoRequest{ Address: core.BitcoinDonationAddress, - FeeAmount: 1, + FeeAmount: 0, }, - Amount: 0.00001337, + Amount: -1, Currency: currency.LTC, Description: "WITHDRAW IT ALL", TradePassword: "Password", @@ -477,8 +477,8 @@ func TestWithdraw(t *testing.T) { t.Errorf("Withdraw failed to be placed: %v", err) case !areTestAPIKeysSet() && !mockTests && err == nil: t.Error("Expecting an error when no keys are set") - case mockTests && err != nil: - t.Error(err) + case mockTests && err == nil: + t.Error("should error due to invalid amount") } } @@ -513,7 +513,7 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { t.Parallel() - _, err := p.GetDepositAddress(context.Background(), currency.DASH, "") + _, err := p.GetDepositAddress(context.Background(), currency.USDT, "", "USDTETH") switch { case areTestAPIKeysSet() && err != nil: t.Error("GetDepositAddress()", err) @@ -524,6 +524,17 @@ func TestGetDepositAddress(t *testing.T) { } } +func TestGenerateNewAddress(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("api keys not set, skipping test") + } + _, err := p.GenerateNewAddress(context.Background(), currency.XRP.String()) + if err != nil { + t.Fatal(err) + } +} + // TestWsAuth dials websocket, sends login request. // Will receive a message only on failure func TestWsAuth(t *testing.T) { @@ -1060,3 +1071,11 @@ func TestUpdateTickers(t *testing.T) { t.Error(err) } } + +func TestGetAvailableTransferChains(t *testing.T) { + t.Parallel() + _, err := p.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Fatal(err) + } +} diff --git a/exchanges/poloniex/poloniex_types.go b/exchanges/poloniex/poloniex_types.go index a8dded76..2cf5f0bb 100644 --- a/exchanges/poloniex/poloniex_types.go +++ b/exchanges/poloniex/poloniex_types.go @@ -115,14 +115,23 @@ type ChartData struct { // Currencies contains currency information type Currencies struct { - ID float64 `json:"id"` - Name string `json:"name"` - TxFee float64 `json:"txFee,string"` - MinConfirmations int64 `json:"minConf"` - DepositAddress string `json:"depositAddress"` - WithdrawalDepositDisabled uint8 `json:"disabled"` - Delisted uint8 `json:"delisted"` - Frozen uint8 `json:"frozen"` + ID float64 `json:"id"` + Name string `json:"name"` + HumanType string `json:"humanType"` + CurrencyType string `json:"currencyType"` + TxFee float64 `json:"txFee,string"` + MinConfirmations int64 `json:"minConf"` + DepositAddress string `json:"depositAddress"` + WithdrawalDepositDisabled uint8 `json:"disabled"` + Frozen uint8 `json:"frozen"` + HexColour string `json:"hexColor"` + Blockchain string `json:"blockchain"` + Delisted uint8 `json:"delisted"` + ParentChain string `json:"parentChain"` + IsMultiChain uint8 `json:"isMultiChain"` + IsChildChain uint8 `json:"isChildChain"` + ChildChains []string `json:"childChains"` + IsGeofenced uint8 `json:"isGeofenced"` } // LoanOrder holds loan order information diff --git a/exchanges/poloniex/poloniex_wrapper.go b/exchanges/poloniex/poloniex_wrapper.go index 87c9c7a7..2656a236 100644 --- a/exchanges/poloniex/poloniex_wrapper.go +++ b/exchanges/poloniex/poloniex_wrapper.go @@ -2,6 +2,7 @@ package poloniex import ( "context" + "errors" "fmt" "sort" "strconv" @@ -15,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -78,25 +80,27 @@ func (p *Poloniex) SetDefaults() { REST: true, Websocket: true, RESTCapabilities: protocol.Features{ - TickerBatching: true, - TickerFetching: true, - KlineFetching: true, - TradeFetching: true, - OrderbookFetching: true, - AutoPairUpdates: true, - AccountInfo: true, - GetOrder: true, - GetOrders: true, - CancelOrder: true, - CancelOrders: true, - SubmitOrder: true, - DepositHistory: true, - WithdrawalHistory: true, - UserTradeHistory: true, - CryptoDeposit: true, - CryptoWithdrawal: true, - TradeFee: true, - CryptoWithdrawalFee: true, + TickerBatching: true, + TickerFetching: true, + KlineFetching: true, + TradeFetching: true, + OrderbookFetching: true, + AutoPairUpdates: true, + AccountInfo: true, + GetOrder: true, + GetOrders: true, + CancelOrder: true, + CancelOrders: true, + SubmitOrder: true, + DepositHistory: true, + WithdrawalHistory: true, + UserTradeHistory: true, + CryptoDeposit: true, + CryptoWithdrawal: true, + TradeFee: true, + CryptoWithdrawalFee: true, + MultiChainDeposits: true, + MultiChainWithdrawals: true, }, WebsocketCapabilities: protocol.Features{ TickerFetching: true, @@ -691,19 +695,72 @@ func (p *Poloniex) GetOrderInfo(ctx context.Context, orderID string, pair curren } // GetDepositAddress returns a deposit address for a specified currency -func (p *Poloniex) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - a, err := p.GetDepositAddresses(ctx) +func (p *Poloniex) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { + depositAddrs, err := p.GetDepositAddresses(ctx) if err != nil { - return "", err + return nil, err } - address, ok := a.Addresses[cryptocurrency.Upper().String()] + // Some coins use a main address, so we must use this in conjunction with the returned + // deposit address to produce the full deposit address and tag + currencies, err := p.GetCurrencies(ctx) + if err != nil { + return nil, err + } + + coinParams, ok := currencies[cryptocurrency.Upper().String()] if !ok { - return "", fmt.Errorf("cannot find deposit address for %s", - cryptocurrency) + return nil, fmt.Errorf("unable to find currency %s in map", cryptocurrency) } - return address, nil + // Handle coins with payment ID's like XRP + var address, tag string + if coinParams.CurrencyType == "address-payment-id" && coinParams.DepositAddress != "" { + address = coinParams.DepositAddress + tag, ok = depositAddrs.Addresses[cryptocurrency.Upper().String()] + if !ok { + newAddr, err := p.GenerateNewAddress(ctx, cryptocurrency.Upper().String()) + if err != nil { + return nil, err + } + tag = newAddr + } + return &deposit.Address{ + Address: address, + Tag: tag, + }, nil + } + + // Handle coins like BTC or multichain coins + targetCurrency := cryptocurrency.String() + if chain != "" && !strings.EqualFold(chain, cryptocurrency.String()) { + targetCurrency = chain + } + + address, ok = depositAddrs.Addresses[strings.ToUpper(targetCurrency)] + if !ok { + if len(coinParams.ChildChains) > 1 && chain != "" && !common.StringDataCompare(coinParams.ChildChains, targetCurrency) { + // rather than assume, return an error + return nil, fmt.Errorf("currency %s has %v chains available, one of these must be specified", + cryptocurrency, + coinParams.ChildChains) + } + + coinParams, ok = currencies[strings.ToUpper(targetCurrency)] + if !ok { + return nil, fmt.Errorf("unable to find currency %s in map", cryptocurrency) + } + if coinParams.WithdrawalDepositDisabled == 1 { + return nil, fmt.Errorf("deposits and withdrawals for %v are currently disabled", targetCurrency) + } + + newAddr, err := p.GenerateNewAddress(ctx, targetCurrency) + if err != nil { + return nil, err + } + address = newAddr + } + return &deposit.Address{Address: address}, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -712,7 +769,12 @@ func (p *Poloniex) WithdrawCryptocurrencyFunds(ctx context.Context, withdrawRequ if err := withdrawRequest.Validate(); err != nil { return nil, err } - v, err := p.Withdraw(ctx, withdrawRequest.Currency.String(), withdrawRequest.Crypto.Address, withdrawRequest.Amount) + + targetCurrency := withdrawRequest.Currency.String() + if withdrawRequest.Crypto.Chain != "" { + targetCurrency = withdrawRequest.Crypto.Chain + } + v, err := p.Withdraw(ctx, targetCurrency, withdrawRequest.Crypto.Address, withdrawRequest.Amount) if err != nil { return nil, err } @@ -910,3 +972,19 @@ func (p *Poloniex) GetHistoricCandles(ctx context.Context, pair currency.Pair, a func (p *Poloniex) GetHistoricCandlesExtended(ctx context.Context, pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return p.GetHistoricCandles(ctx, pair, a, start, end, interval) } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (p *Poloniex) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + currencies, err := p.GetCurrencies(ctx) + if err != nil { + return nil, err + } + + curr, ok := currencies[cryptocurrency.Upper().String()] + if !ok { + return nil, errors.New("unable to locate currency in map") + } + + return curr.ChildChains, nil +} diff --git a/exchanges/protocol/features.go b/exchanges/protocol/features.go index ef12bfc4..1be9b98f 100644 --- a/exchanges/protocol/features.go +++ b/exchanges/protocol/features.go @@ -34,11 +34,14 @@ type Features struct { DeadMansSwitch bool `json:"deadMansSwitch,omitempty"` // FullPayloadSubscribe flushes and changes full subscription on websocket // connection by subscribing with full default stream channel list - FullPayloadSubscribe bool `json:"fullPayloadSubscribe,omitempty"` - Subscribe bool `json:"subscribe,omitempty"` - Unsubscribe bool `json:"unsubscribe,omitempty"` - AuthenticatedEndpoints bool `json:"authenticatedEndpoints,omitempty"` - MessageCorrelation bool `json:"messageCorrelation,omitempty"` - MessageSequenceNumbers bool `json:"messageSequenceNumbers,omitempty"` - CandleHistory bool `json:"candlehistory,omitempty"` + FullPayloadSubscribe bool `json:"fullPayloadSubscribe,omitempty"` + Subscribe bool `json:"subscribe,omitempty"` + Unsubscribe bool `json:"unsubscribe,omitempty"` + AuthenticatedEndpoints bool `json:"authenticatedEndpoints,omitempty"` + MessageCorrelation bool `json:"messageCorrelation,omitempty"` + MessageSequenceNumbers bool `json:"messageSequenceNumbers,omitempty"` + CandleHistory bool `json:"candlehistory,omitempty"` + MultiChainDeposits bool `json:"multiChainDeposits,omitempty"` + MultiChainWithdrawals bool `json:"multiChainWithdrawals,omitempty"` + MultiChainDepositRequiresChainSet bool `json:"multiChainDepositRequiresChainSet,omitempty"` } diff --git a/exchanges/request/request.go b/exchanges/request/request.go index a7b88959..6cccfae1 100644 --- a/exchanges/request/request.go +++ b/exchanges/request/request.go @@ -23,7 +23,6 @@ var ( errRequestSystemIsNil = errors.New("request system is nil") errMaxRequestJobs = errors.New("max request jobs reached") errRequestFunctionIsNil = errors.New("request function is nil") - errServiceNameUnset = errors.New("service name unset") errRequestItemNil = errors.New("request item is nil") errInvalidPath = errors.New("invalid path") errHeaderResponseMapIsNil = errors.New("header response map is nil") diff --git a/exchanges/sharedtestvalues/customex.go b/exchanges/sharedtestvalues/customex.go index 2f96c7f4..450bfc6d 100644 --- a/exchanges/sharedtestvalues/customex.go +++ b/exchanges/sharedtestvalues/customex.go @@ -10,6 +10,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -168,8 +169,8 @@ func (c *CustomEx) GetOrderInfo(ctx context.Context, orderID string, pair curren return order.Detail{}, nil } -func (c *CustomEx) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, accountID string) (string, error) { - return "", nil +func (c *CustomEx) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, accountID, chain string) (*deposit.Address, error) { + return nil, nil } func (c *CustomEx) GetOrderHistory(ctx context.Context, getOrdersRequest *order.GetOrdersRequest) ([]order.Detail, error) { diff --git a/exchanges/yobit/yobit.go b/exchanges/yobit/yobit.go index 27dc18b3..d32f2dce 100644 --- a/exchanges/yobit/yobit.go +++ b/exchanges/yobit/yobit.go @@ -33,9 +33,6 @@ const ( privateWithdrawCoinsToAddress = "WithdrawCoinsToAddress" privateCreateCoupon = "CreateYobicode" privateRedeemCoupon = "RedeemYobicode" - - yobitAuthRate = 0 - yobitUnauthRate = 0 ) // Yobit is the overarching type across the Yobit package @@ -192,20 +189,27 @@ func (y *Yobit) GetTradeHistory(ctx context.Context, tidFrom, count, tidEnd, sin } // GetCryptoDepositAddress returns the deposit address for a specific currency -func (y *Yobit) GetCryptoDepositAddress(ctx context.Context, coin string) (DepositAddress, error) { +func (y *Yobit) GetCryptoDepositAddress(ctx context.Context, coin string, createNew bool) (*DepositAddress, error) { req := url.Values{} req.Add("coinName", coin) + if createNew { + req.Set("need_new", "1") + } - result := DepositAddress{} - - err := y.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpotSupplementary, privateGetDepositAddress, req, &result) + var result DepositAddress + err := y.SendAuthenticatedHTTPRequest(ctx, + exchange.RestSpotSupplementary, + privateGetDepositAddress, + req, + &result) if err != nil { - return result, err + return nil, err } if result.Success != 1 { - return result, fmt.Errorf("%s", result.Error) + return nil, errors.New(result.Error) } - return result, nil + + return &result, nil } // WithdrawCoinsToAddress initiates a withdrawal to a specified address diff --git a/exchanges/yobit/yobit_test.go b/exchanges/yobit/yobit_test.go index 6bf0dc19..6ac68966 100644 --- a/exchanges/yobit/yobit_test.go +++ b/exchanges/yobit/yobit_test.go @@ -115,6 +115,17 @@ func TestGetOrderInfo(t *testing.T) { } } +func TestGetCryptoDepositAddress(t *testing.T) { + t.Parallel() + if !areTestAPIKeysSet() { + t.Skip("api keys not set") + } + _, err := y.GetCryptoDepositAddress(context.Background(), "bTc", false) + if err != nil { + t.Error(err) + } +} + func TestCancelOrder(t *testing.T) { t.Parallel() err := y.CancelExistingOrder(context.Background(), 1337) @@ -435,6 +446,7 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { withdrawCryptoRequest := withdraw.Request{ + Exchange: y.Name, Amount: -1, Currency: currency.BTC, Description: "WITHDRAW IT ALL", @@ -488,12 +500,12 @@ func TestWithdrawInternationalBank(t *testing.T) { func TestGetDepositAddress(t *testing.T) { if areTestAPIKeysSet() { - _, err := y.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := y.GetDepositAddress(context.Background(), currency.BTC, "", "") if err != nil { - t.Error("GetDepositAddress() Expected error") + t.Error(err) } } else { - _, err := y.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := y.GetDepositAddress(context.Background(), currency.BTC, "", "") if err == nil { t.Error("GetDepositAddress() error") } diff --git a/exchanges/yobit/yobit_wrapper.go b/exchanges/yobit/yobit_wrapper.go index a0ee8e61..a8445e27 100644 --- a/exchanges/yobit/yobit_wrapper.go +++ b/exchanges/yobit/yobit_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -495,13 +496,18 @@ func (y *Yobit) GetOrderInfo(ctx context.Context, orderID string, pair currency. } // GetDepositAddress returns a deposit address for a specified currency -func (y *Yobit) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { - a, err := y.GetCryptoDepositAddress(ctx, cryptocurrency.String()) - if err != nil { - return "", err +func (y *Yobit) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, _ string) (*deposit.Address, error) { + if cryptocurrency == currency.XRP { + // {"success":1,"return":{"status":"online","blocks":65778672,"address":996707783,"processed_amount":0.00000000,"server_time":1629425030}} + return nil, errors.New("XRP isn't supported as the API does not return a valid address") } - return a.Return.Address, nil + addr, err := y.GetCryptoDepositAddress(ctx, cryptocurrency.String(), false) + if err != nil { + return nil, err + } + + return &deposit.Address{Address: addr.Return.Address}, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is diff --git a/exchanges/zb/zb.go b/exchanges/zb/zb.go index 9c0096cc..32aae2f4 100644 --- a/exchanges/zb/zb.go +++ b/exchanges/zb/zb.go @@ -8,6 +8,7 @@ import ( "net/http" "net/url" "strconv" + "strings" "time" "github.com/thrasher-corp/gocryptotrader/common/convert" @@ -35,6 +36,7 @@ const ( zbGetOrdersGet = "getOrders" zbWithdraw = "withdraw" zbDepositAddress = "getUserAddress" + zbMultiChainDepositAddress = "getPayinAddress" ) // ZB is the overarching type across this package @@ -267,15 +269,55 @@ func (z *ZB) GetSpotKline(ctx context.Context, arg KlinesRequestParams) (KLineRe // NOTE - PLEASE BE AWARE THAT YOU NEED TO GENERATE A DEPOSIT ADDRESS VIA // LOGGING IN AND NOT BY USING THIS ENDPOINT OTHERWISE THIS WILL GIVE YOU A // GENERAL ERROR RESPONSE. -func (z *ZB) GetCryptoAddress(ctx context.Context, currency currency.Code) (UserAddress, error) { +func (z *ZB) GetCryptoAddress(ctx context.Context, currency currency.Code) (*UserAddress, error) { var resp UserAddress vals := url.Values{} vals.Set("method", zbDepositAddress) vals.Set("currency", currency.Lower().String()) - return resp, - z.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpotSupplementary, http.MethodGet, vals, &resp, request.Auth) + if err := z.SendAuthenticatedHTTPRequest(ctx, + exchange.RestSpotSupplementary, + http.MethodGet, + vals, + &resp, + request.Auth); err != nil { + return nil, err + } + + if !resp.Message.IsSuccessful { + return nil, errors.New(resp.Message.Description) + } + + if strings.Contains(resp.Message.Data.Address, "_") { + splitter := strings.Split(resp.Message.Data.Address, "_") + resp.Message.Data.Address, resp.Message.Data.Tag = splitter[0], splitter[1] + } + + return &resp, nil +} + +// GetMultiChainDepositAddress returns deposit addresses for a given currency +func (z *ZB) GetMultiChainDepositAddress(ctx context.Context, currency currency.Code) ([]MultiChainDepositAddress, error) { + var resp MultiChainDepositAddressResponse + + vals := url.Values{} + vals.Set("method", zbMultiChainDepositAddress) + vals.Set("currency", currency.Lower().String()) + + if err := z.SendAuthenticatedHTTPRequest(ctx, + exchange.RestSpotSupplementary, + http.MethodGet, + vals, + &resp, + request.Auth); err != nil { + return nil, err + } + + if !resp.Message.IsSuccessful { + return nil, errors.New(resp.Message.Description) + } + return resp.Message.Data, nil } // SendHTTPRequest sends an unauthenticated HTTP request @@ -324,8 +366,7 @@ func (z *ZB) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.URL, var intermediary json.RawMessage newRequest := func() (*request.Item, error) { - now := time.Now() - params.Set("reqTime", strconv.FormatInt(now.UnixMilli(), 10)) + params.Set("reqTime", strconv.FormatInt(time.Now().UnixMilli(), 10)) params.Set("sign", fmt.Sprintf("%x", hmac)) urlPath := fmt.Sprintf("%s/%s?%s", @@ -357,9 +398,10 @@ func (z *ZB) SendAuthenticatedHTTPRequest(ctx context.Context, ep exchange.URL, err = json.Unmarshal(intermediary, &errCap) if err == nil { if errCap.Code > 1000 { - return fmt.Errorf("sendAuthenticatedHTTPRequest error code: %d message %s", + return fmt.Errorf("error code: %d error code message: %s error message: %s", errCap.Code, - errorCode[errCap.Code]) + errorCode[errCap.Code], + errCap.Message) } } diff --git a/exchanges/zb/zb_live_test.go b/exchanges/zb/zb_live_test.go index 77510bbf..940b4d68 100644 --- a/exchanges/zb/zb_live_test.go +++ b/exchanges/zb/zb_live_test.go @@ -1,4 +1,5 @@ -//+build mock_test_off +//go:build mock_test_off +// +build mock_test_off // This will build if build tag mock_test_off is parsed and will do live testing // using all tests in (exchange)_test.go diff --git a/exchanges/zb/zb_test.go b/exchanges/zb/zb_test.go index af6d2b77..c17a3a1e 100644 --- a/exchanges/zb/zb_test.go +++ b/exchanges/zb/zb_test.go @@ -394,6 +394,7 @@ func TestWithdraw(t *testing.T) { } withdrawCryptoRequest := withdraw.Request{ + Exchange: z.Name, Crypto: withdraw.CryptoRequest{ Address: core.BitcoinDonationAddress, FeeAmount: 1, @@ -448,13 +449,31 @@ func TestGetDepositAddress(t *testing.T) { t.Skip("skipping authenticated function for mock testing") } if z.ValidateAPICredentials() { - _, err := z.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := z.GetDepositAddress(context.Background(), currency.XRP, "", "") if err != nil { t.Error("GetDepositAddress() error PLEASE MAKE SURE YOU CREATE DEPOSIT ADDRESSES VIA ZB.COM", err) } } else { - _, err := z.GetDepositAddress(context.Background(), currency.BTC, "") + _, err := z.GetDepositAddress(context.Background(), currency.BTC, "", "") + if err == nil { + t.Error("GetDepositAddress() Expected error") + } + } +} + +func TestGetMultiChainDepositAddress(t *testing.T) { + if mockTests { + t.Skip("skipping authenticated function for mock testing") + } + if z.ValidateAPICredentials() { + _, err := z.GetMultiChainDepositAddress(context.Background(), currency.USDT) + if err != nil { + t.Error("GetDepositAddress() error PLEASE MAKE SURE YOU CREATE DEPOSIT ADDRESSES VIA ZB.COM", + err) + } + } else { + _, err := z.GetMultiChainDepositAddress(context.Background(), currency.USDT) if err == nil { t.Error("GetDepositAddress() Expected error") } @@ -1025,8 +1044,25 @@ func TestUpdateTicker(t *testing.T) { func TestUpdateTickers(t *testing.T) { t.Parallel() - err := z.UpdateTickers(context.Background(), asset.Spot) + if err := z.UpdateTickers(context.Background(), asset.Spot); err != nil { + t.Fatal(err) + } +} + +func TestGetAvailableTransferChains(t *testing.T) { + t.Parallel() + if !z.ValidateAPICredentials() { + t.Skip("api keys not set") + } + _, err := z.GetAvailableTransferChains(context.Background(), currency.BTC) if err != nil { t.Error(err) } + r, err := z.GetAvailableTransferChains(context.Background(), currency.USDT) + if err != nil { + t.Error(err) + } + if len(r) != 3 { + t.Error("expected 3 results") + } } diff --git a/exchanges/zb/zb_types.go b/exchanges/zb/zb_types.go index e489136a..7dd6d1b3 100644 --- a/exchanges/zb/zb_types.go +++ b/exchanges/zb/zb_types.go @@ -143,11 +143,33 @@ type UserAddress struct { Description string `json:"des"` IsSuccessful bool `json:"isSuc"` Data struct { - Key string `json:"key"` + Address string `json:"key"` + Tag string // custom field we populate } `json:"datas"` } `json:"message"` } +// MultiChainDepositAddress stores an individual multichain deposit item +type MultiChainDepositAddress struct { + Blockchain string `json:"blockChain"` + IsUseMemo bool `json:"isUseMemo"` + Account string `json:"account"` + Address string `json:"address"` + Memo string `json:"memo"` + CanDeposit bool `json:"canDeposit"` + CanWithdraw bool `json:"canWithdraw"` +} + +// MultiChainDepositAddressResponse stores the multichain deposit address response +type MultiChainDepositAddressResponse struct { + Code int64 `json:"code"` + Message struct { + Description string `json:"des"` + IsSuccessful bool `json:"isSuc"` + Data []MultiChainDepositAddress `json:"datas"` + } `json:"message"` +} + // WithdrawalFees the large list of predefined withdrawal fees // Prone to change, using highest value var WithdrawalFees = map[currency.Code]float64{ diff --git a/exchanges/zb/zb_wrapper.go b/exchanges/zb/zb_wrapper.go index 0ed9ca3b..564cc7a7 100644 --- a/exchanges/zb/zb_wrapper.go +++ b/exchanges/zb/zb_wrapper.go @@ -16,6 +16,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -85,6 +86,7 @@ func (z *ZB) SetDefaults() { TradeFee: true, CryptoDepositFee: true, CryptoWithdrawalFee: true, + MultiChainDeposits: true, }, WebsocketCapabilities: protocol.Features{ TickerFetching: true, @@ -622,13 +624,31 @@ func (z *ZB) GetOrderInfo(ctx context.Context, orderID string, pair currency.Pai } // GetDepositAddress returns a deposit address for a specified currency -func (z *ZB) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _ string) (string, error) { +func (z *ZB) GetDepositAddress(ctx context.Context, cryptocurrency currency.Code, _, chain string) (*deposit.Address, error) { + if chain != "" { + addresses, err := z.GetMultiChainDepositAddress(ctx, cryptocurrency) + if err != nil { + return nil, err + } + for x := range addresses { + if strings.EqualFold(addresses[x].Blockchain, chain) { + return &deposit.Address{ + Address: addresses[x].Address, + Tag: addresses[x].Memo, + }, nil + } + } + return nil, fmt.Errorf("%s does not support chain %s", cryptocurrency.String(), chain) + } address, err := z.GetCryptoAddress(ctx, cryptocurrency) if err != nil { - return "", err + return nil, err } - return address.Message.Data.Key, nil + return &deposit.Address{ + Address: address.Message.Data.Address, + Tag: address.Message.Data.Tag, + }, nil } // WithdrawCryptocurrencyFunds returns a withdrawal ID when a withdrawal is @@ -959,3 +979,25 @@ func (z *ZB) validateCandlesRequest(p currency.Pair, a asset.Item, start, end ti Interval: interval, }, nil } + +// GetAvailableTransferChains returns the available transfer blockchains for the specific +// cryptocurrency +func (z *ZB) GetAvailableTransferChains(ctx context.Context, cryptocurrency currency.Code) ([]string, error) { + chains, err := z.GetMultiChainDepositAddress(ctx, cryptocurrency) + if err != nil { + // returned on valid currencies like BTC, despite having a deposit + // address created it will advise the user to create one via their + // app or website. In this case, we'll just return nil transfer + // chains and no error message + if strings.Contains(err.Error(), "APP") { + return nil, nil + } + return nil, err + } + + var availableChains []string + for x := range chains { + availableChains = append(availableChains, chains[x].Blockchain) + } + return availableChains, nil +} diff --git a/gctrpc/gen_pb_linux.sh b/gctrpc/gen_pb_linux.sh index 8adb08b9..137fa2e7 100755 --- a/gctrpc/gen_pb_linux.sh +++ b/gctrpc/gen_pb_linux.sh @@ -3,7 +3,7 @@ echo "GoCryptoTrader: Generating gRPC, proxy and swagger files." # $GOPATH/pkg/mod/github.com/grpc-ecosystem/grpc-gateway/v2@v2.0.1/third_party/googleapis export GOPATH=$(go env GOPATH) -protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=. rpc.proto -protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go-grpc_out=. rpc.proto -protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --grpc-gateway_out=logtostderr=true:. rpc.proto +protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=paths=source_relative:. rpc.proto +protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --go-grpc_out=paths=source_relative:. rpc.proto +protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --grpc-gateway_out=paths=source_relative,logtostderr=true:. rpc.proto protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis --openapiv2_out=logtostderr=true:. rpc.proto diff --git a/gctrpc/gen_pb_win.bat b/gctrpc/gen_pb_win.bat index add2fdbc..7cf00ff2 100644 --- a/gctrpc/gen_pb_win.bat +++ b/gctrpc/gen_pb_win.bat @@ -3,7 +3,7 @@ echo GoCryptoTrader: Generating gRPC, proxy and swagger files. REM You may need to include the go mod package for the annotations file: REM %GOPATH%\pkg\mod\github.com\grpc-ecosystem\grpc-gateway\v2@v2.0.1\third_party\googleapis -protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --go_out=. rpc.proto -protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --go-grpc_out=. rpc.proto -protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --grpc-gateway_out=logtostderr=true:. rpc.proto +protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --go_out=paths=source_relative:. rpc.proto +protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --go-grpc_out=paths=source_relative:. rpc.proto +protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --grpc-gateway_out=paths=source_relative,logtostderr=true:. rpc.proto protoc -I=. -I=%GOPATH%\src -I=%GOPATH%\src\github.com\grpc-ecosystem\grpc-gateway\third_party\googleapis --openapiv2_out=logtostderr=true:. rpc.proto diff --git a/gctrpc/rpc.pb.go b/gctrpc/rpc.pb.go index f1cb79fe..5f451c79 100644 --- a/gctrpc/rpc.pb.go +++ b/gctrpc/rpc.pb.go @@ -4882,18 +4882,128 @@ func (x *GetCryptocurrencyDepositAddressesRequest) GetExchange() string { return "" } +type DepositAddress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + Chain string `protobuf:"bytes,3,opt,name=chain,proto3" json:"chain,omitempty"` +} + +func (x *DepositAddress) Reset() { + *x = DepositAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DepositAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DepositAddress) ProtoMessage() {} + +func (x *DepositAddress) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DepositAddress.ProtoReflect.Descriptor instead. +func (*DepositAddress) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{79} +} + +func (x *DepositAddress) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *DepositAddress) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *DepositAddress) GetChain() string { + if x != nil { + return x.Chain + } + return "" +} + +type DepositAddresses struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Addresses []*DepositAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` +} + +func (x *DepositAddresses) Reset() { + *x = DepositAddresses{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DepositAddresses) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DepositAddresses) ProtoMessage() {} + +func (x *DepositAddresses) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[80] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DepositAddresses.ProtoReflect.Descriptor instead. +func (*DepositAddresses) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{80} +} + +func (x *DepositAddresses) GetAddresses() []*DepositAddress { + if x != nil { + return x.Addresses + } + return nil +} + type GetCryptocurrencyDepositAddressesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Addresses map[string]string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Addresses map[string]*DepositAddresses `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetCryptocurrencyDepositAddressesResponse) Reset() { *x = GetCryptocurrencyDepositAddressesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[79] + mi := &file_rpc_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4906,7 +5016,7 @@ func (x *GetCryptocurrencyDepositAddressesResponse) String() string { func (*GetCryptocurrencyDepositAddressesResponse) ProtoMessage() {} func (x *GetCryptocurrencyDepositAddressesResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[79] + mi := &file_rpc_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4919,10 +5029,10 @@ func (x *GetCryptocurrencyDepositAddressesResponse) ProtoReflect() protoreflect. // Deprecated: Use GetCryptocurrencyDepositAddressesResponse.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressesResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{79} + return file_rpc_proto_rawDescGZIP(), []int{81} } -func (x *GetCryptocurrencyDepositAddressesResponse) GetAddresses() map[string]string { +func (x *GetCryptocurrencyDepositAddressesResponse) GetAddresses() map[string]*DepositAddresses { if x != nil { return x.Addresses } @@ -4936,12 +5046,14 @@ type GetCryptocurrencyDepositAddressRequest struct { Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` Cryptocurrency string `protobuf:"bytes,2,opt,name=cryptocurrency,proto3" json:"cryptocurrency,omitempty"` + Chain string `protobuf:"bytes,3,opt,name=chain,proto3" json:"chain,omitempty"` + Bypass bool `protobuf:"varint,4,opt,name=bypass,proto3" json:"bypass,omitempty"` } func (x *GetCryptocurrencyDepositAddressRequest) Reset() { *x = GetCryptocurrencyDepositAddressRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[80] + mi := &file_rpc_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4954,7 +5066,7 @@ func (x *GetCryptocurrencyDepositAddressRequest) String() string { func (*GetCryptocurrencyDepositAddressRequest) ProtoMessage() {} func (x *GetCryptocurrencyDepositAddressRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[80] + mi := &file_rpc_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4967,7 +5079,7 @@ func (x *GetCryptocurrencyDepositAddressRequest) ProtoReflect() protoreflect.Mes // Deprecated: Use GetCryptocurrencyDepositAddressRequest.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{80} + return file_rpc_proto_rawDescGZIP(), []int{82} } func (x *GetCryptocurrencyDepositAddressRequest) GetExchange() string { @@ -4984,18 +5096,33 @@ func (x *GetCryptocurrencyDepositAddressRequest) GetCryptocurrency() string { return "" } +func (x *GetCryptocurrencyDepositAddressRequest) GetChain() string { + if x != nil { + return x.Chain + } + return "" +} + +func (x *GetCryptocurrencyDepositAddressRequest) GetBypass() bool { + if x != nil { + return x.Bypass + } + return false +} + type GetCryptocurrencyDepositAddressResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` } func (x *GetCryptocurrencyDepositAddressResponse) Reset() { *x = GetCryptocurrencyDepositAddressResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[81] + mi := &file_rpc_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5008,7 +5135,7 @@ func (x *GetCryptocurrencyDepositAddressResponse) String() string { func (*GetCryptocurrencyDepositAddressResponse) ProtoMessage() {} func (x *GetCryptocurrencyDepositAddressResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[81] + mi := &file_rpc_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5021,7 +5148,7 @@ func (x *GetCryptocurrencyDepositAddressResponse) ProtoReflect() protoreflect.Me // Deprecated: Use GetCryptocurrencyDepositAddressResponse.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{81} + return file_rpc_proto_rawDescGZIP(), []int{83} } func (x *GetCryptocurrencyDepositAddressResponse) GetAddress() string { @@ -5031,6 +5158,115 @@ func (x *GetCryptocurrencyDepositAddressResponse) GetAddress() string { return "" } +func (x *GetCryptocurrencyDepositAddressResponse) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +type GetAvailableTransferChainsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Cryptocurrency string `protobuf:"bytes,2,opt,name=cryptocurrency,proto3" json:"cryptocurrency,omitempty"` +} + +func (x *GetAvailableTransferChainsRequest) Reset() { + *x = GetAvailableTransferChainsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAvailableTransferChainsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAvailableTransferChainsRequest) ProtoMessage() {} + +func (x *GetAvailableTransferChainsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAvailableTransferChainsRequest.ProtoReflect.Descriptor instead. +func (*GetAvailableTransferChainsRequest) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{84} +} + +func (x *GetAvailableTransferChainsRequest) GetExchange() string { + if x != nil { + return x.Exchange + } + return "" +} + +func (x *GetAvailableTransferChainsRequest) GetCryptocurrency() string { + if x != nil { + return x.Cryptocurrency + } + return "" +} + +type GetAvailableTransferChainsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Chains []string `protobuf:"bytes,1,rep,name=chains,proto3" json:"chains,omitempty"` +} + +func (x *GetAvailableTransferChainsResponse) Reset() { + *x = GetAvailableTransferChainsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAvailableTransferChainsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAvailableTransferChainsResponse) ProtoMessage() {} + +func (x *GetAvailableTransferChainsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAvailableTransferChainsResponse.ProtoReflect.Descriptor instead. +func (*GetAvailableTransferChainsResponse) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{85} +} + +func (x *GetAvailableTransferChainsResponse) GetChains() []string { + if x != nil { + return x.Chains + } + return nil +} + type WithdrawFiatRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5046,7 +5282,7 @@ type WithdrawFiatRequest struct { func (x *WithdrawFiatRequest) Reset() { *x = WithdrawFiatRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[82] + mi := &file_rpc_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5059,7 +5295,7 @@ func (x *WithdrawFiatRequest) String() string { func (*WithdrawFiatRequest) ProtoMessage() {} func (x *WithdrawFiatRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[82] + mi := &file_rpc_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5072,7 +5308,7 @@ func (x *WithdrawFiatRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawFiatRequest.ProtoReflect.Descriptor instead. func (*WithdrawFiatRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{82} + return file_rpc_proto_rawDescGZIP(), []int{86} } func (x *WithdrawFiatRequest) GetExchange() string { @@ -5122,12 +5358,13 @@ type WithdrawCryptoRequest struct { Amount float64 `protobuf:"fixed64,5,opt,name=amount,proto3" json:"amount,omitempty"` Fee float64 `protobuf:"fixed64,6,opt,name=fee,proto3" json:"fee,omitempty"` Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"` + Chain string `protobuf:"bytes,8,opt,name=chain,proto3" json:"chain,omitempty"` } func (x *WithdrawCryptoRequest) Reset() { *x = WithdrawCryptoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[83] + mi := &file_rpc_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5140,7 +5377,7 @@ func (x *WithdrawCryptoRequest) String() string { func (*WithdrawCryptoRequest) ProtoMessage() {} func (x *WithdrawCryptoRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[83] + mi := &file_rpc_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5153,7 +5390,7 @@ func (x *WithdrawCryptoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawCryptoRequest.ProtoReflect.Descriptor instead. func (*WithdrawCryptoRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{83} + return file_rpc_proto_rawDescGZIP(), []int{87} } func (x *WithdrawCryptoRequest) GetExchange() string { @@ -5205,6 +5442,13 @@ func (x *WithdrawCryptoRequest) GetDescription() string { return "" } +func (x *WithdrawCryptoRequest) GetChain() string { + if x != nil { + return x.Chain + } + return "" +} + type WithdrawResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5217,7 +5461,7 @@ type WithdrawResponse struct { func (x *WithdrawResponse) Reset() { *x = WithdrawResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[84] + mi := &file_rpc_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5230,7 +5474,7 @@ func (x *WithdrawResponse) String() string { func (*WithdrawResponse) ProtoMessage() {} func (x *WithdrawResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[84] + mi := &file_rpc_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5243,7 +5487,7 @@ func (x *WithdrawResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawResponse.ProtoReflect.Descriptor instead. func (*WithdrawResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{84} + return file_rpc_proto_rawDescGZIP(), []int{88} } func (x *WithdrawResponse) GetId() string { @@ -5271,7 +5515,7 @@ type WithdrawalEventByIDRequest struct { func (x *WithdrawalEventByIDRequest) Reset() { *x = WithdrawalEventByIDRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[85] + mi := &file_rpc_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5284,7 +5528,7 @@ func (x *WithdrawalEventByIDRequest) String() string { func (*WithdrawalEventByIDRequest) ProtoMessage() {} func (x *WithdrawalEventByIDRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[85] + mi := &file_rpc_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5297,7 +5541,7 @@ func (x *WithdrawalEventByIDRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalEventByIDRequest.ProtoReflect.Descriptor instead. func (*WithdrawalEventByIDRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{85} + return file_rpc_proto_rawDescGZIP(), []int{89} } func (x *WithdrawalEventByIDRequest) GetId() string { @@ -5318,7 +5562,7 @@ type WithdrawalEventByIDResponse struct { func (x *WithdrawalEventByIDResponse) Reset() { *x = WithdrawalEventByIDResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[86] + mi := &file_rpc_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5331,7 +5575,7 @@ func (x *WithdrawalEventByIDResponse) String() string { func (*WithdrawalEventByIDResponse) ProtoMessage() {} func (x *WithdrawalEventByIDResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[86] + mi := &file_rpc_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5344,7 +5588,7 @@ func (x *WithdrawalEventByIDResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalEventByIDResponse.ProtoReflect.Descriptor instead. func (*WithdrawalEventByIDResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{86} + return file_rpc_proto_rawDescGZIP(), []int{90} } func (x *WithdrawalEventByIDResponse) GetEvent() *WithdrawalEventResponse { @@ -5368,7 +5612,7 @@ type WithdrawalEventsByExchangeRequest struct { func (x *WithdrawalEventsByExchangeRequest) Reset() { *x = WithdrawalEventsByExchangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[87] + mi := &file_rpc_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5381,7 +5625,7 @@ func (x *WithdrawalEventsByExchangeRequest) String() string { func (*WithdrawalEventsByExchangeRequest) ProtoMessage() {} func (x *WithdrawalEventsByExchangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[87] + mi := &file_rpc_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5394,7 +5638,7 @@ func (x *WithdrawalEventsByExchangeRequest) ProtoReflect() protoreflect.Message // Deprecated: Use WithdrawalEventsByExchangeRequest.ProtoReflect.Descriptor instead. func (*WithdrawalEventsByExchangeRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{87} + return file_rpc_proto_rawDescGZIP(), []int{91} } func (x *WithdrawalEventsByExchangeRequest) GetExchange() string { @@ -5439,7 +5683,7 @@ type WithdrawalEventsByDateRequest struct { func (x *WithdrawalEventsByDateRequest) Reset() { *x = WithdrawalEventsByDateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[88] + mi := &file_rpc_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5452,7 +5696,7 @@ func (x *WithdrawalEventsByDateRequest) String() string { func (*WithdrawalEventsByDateRequest) ProtoMessage() {} func (x *WithdrawalEventsByDateRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[88] + mi := &file_rpc_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5465,7 +5709,7 @@ func (x *WithdrawalEventsByDateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalEventsByDateRequest.ProtoReflect.Descriptor instead. func (*WithdrawalEventsByDateRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{88} + return file_rpc_proto_rawDescGZIP(), []int{92} } func (x *WithdrawalEventsByDateRequest) GetExchange() string { @@ -5507,7 +5751,7 @@ type WithdrawalEventsByExchangeResponse struct { func (x *WithdrawalEventsByExchangeResponse) Reset() { *x = WithdrawalEventsByExchangeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[89] + mi := &file_rpc_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5520,7 +5764,7 @@ func (x *WithdrawalEventsByExchangeResponse) String() string { func (*WithdrawalEventsByExchangeResponse) ProtoMessage() {} func (x *WithdrawalEventsByExchangeResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[89] + mi := &file_rpc_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5533,7 +5777,7 @@ func (x *WithdrawalEventsByExchangeResponse) ProtoReflect() protoreflect.Message // Deprecated: Use WithdrawalEventsByExchangeResponse.ProtoReflect.Descriptor instead. func (*WithdrawalEventsByExchangeResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{89} + return file_rpc_proto_rawDescGZIP(), []int{93} } func (x *WithdrawalEventsByExchangeResponse) GetEvent() []*WithdrawalEventResponse { @@ -5558,7 +5802,7 @@ type WithdrawalEventResponse struct { func (x *WithdrawalEventResponse) Reset() { *x = WithdrawalEventResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[90] + mi := &file_rpc_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5571,7 +5815,7 @@ func (x *WithdrawalEventResponse) String() string { func (*WithdrawalEventResponse) ProtoMessage() {} func (x *WithdrawalEventResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[90] + mi := &file_rpc_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5584,7 +5828,7 @@ func (x *WithdrawalEventResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalEventResponse.ProtoReflect.Descriptor instead. func (*WithdrawalEventResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{90} + return file_rpc_proto_rawDescGZIP(), []int{94} } func (x *WithdrawalEventResponse) GetId() string { @@ -5635,7 +5879,7 @@ type WithdrawlExchangeEvent struct { func (x *WithdrawlExchangeEvent) Reset() { *x = WithdrawlExchangeEvent{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[91] + mi := &file_rpc_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5648,7 +5892,7 @@ func (x *WithdrawlExchangeEvent) String() string { func (*WithdrawlExchangeEvent) ProtoMessage() {} func (x *WithdrawlExchangeEvent) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[91] + mi := &file_rpc_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5661,7 +5905,7 @@ func (x *WithdrawlExchangeEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawlExchangeEvent.ProtoReflect.Descriptor instead. func (*WithdrawlExchangeEvent) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{91} + return file_rpc_proto_rawDescGZIP(), []int{95} } func (x *WithdrawlExchangeEvent) GetName() string { @@ -5701,7 +5945,7 @@ type WithdrawalRequestEvent struct { func (x *WithdrawalRequestEvent) Reset() { *x = WithdrawalRequestEvent{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[92] + mi := &file_rpc_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5714,7 +5958,7 @@ func (x *WithdrawalRequestEvent) String() string { func (*WithdrawalRequestEvent) ProtoMessage() {} func (x *WithdrawalRequestEvent) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[92] + mi := &file_rpc_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5727,7 +5971,7 @@ func (x *WithdrawalRequestEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use WithdrawalRequestEvent.ProtoReflect.Descriptor instead. func (*WithdrawalRequestEvent) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{92} + return file_rpc_proto_rawDescGZIP(), []int{96} } func (x *WithdrawalRequestEvent) GetCurrency() string { @@ -5788,7 +6032,7 @@ type FiatWithdrawalEvent struct { func (x *FiatWithdrawalEvent) Reset() { *x = FiatWithdrawalEvent{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[93] + mi := &file_rpc_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5801,7 +6045,7 @@ func (x *FiatWithdrawalEvent) String() string { func (*FiatWithdrawalEvent) ProtoMessage() {} func (x *FiatWithdrawalEvent) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[93] + mi := &file_rpc_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5814,7 +6058,7 @@ func (x *FiatWithdrawalEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use FiatWithdrawalEvent.ProtoReflect.Descriptor instead. func (*FiatWithdrawalEvent) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{93} + return file_rpc_proto_rawDescGZIP(), []int{97} } func (x *FiatWithdrawalEvent) GetBankName() string { @@ -5873,7 +6117,7 @@ type CryptoWithdrawalEvent struct { func (x *CryptoWithdrawalEvent) Reset() { *x = CryptoWithdrawalEvent{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[94] + mi := &file_rpc_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5886,7 +6130,7 @@ func (x *CryptoWithdrawalEvent) String() string { func (*CryptoWithdrawalEvent) ProtoMessage() {} func (x *CryptoWithdrawalEvent) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[94] + mi := &file_rpc_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5899,7 +6143,7 @@ func (x *CryptoWithdrawalEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use CryptoWithdrawalEvent.ProtoReflect.Descriptor instead. func (*CryptoWithdrawalEvent) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{94} + return file_rpc_proto_rawDescGZIP(), []int{98} } func (x *CryptoWithdrawalEvent) GetAddress() string { @@ -5941,7 +6185,7 @@ type GetLoggerDetailsRequest struct { func (x *GetLoggerDetailsRequest) Reset() { *x = GetLoggerDetailsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[95] + mi := &file_rpc_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5954,7 +6198,7 @@ func (x *GetLoggerDetailsRequest) String() string { func (*GetLoggerDetailsRequest) ProtoMessage() {} func (x *GetLoggerDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[95] + mi := &file_rpc_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5967,7 +6211,7 @@ func (x *GetLoggerDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLoggerDetailsRequest.ProtoReflect.Descriptor instead. func (*GetLoggerDetailsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{95} + return file_rpc_proto_rawDescGZIP(), []int{99} } func (x *GetLoggerDetailsRequest) GetLogger() string { @@ -5991,7 +6235,7 @@ type GetLoggerDetailsResponse struct { func (x *GetLoggerDetailsResponse) Reset() { *x = GetLoggerDetailsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[96] + mi := &file_rpc_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6004,7 +6248,7 @@ func (x *GetLoggerDetailsResponse) String() string { func (*GetLoggerDetailsResponse) ProtoMessage() {} func (x *GetLoggerDetailsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[96] + mi := &file_rpc_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6017,7 +6261,7 @@ func (x *GetLoggerDetailsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLoggerDetailsResponse.ProtoReflect.Descriptor instead. func (*GetLoggerDetailsResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{96} + return file_rpc_proto_rawDescGZIP(), []int{100} } func (x *GetLoggerDetailsResponse) GetInfo() bool { @@ -6060,7 +6304,7 @@ type SetLoggerDetailsRequest struct { func (x *SetLoggerDetailsRequest) Reset() { *x = SetLoggerDetailsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[97] + mi := &file_rpc_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6073,7 +6317,7 @@ func (x *SetLoggerDetailsRequest) String() string { func (*SetLoggerDetailsRequest) ProtoMessage() {} func (x *SetLoggerDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[97] + mi := &file_rpc_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6086,7 +6330,7 @@ func (x *SetLoggerDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetLoggerDetailsRequest.ProtoReflect.Descriptor instead. func (*SetLoggerDetailsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{97} + return file_rpc_proto_rawDescGZIP(), []int{101} } func (x *SetLoggerDetailsRequest) GetLogger() string { @@ -6115,7 +6359,7 @@ type GetExchangePairsRequest struct { func (x *GetExchangePairsRequest) Reset() { *x = GetExchangePairsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[98] + mi := &file_rpc_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6128,7 +6372,7 @@ func (x *GetExchangePairsRequest) String() string { func (*GetExchangePairsRequest) ProtoMessage() {} func (x *GetExchangePairsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[98] + mi := &file_rpc_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6141,7 +6385,7 @@ func (x *GetExchangePairsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExchangePairsRequest.ProtoReflect.Descriptor instead. func (*GetExchangePairsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{98} + return file_rpc_proto_rawDescGZIP(), []int{102} } func (x *GetExchangePairsRequest) GetExchange() string { @@ -6169,7 +6413,7 @@ type GetExchangePairsResponse struct { func (x *GetExchangePairsResponse) Reset() { *x = GetExchangePairsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[99] + mi := &file_rpc_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6182,7 +6426,7 @@ func (x *GetExchangePairsResponse) String() string { func (*GetExchangePairsResponse) ProtoMessage() {} func (x *GetExchangePairsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[99] + mi := &file_rpc_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6195,7 +6439,7 @@ func (x *GetExchangePairsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExchangePairsResponse.ProtoReflect.Descriptor instead. func (*GetExchangePairsResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{99} + return file_rpc_proto_rawDescGZIP(), []int{103} } func (x *GetExchangePairsResponse) GetSupportedAssets() map[string]*PairsSupported { @@ -6219,7 +6463,7 @@ type SetExchangePairRequest struct { func (x *SetExchangePairRequest) Reset() { *x = SetExchangePairRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[100] + mi := &file_rpc_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6232,7 +6476,7 @@ func (x *SetExchangePairRequest) String() string { func (*SetExchangePairRequest) ProtoMessage() {} func (x *SetExchangePairRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[100] + mi := &file_rpc_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6245,7 +6489,7 @@ func (x *SetExchangePairRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetExchangePairRequest.ProtoReflect.Descriptor instead. func (*SetExchangePairRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{100} + return file_rpc_proto_rawDescGZIP(), []int{104} } func (x *SetExchangePairRequest) GetExchange() string { @@ -6289,7 +6533,7 @@ type GetOrderbookStreamRequest struct { func (x *GetOrderbookStreamRequest) Reset() { *x = GetOrderbookStreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[101] + mi := &file_rpc_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6302,7 +6546,7 @@ func (x *GetOrderbookStreamRequest) String() string { func (*GetOrderbookStreamRequest) ProtoMessage() {} func (x *GetOrderbookStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[101] + mi := &file_rpc_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6315,7 +6559,7 @@ func (x *GetOrderbookStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrderbookStreamRequest.ProtoReflect.Descriptor instead. func (*GetOrderbookStreamRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{101} + return file_rpc_proto_rawDescGZIP(), []int{105} } func (x *GetOrderbookStreamRequest) GetExchange() string { @@ -6350,7 +6594,7 @@ type GetExchangeOrderbookStreamRequest struct { func (x *GetExchangeOrderbookStreamRequest) Reset() { *x = GetExchangeOrderbookStreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[102] + mi := &file_rpc_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6363,7 +6607,7 @@ func (x *GetExchangeOrderbookStreamRequest) String() string { func (*GetExchangeOrderbookStreamRequest) ProtoMessage() {} func (x *GetExchangeOrderbookStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[102] + mi := &file_rpc_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6376,7 +6620,7 @@ func (x *GetExchangeOrderbookStreamRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetExchangeOrderbookStreamRequest.ProtoReflect.Descriptor instead. func (*GetExchangeOrderbookStreamRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{102} + return file_rpc_proto_rawDescGZIP(), []int{106} } func (x *GetExchangeOrderbookStreamRequest) GetExchange() string { @@ -6399,7 +6643,7 @@ type GetTickerStreamRequest struct { func (x *GetTickerStreamRequest) Reset() { *x = GetTickerStreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[103] + mi := &file_rpc_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6412,7 +6656,7 @@ func (x *GetTickerStreamRequest) String() string { func (*GetTickerStreamRequest) ProtoMessage() {} func (x *GetTickerStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[103] + mi := &file_rpc_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6425,7 +6669,7 @@ func (x *GetTickerStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTickerStreamRequest.ProtoReflect.Descriptor instead. func (*GetTickerStreamRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{103} + return file_rpc_proto_rawDescGZIP(), []int{107} } func (x *GetTickerStreamRequest) GetExchange() string { @@ -6460,7 +6704,7 @@ type GetExchangeTickerStreamRequest struct { func (x *GetExchangeTickerStreamRequest) Reset() { *x = GetExchangeTickerStreamRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[104] + mi := &file_rpc_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6473,7 +6717,7 @@ func (x *GetExchangeTickerStreamRequest) String() string { func (*GetExchangeTickerStreamRequest) ProtoMessage() {} func (x *GetExchangeTickerStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[104] + mi := &file_rpc_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6486,7 +6730,7 @@ func (x *GetExchangeTickerStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExchangeTickerStreamRequest.ProtoReflect.Descriptor instead. func (*GetExchangeTickerStreamRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{104} + return file_rpc_proto_rawDescGZIP(), []int{108} } func (x *GetExchangeTickerStreamRequest) GetExchange() string { @@ -6511,7 +6755,7 @@ type GetAuditEventRequest struct { func (x *GetAuditEventRequest) Reset() { *x = GetAuditEventRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[105] + mi := &file_rpc_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6524,7 +6768,7 @@ func (x *GetAuditEventRequest) String() string { func (*GetAuditEventRequest) ProtoMessage() {} func (x *GetAuditEventRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[105] + mi := &file_rpc_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6537,7 +6781,7 @@ func (x *GetAuditEventRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAuditEventRequest.ProtoReflect.Descriptor instead. func (*GetAuditEventRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{105} + return file_rpc_proto_rawDescGZIP(), []int{109} } func (x *GetAuditEventRequest) GetStartDate() string { @@ -6586,7 +6830,7 @@ type GetAuditEventResponse struct { func (x *GetAuditEventResponse) Reset() { *x = GetAuditEventResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[106] + mi := &file_rpc_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6599,7 +6843,7 @@ func (x *GetAuditEventResponse) String() string { func (*GetAuditEventResponse) ProtoMessage() {} func (x *GetAuditEventResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[106] + mi := &file_rpc_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6612,7 +6856,7 @@ func (x *GetAuditEventResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAuditEventResponse.ProtoReflect.Descriptor instead. func (*GetAuditEventResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{106} + return file_rpc_proto_rawDescGZIP(), []int{110} } func (x *GetAuditEventResponse) GetEvents() []*AuditEvent { @@ -6637,7 +6881,7 @@ type GetSavedTradesRequest struct { func (x *GetSavedTradesRequest) Reset() { *x = GetSavedTradesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[107] + mi := &file_rpc_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6650,7 +6894,7 @@ func (x *GetSavedTradesRequest) String() string { func (*GetSavedTradesRequest) ProtoMessage() {} func (x *GetSavedTradesRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[107] + mi := &file_rpc_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6663,7 +6907,7 @@ func (x *GetSavedTradesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSavedTradesRequest.ProtoReflect.Descriptor instead. func (*GetSavedTradesRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{107} + return file_rpc_proto_rawDescGZIP(), []int{111} } func (x *GetSavedTradesRequest) GetExchange() string { @@ -6716,7 +6960,7 @@ type SavedTrades struct { func (x *SavedTrades) Reset() { *x = SavedTrades{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[108] + mi := &file_rpc_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6729,7 +6973,7 @@ func (x *SavedTrades) String() string { func (*SavedTrades) ProtoMessage() {} func (x *SavedTrades) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[108] + mi := &file_rpc_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6742,7 +6986,7 @@ func (x *SavedTrades) ProtoReflect() protoreflect.Message { // Deprecated: Use SavedTrades.ProtoReflect.Descriptor instead. func (*SavedTrades) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{108} + return file_rpc_proto_rawDescGZIP(), []int{112} } func (x *SavedTrades) GetPrice() float64 { @@ -6794,7 +7038,7 @@ type SavedTradesResponse struct { func (x *SavedTradesResponse) Reset() { *x = SavedTradesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[109] + mi := &file_rpc_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6807,7 +7051,7 @@ func (x *SavedTradesResponse) String() string { func (*SavedTradesResponse) ProtoMessage() {} func (x *SavedTradesResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[109] + mi := &file_rpc_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6820,7 +7064,7 @@ func (x *SavedTradesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SavedTradesResponse.ProtoReflect.Descriptor instead. func (*SavedTradesResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{109} + return file_rpc_proto_rawDescGZIP(), []int{113} } func (x *SavedTradesResponse) GetExchangeName() string { @@ -6869,7 +7113,7 @@ type ConvertTradesToCandlesRequest struct { func (x *ConvertTradesToCandlesRequest) Reset() { *x = ConvertTradesToCandlesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[110] + mi := &file_rpc_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6882,7 +7126,7 @@ func (x *ConvertTradesToCandlesRequest) String() string { func (*ConvertTradesToCandlesRequest) ProtoMessage() {} func (x *ConvertTradesToCandlesRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[110] + mi := &file_rpc_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6895,7 +7139,7 @@ func (x *ConvertTradesToCandlesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConvertTradesToCandlesRequest.ProtoReflect.Descriptor instead. func (*ConvertTradesToCandlesRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{110} + return file_rpc_proto_rawDescGZIP(), []int{114} } func (x *ConvertTradesToCandlesRequest) GetExchange() string { @@ -6975,7 +7219,7 @@ type GetHistoricCandlesRequest struct { func (x *GetHistoricCandlesRequest) Reset() { *x = GetHistoricCandlesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[111] + mi := &file_rpc_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6988,7 +7232,7 @@ func (x *GetHistoricCandlesRequest) String() string { func (*GetHistoricCandlesRequest) ProtoMessage() {} func (x *GetHistoricCandlesRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[111] + mi := &file_rpc_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7001,7 +7245,7 @@ func (x *GetHistoricCandlesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetHistoricCandlesRequest.ProtoReflect.Descriptor instead. func (*GetHistoricCandlesRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{111} + return file_rpc_proto_rawDescGZIP(), []int{115} } func (x *GetHistoricCandlesRequest) GetExchange() string { @@ -7097,7 +7341,7 @@ type GetHistoricCandlesResponse struct { func (x *GetHistoricCandlesResponse) Reset() { *x = GetHistoricCandlesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[112] + mi := &file_rpc_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7110,7 +7354,7 @@ func (x *GetHistoricCandlesResponse) String() string { func (*GetHistoricCandlesResponse) ProtoMessage() {} func (x *GetHistoricCandlesResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[112] + mi := &file_rpc_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7123,7 +7367,7 @@ func (x *GetHistoricCandlesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetHistoricCandlesResponse.ProtoReflect.Descriptor instead. func (*GetHistoricCandlesResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{112} + return file_rpc_proto_rawDescGZIP(), []int{116} } func (x *GetHistoricCandlesResponse) GetExchange() string { @@ -7184,7 +7428,7 @@ type Candle struct { func (x *Candle) Reset() { *x = Candle{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[113] + mi := &file_rpc_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7197,7 +7441,7 @@ func (x *Candle) String() string { func (*Candle) ProtoMessage() {} func (x *Candle) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[113] + mi := &file_rpc_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7210,7 +7454,7 @@ func (x *Candle) ProtoReflect() protoreflect.Message { // Deprecated: Use Candle.ProtoReflect.Descriptor instead. func (*Candle) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{113} + return file_rpc_proto_rawDescGZIP(), []int{117} } func (x *Candle) GetTime() string { @@ -7269,7 +7513,7 @@ type AuditEvent struct { func (x *AuditEvent) Reset() { *x = AuditEvent{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[114] + mi := &file_rpc_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7282,7 +7526,7 @@ func (x *AuditEvent) String() string { func (*AuditEvent) ProtoMessage() {} func (x *AuditEvent) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[114] + mi := &file_rpc_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7295,7 +7539,7 @@ func (x *AuditEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use AuditEvent.ProtoReflect.Descriptor instead. func (*AuditEvent) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{114} + return file_rpc_proto_rawDescGZIP(), []int{118} } func (x *AuditEvent) GetType() string { @@ -7340,7 +7584,7 @@ type GCTScript struct { func (x *GCTScript) Reset() { *x = GCTScript{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[115] + mi := &file_rpc_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7353,7 +7597,7 @@ func (x *GCTScript) String() string { func (*GCTScript) ProtoMessage() {} func (x *GCTScript) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[115] + mi := &file_rpc_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7366,7 +7610,7 @@ func (x *GCTScript) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScript.ProtoReflect.Descriptor instead. func (*GCTScript) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{115} + return file_rpc_proto_rawDescGZIP(), []int{119} } func (x *GCTScript) GetUUID() string { @@ -7408,7 +7652,7 @@ type GCTScriptExecuteRequest struct { func (x *GCTScriptExecuteRequest) Reset() { *x = GCTScriptExecuteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[116] + mi := &file_rpc_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7421,7 +7665,7 @@ func (x *GCTScriptExecuteRequest) String() string { func (*GCTScriptExecuteRequest) ProtoMessage() {} func (x *GCTScriptExecuteRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[116] + mi := &file_rpc_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7434,7 +7678,7 @@ func (x *GCTScriptExecuteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptExecuteRequest.ProtoReflect.Descriptor instead. func (*GCTScriptExecuteRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{116} + return file_rpc_proto_rawDescGZIP(), []int{120} } func (x *GCTScriptExecuteRequest) GetScript() *GCTScript { @@ -7455,7 +7699,7 @@ type GCTScriptStopRequest struct { func (x *GCTScriptStopRequest) Reset() { *x = GCTScriptStopRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[117] + mi := &file_rpc_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7468,7 +7712,7 @@ func (x *GCTScriptStopRequest) String() string { func (*GCTScriptStopRequest) ProtoMessage() {} func (x *GCTScriptStopRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[117] + mi := &file_rpc_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7481,7 +7725,7 @@ func (x *GCTScriptStopRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptStopRequest.ProtoReflect.Descriptor instead. func (*GCTScriptStopRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{117} + return file_rpc_proto_rawDescGZIP(), []int{121} } func (x *GCTScriptStopRequest) GetScript() *GCTScript { @@ -7500,7 +7744,7 @@ type GCTScriptStopAllRequest struct { func (x *GCTScriptStopAllRequest) Reset() { *x = GCTScriptStopAllRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[118] + mi := &file_rpc_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7513,7 +7757,7 @@ func (x *GCTScriptStopAllRequest) String() string { func (*GCTScriptStopAllRequest) ProtoMessage() {} func (x *GCTScriptStopAllRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[118] + mi := &file_rpc_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7526,7 +7770,7 @@ func (x *GCTScriptStopAllRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptStopAllRequest.ProtoReflect.Descriptor instead. func (*GCTScriptStopAllRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{118} + return file_rpc_proto_rawDescGZIP(), []int{122} } type GCTScriptStatusRequest struct { @@ -7538,7 +7782,7 @@ type GCTScriptStatusRequest struct { func (x *GCTScriptStatusRequest) Reset() { *x = GCTScriptStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[119] + mi := &file_rpc_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7551,7 +7795,7 @@ func (x *GCTScriptStatusRequest) String() string { func (*GCTScriptStatusRequest) ProtoMessage() {} func (x *GCTScriptStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[119] + mi := &file_rpc_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7564,7 +7808,7 @@ func (x *GCTScriptStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptStatusRequest.ProtoReflect.Descriptor instead. func (*GCTScriptStatusRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{119} + return file_rpc_proto_rawDescGZIP(), []int{123} } type GCTScriptListAllRequest struct { @@ -7576,7 +7820,7 @@ type GCTScriptListAllRequest struct { func (x *GCTScriptListAllRequest) Reset() { *x = GCTScriptListAllRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[120] + mi := &file_rpc_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7589,7 +7833,7 @@ func (x *GCTScriptListAllRequest) String() string { func (*GCTScriptListAllRequest) ProtoMessage() {} func (x *GCTScriptListAllRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[120] + mi := &file_rpc_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7602,7 +7846,7 @@ func (x *GCTScriptListAllRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptListAllRequest.ProtoReflect.Descriptor instead. func (*GCTScriptListAllRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{120} + return file_rpc_proto_rawDescGZIP(), []int{124} } type GCTScriptUploadRequest struct { @@ -7620,7 +7864,7 @@ type GCTScriptUploadRequest struct { func (x *GCTScriptUploadRequest) Reset() { *x = GCTScriptUploadRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[121] + mi := &file_rpc_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7633,7 +7877,7 @@ func (x *GCTScriptUploadRequest) String() string { func (*GCTScriptUploadRequest) ProtoMessage() {} func (x *GCTScriptUploadRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[121] + mi := &file_rpc_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7646,7 +7890,7 @@ func (x *GCTScriptUploadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptUploadRequest.ProtoReflect.Descriptor instead. func (*GCTScriptUploadRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{121} + return file_rpc_proto_rawDescGZIP(), []int{125} } func (x *GCTScriptUploadRequest) GetScriptName() string { @@ -7695,7 +7939,7 @@ type GCTScriptReadScriptRequest struct { func (x *GCTScriptReadScriptRequest) Reset() { *x = GCTScriptReadScriptRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[122] + mi := &file_rpc_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7708,7 +7952,7 @@ func (x *GCTScriptReadScriptRequest) String() string { func (*GCTScriptReadScriptRequest) ProtoMessage() {} func (x *GCTScriptReadScriptRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[122] + mi := &file_rpc_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7721,7 +7965,7 @@ func (x *GCTScriptReadScriptRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptReadScriptRequest.ProtoReflect.Descriptor instead. func (*GCTScriptReadScriptRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{122} + return file_rpc_proto_rawDescGZIP(), []int{126} } func (x *GCTScriptReadScriptRequest) GetScript() *GCTScript { @@ -7742,7 +7986,7 @@ type GCTScriptQueryRequest struct { func (x *GCTScriptQueryRequest) Reset() { *x = GCTScriptQueryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[123] + mi := &file_rpc_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7755,7 +7999,7 @@ func (x *GCTScriptQueryRequest) String() string { func (*GCTScriptQueryRequest) ProtoMessage() {} func (x *GCTScriptQueryRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[123] + mi := &file_rpc_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7768,7 +8012,7 @@ func (x *GCTScriptQueryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptQueryRequest.ProtoReflect.Descriptor instead. func (*GCTScriptQueryRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{123} + return file_rpc_proto_rawDescGZIP(), []int{127} } func (x *GCTScriptQueryRequest) GetScript() *GCTScript { @@ -7790,7 +8034,7 @@ type GCTScriptAutoLoadRequest struct { func (x *GCTScriptAutoLoadRequest) Reset() { *x = GCTScriptAutoLoadRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[124] + mi := &file_rpc_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7803,7 +8047,7 @@ func (x *GCTScriptAutoLoadRequest) String() string { func (*GCTScriptAutoLoadRequest) ProtoMessage() {} func (x *GCTScriptAutoLoadRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[124] + mi := &file_rpc_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7816,7 +8060,7 @@ func (x *GCTScriptAutoLoadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptAutoLoadRequest.ProtoReflect.Descriptor instead. func (*GCTScriptAutoLoadRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{124} + return file_rpc_proto_rawDescGZIP(), []int{128} } func (x *GCTScriptAutoLoadRequest) GetScript() string { @@ -7845,7 +8089,7 @@ type GCTScriptStatusResponse struct { func (x *GCTScriptStatusResponse) Reset() { *x = GCTScriptStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[125] + mi := &file_rpc_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7858,7 +8102,7 @@ func (x *GCTScriptStatusResponse) String() string { func (*GCTScriptStatusResponse) ProtoMessage() {} func (x *GCTScriptStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[125] + mi := &file_rpc_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7871,7 +8115,7 @@ func (x *GCTScriptStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptStatusResponse.ProtoReflect.Descriptor instead. func (*GCTScriptStatusResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{125} + return file_rpc_proto_rawDescGZIP(), []int{129} } func (x *GCTScriptStatusResponse) GetStatus() string { @@ -7901,7 +8145,7 @@ type GCTScriptQueryResponse struct { func (x *GCTScriptQueryResponse) Reset() { *x = GCTScriptQueryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[126] + mi := &file_rpc_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7914,7 +8158,7 @@ func (x *GCTScriptQueryResponse) String() string { func (*GCTScriptQueryResponse) ProtoMessage() {} func (x *GCTScriptQueryResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[126] + mi := &file_rpc_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7927,7 +8171,7 @@ func (x *GCTScriptQueryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GCTScriptQueryResponse.ProtoReflect.Descriptor instead. func (*GCTScriptQueryResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{126} + return file_rpc_proto_rawDescGZIP(), []int{130} } func (x *GCTScriptQueryResponse) GetStatus() string { @@ -7963,7 +8207,7 @@ type GenericResponse struct { func (x *GenericResponse) Reset() { *x = GenericResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[127] + mi := &file_rpc_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7976,7 +8220,7 @@ func (x *GenericResponse) String() string { func (*GenericResponse) ProtoMessage() {} func (x *GenericResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[127] + mi := &file_rpc_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7989,7 +8233,7 @@ func (x *GenericResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenericResponse.ProtoReflect.Descriptor instead. func (*GenericResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{127} + return file_rpc_proto_rawDescGZIP(), []int{131} } func (x *GenericResponse) GetStatus() string { @@ -8019,7 +8263,7 @@ type SetExchangeAssetRequest struct { func (x *SetExchangeAssetRequest) Reset() { *x = SetExchangeAssetRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[128] + mi := &file_rpc_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8032,7 +8276,7 @@ func (x *SetExchangeAssetRequest) String() string { func (*SetExchangeAssetRequest) ProtoMessage() {} func (x *SetExchangeAssetRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[128] + mi := &file_rpc_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8045,7 +8289,7 @@ func (x *SetExchangeAssetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetExchangeAssetRequest.ProtoReflect.Descriptor instead. func (*SetExchangeAssetRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{128} + return file_rpc_proto_rawDescGZIP(), []int{132} } func (x *SetExchangeAssetRequest) GetExchange() string { @@ -8081,7 +8325,7 @@ type SetExchangeAllPairsRequest struct { func (x *SetExchangeAllPairsRequest) Reset() { *x = SetExchangeAllPairsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[129] + mi := &file_rpc_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8094,7 +8338,7 @@ func (x *SetExchangeAllPairsRequest) String() string { func (*SetExchangeAllPairsRequest) ProtoMessage() {} func (x *SetExchangeAllPairsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[129] + mi := &file_rpc_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8107,7 +8351,7 @@ func (x *SetExchangeAllPairsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetExchangeAllPairsRequest.ProtoReflect.Descriptor instead. func (*SetExchangeAllPairsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{129} + return file_rpc_proto_rawDescGZIP(), []int{133} } func (x *SetExchangeAllPairsRequest) GetExchange() string { @@ -8135,7 +8379,7 @@ type UpdateExchangeSupportedPairsRequest struct { func (x *UpdateExchangeSupportedPairsRequest) Reset() { *x = UpdateExchangeSupportedPairsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[130] + mi := &file_rpc_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8148,7 +8392,7 @@ func (x *UpdateExchangeSupportedPairsRequest) String() string { func (*UpdateExchangeSupportedPairsRequest) ProtoMessage() {} func (x *UpdateExchangeSupportedPairsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[130] + mi := &file_rpc_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8161,7 +8405,7 @@ func (x *UpdateExchangeSupportedPairsRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use UpdateExchangeSupportedPairsRequest.ProtoReflect.Descriptor instead. func (*UpdateExchangeSupportedPairsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{130} + return file_rpc_proto_rawDescGZIP(), []int{134} } func (x *UpdateExchangeSupportedPairsRequest) GetExchange() string { @@ -8182,7 +8426,7 @@ type GetExchangeAssetsRequest struct { func (x *GetExchangeAssetsRequest) Reset() { *x = GetExchangeAssetsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[131] + mi := &file_rpc_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8195,7 +8439,7 @@ func (x *GetExchangeAssetsRequest) String() string { func (*GetExchangeAssetsRequest) ProtoMessage() {} func (x *GetExchangeAssetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[131] + mi := &file_rpc_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8208,7 +8452,7 @@ func (x *GetExchangeAssetsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExchangeAssetsRequest.ProtoReflect.Descriptor instead. func (*GetExchangeAssetsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{131} + return file_rpc_proto_rawDescGZIP(), []int{135} } func (x *GetExchangeAssetsRequest) GetExchange() string { @@ -8229,7 +8473,7 @@ type GetExchangeAssetsResponse struct { func (x *GetExchangeAssetsResponse) Reset() { *x = GetExchangeAssetsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[132] + mi := &file_rpc_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8242,7 +8486,7 @@ func (x *GetExchangeAssetsResponse) String() string { func (*GetExchangeAssetsResponse) ProtoMessage() {} func (x *GetExchangeAssetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[132] + mi := &file_rpc_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8255,7 +8499,7 @@ func (x *GetExchangeAssetsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetExchangeAssetsResponse.ProtoReflect.Descriptor instead. func (*GetExchangeAssetsResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{132} + return file_rpc_proto_rawDescGZIP(), []int{136} } func (x *GetExchangeAssetsResponse) GetAssets() string { @@ -8276,7 +8520,7 @@ type WebsocketGetInfoRequest struct { func (x *WebsocketGetInfoRequest) Reset() { *x = WebsocketGetInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[133] + mi := &file_rpc_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8289,7 +8533,7 @@ func (x *WebsocketGetInfoRequest) String() string { func (*WebsocketGetInfoRequest) ProtoMessage() {} func (x *WebsocketGetInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[133] + mi := &file_rpc_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8302,7 +8546,7 @@ func (x *WebsocketGetInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketGetInfoRequest.ProtoReflect.Descriptor instead. func (*WebsocketGetInfoRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{133} + return file_rpc_proto_rawDescGZIP(), []int{137} } func (x *WebsocketGetInfoRequest) GetExchange() string { @@ -8329,7 +8573,7 @@ type WebsocketGetInfoResponse struct { func (x *WebsocketGetInfoResponse) Reset() { *x = WebsocketGetInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[134] + mi := &file_rpc_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8342,7 +8586,7 @@ func (x *WebsocketGetInfoResponse) String() string { func (*WebsocketGetInfoResponse) ProtoMessage() {} func (x *WebsocketGetInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[134] + mi := &file_rpc_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8355,7 +8599,7 @@ func (x *WebsocketGetInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketGetInfoResponse.ProtoReflect.Descriptor instead. func (*WebsocketGetInfoResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{134} + return file_rpc_proto_rawDescGZIP(), []int{138} } func (x *WebsocketGetInfoResponse) GetExchange() string { @@ -8419,7 +8663,7 @@ type WebsocketSetEnabledRequest struct { func (x *WebsocketSetEnabledRequest) Reset() { *x = WebsocketSetEnabledRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[135] + mi := &file_rpc_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8432,7 +8676,7 @@ func (x *WebsocketSetEnabledRequest) String() string { func (*WebsocketSetEnabledRequest) ProtoMessage() {} func (x *WebsocketSetEnabledRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[135] + mi := &file_rpc_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8445,7 +8689,7 @@ func (x *WebsocketSetEnabledRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketSetEnabledRequest.ProtoReflect.Descriptor instead. func (*WebsocketSetEnabledRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{135} + return file_rpc_proto_rawDescGZIP(), []int{139} } func (x *WebsocketSetEnabledRequest) GetExchange() string { @@ -8473,7 +8717,7 @@ type WebsocketGetSubscriptionsRequest struct { func (x *WebsocketGetSubscriptionsRequest) Reset() { *x = WebsocketGetSubscriptionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[136] + mi := &file_rpc_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8486,7 +8730,7 @@ func (x *WebsocketGetSubscriptionsRequest) String() string { func (*WebsocketGetSubscriptionsRequest) ProtoMessage() {} func (x *WebsocketGetSubscriptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[136] + mi := &file_rpc_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8499,7 +8743,7 @@ func (x *WebsocketGetSubscriptionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketGetSubscriptionsRequest.ProtoReflect.Descriptor instead. func (*WebsocketGetSubscriptionsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{136} + return file_rpc_proto_rawDescGZIP(), []int{140} } func (x *WebsocketGetSubscriptionsRequest) GetExchange() string { @@ -8523,7 +8767,7 @@ type WebsocketSubscription struct { func (x *WebsocketSubscription) Reset() { *x = WebsocketSubscription{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[137] + mi := &file_rpc_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8536,7 +8780,7 @@ func (x *WebsocketSubscription) String() string { func (*WebsocketSubscription) ProtoMessage() {} func (x *WebsocketSubscription) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[137] + mi := &file_rpc_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8549,7 +8793,7 @@ func (x *WebsocketSubscription) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketSubscription.ProtoReflect.Descriptor instead. func (*WebsocketSubscription) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{137} + return file_rpc_proto_rawDescGZIP(), []int{141} } func (x *WebsocketSubscription) GetChannel() string { @@ -8592,7 +8836,7 @@ type WebsocketGetSubscriptionsResponse struct { func (x *WebsocketGetSubscriptionsResponse) Reset() { *x = WebsocketGetSubscriptionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[138] + mi := &file_rpc_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8605,7 +8849,7 @@ func (x *WebsocketGetSubscriptionsResponse) String() string { func (*WebsocketGetSubscriptionsResponse) ProtoMessage() {} func (x *WebsocketGetSubscriptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[138] + mi := &file_rpc_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8618,7 +8862,7 @@ func (x *WebsocketGetSubscriptionsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use WebsocketGetSubscriptionsResponse.ProtoReflect.Descriptor instead. func (*WebsocketGetSubscriptionsResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{138} + return file_rpc_proto_rawDescGZIP(), []int{142} } func (x *WebsocketGetSubscriptionsResponse) GetExchange() string { @@ -8647,7 +8891,7 @@ type WebsocketSetProxyRequest struct { func (x *WebsocketSetProxyRequest) Reset() { *x = WebsocketSetProxyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[139] + mi := &file_rpc_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8660,7 +8904,7 @@ func (x *WebsocketSetProxyRequest) String() string { func (*WebsocketSetProxyRequest) ProtoMessage() {} func (x *WebsocketSetProxyRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[139] + mi := &file_rpc_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8673,7 +8917,7 @@ func (x *WebsocketSetProxyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketSetProxyRequest.ProtoReflect.Descriptor instead. func (*WebsocketSetProxyRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{139} + return file_rpc_proto_rawDescGZIP(), []int{143} } func (x *WebsocketSetProxyRequest) GetExchange() string { @@ -8702,7 +8946,7 @@ type WebsocketSetURLRequest struct { func (x *WebsocketSetURLRequest) Reset() { *x = WebsocketSetURLRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[140] + mi := &file_rpc_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8715,7 +8959,7 @@ func (x *WebsocketSetURLRequest) String() string { func (*WebsocketSetURLRequest) ProtoMessage() {} func (x *WebsocketSetURLRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[140] + mi := &file_rpc_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8728,7 +8972,7 @@ func (x *WebsocketSetURLRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WebsocketSetURLRequest.ProtoReflect.Descriptor instead. func (*WebsocketSetURLRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{140} + return file_rpc_proto_rawDescGZIP(), []int{144} } func (x *WebsocketSetURLRequest) GetExchange() string { @@ -8761,7 +9005,7 @@ type FindMissingCandlePeriodsRequest struct { func (x *FindMissingCandlePeriodsRequest) Reset() { *x = FindMissingCandlePeriodsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[141] + mi := &file_rpc_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8774,7 +9018,7 @@ func (x *FindMissingCandlePeriodsRequest) String() string { func (*FindMissingCandlePeriodsRequest) ProtoMessage() {} func (x *FindMissingCandlePeriodsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[141] + mi := &file_rpc_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8787,7 +9031,7 @@ func (x *FindMissingCandlePeriodsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindMissingCandlePeriodsRequest.ProtoReflect.Descriptor instead. func (*FindMissingCandlePeriodsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{141} + return file_rpc_proto_rawDescGZIP(), []int{145} } func (x *FindMissingCandlePeriodsRequest) GetExchangeName() string { @@ -8847,7 +9091,7 @@ type FindMissingTradePeriodsRequest struct { func (x *FindMissingTradePeriodsRequest) Reset() { *x = FindMissingTradePeriodsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[142] + mi := &file_rpc_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8860,7 +9104,7 @@ func (x *FindMissingTradePeriodsRequest) String() string { func (*FindMissingTradePeriodsRequest) ProtoMessage() {} func (x *FindMissingTradePeriodsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[142] + mi := &file_rpc_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8873,7 +9117,7 @@ func (x *FindMissingTradePeriodsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FindMissingTradePeriodsRequest.ProtoReflect.Descriptor instead. func (*FindMissingTradePeriodsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{142} + return file_rpc_proto_rawDescGZIP(), []int{146} } func (x *FindMissingTradePeriodsRequest) GetExchangeName() string { @@ -8926,7 +9170,7 @@ type FindMissingIntervalsResponse struct { func (x *FindMissingIntervalsResponse) Reset() { *x = FindMissingIntervalsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[143] + mi := &file_rpc_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8939,7 +9183,7 @@ func (x *FindMissingIntervalsResponse) String() string { func (*FindMissingIntervalsResponse) ProtoMessage() {} func (x *FindMissingIntervalsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[143] + mi := &file_rpc_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8952,7 +9196,7 @@ func (x *FindMissingIntervalsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FindMissingIntervalsResponse.ProtoReflect.Descriptor instead. func (*FindMissingIntervalsResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{143} + return file_rpc_proto_rawDescGZIP(), []int{147} } func (x *FindMissingIntervalsResponse) GetExchangeName() string { @@ -9002,7 +9246,7 @@ type SetExchangeTradeProcessingRequest struct { func (x *SetExchangeTradeProcessingRequest) Reset() { *x = SetExchangeTradeProcessingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[144] + mi := &file_rpc_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9015,7 +9259,7 @@ func (x *SetExchangeTradeProcessingRequest) String() string { func (*SetExchangeTradeProcessingRequest) ProtoMessage() {} func (x *SetExchangeTradeProcessingRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[144] + mi := &file_rpc_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9028,7 +9272,7 @@ func (x *SetExchangeTradeProcessingRequest) ProtoReflect() protoreflect.Message // Deprecated: Use SetExchangeTradeProcessingRequest.ProtoReflect.Descriptor instead. func (*SetExchangeTradeProcessingRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{144} + return file_rpc_proto_rawDescGZIP(), []int{148} } func (x *SetExchangeTradeProcessingRequest) GetExchange() string { @@ -9074,7 +9318,7 @@ type UpsertDataHistoryJobRequest struct { func (x *UpsertDataHistoryJobRequest) Reset() { *x = UpsertDataHistoryJobRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[145] + mi := &file_rpc_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9087,7 +9331,7 @@ func (x *UpsertDataHistoryJobRequest) String() string { func (*UpsertDataHistoryJobRequest) ProtoMessage() {} func (x *UpsertDataHistoryJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[145] + mi := &file_rpc_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9100,7 +9344,7 @@ func (x *UpsertDataHistoryJobRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertDataHistoryJobRequest.ProtoReflect.Descriptor instead. func (*UpsertDataHistoryJobRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{145} + return file_rpc_proto_rawDescGZIP(), []int{149} } func (x *UpsertDataHistoryJobRequest) GetNickname() string { @@ -9247,7 +9491,7 @@ type InsertSequentialJobsRequest struct { func (x *InsertSequentialJobsRequest) Reset() { *x = InsertSequentialJobsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[146] + mi := &file_rpc_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9260,7 +9504,7 @@ func (x *InsertSequentialJobsRequest) String() string { func (*InsertSequentialJobsRequest) ProtoMessage() {} func (x *InsertSequentialJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[146] + mi := &file_rpc_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9273,7 +9517,7 @@ func (x *InsertSequentialJobsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InsertSequentialJobsRequest.ProtoReflect.Descriptor instead. func (*InsertSequentialJobsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{146} + return file_rpc_proto_rawDescGZIP(), []int{150} } func (x *InsertSequentialJobsRequest) GetJobs() []*UpsertDataHistoryJobRequest { @@ -9294,7 +9538,7 @@ type InsertSequentialJobsResponse struct { func (x *InsertSequentialJobsResponse) Reset() { *x = InsertSequentialJobsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[147] + mi := &file_rpc_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9307,7 +9551,7 @@ func (x *InsertSequentialJobsResponse) String() string { func (*InsertSequentialJobsResponse) ProtoMessage() {} func (x *InsertSequentialJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[147] + mi := &file_rpc_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9320,7 +9564,7 @@ func (x *InsertSequentialJobsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InsertSequentialJobsResponse.ProtoReflect.Descriptor instead. func (*InsertSequentialJobsResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{147} + return file_rpc_proto_rawDescGZIP(), []int{151} } func (x *InsertSequentialJobsResponse) GetJobs() []*UpsertDataHistoryJobResponse { @@ -9342,7 +9586,7 @@ type UpsertDataHistoryJobResponse struct { func (x *UpsertDataHistoryJobResponse) Reset() { *x = UpsertDataHistoryJobResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[148] + mi := &file_rpc_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9355,7 +9599,7 @@ func (x *UpsertDataHistoryJobResponse) String() string { func (*UpsertDataHistoryJobResponse) ProtoMessage() {} func (x *UpsertDataHistoryJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[148] + mi := &file_rpc_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9368,7 +9612,7 @@ func (x *UpsertDataHistoryJobResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertDataHistoryJobResponse.ProtoReflect.Descriptor instead. func (*UpsertDataHistoryJobResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{148} + return file_rpc_proto_rawDescGZIP(), []int{152} } func (x *UpsertDataHistoryJobResponse) GetMessage() string { @@ -9398,7 +9642,7 @@ type GetDataHistoryJobDetailsRequest struct { func (x *GetDataHistoryJobDetailsRequest) Reset() { *x = GetDataHistoryJobDetailsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[149] + mi := &file_rpc_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9411,7 +9655,7 @@ func (x *GetDataHistoryJobDetailsRequest) String() string { func (*GetDataHistoryJobDetailsRequest) ProtoMessage() {} func (x *GetDataHistoryJobDetailsRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[149] + mi := &file_rpc_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9424,7 +9668,7 @@ func (x *GetDataHistoryJobDetailsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDataHistoryJobDetailsRequest.ProtoReflect.Descriptor instead. func (*GetDataHistoryJobDetailsRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{149} + return file_rpc_proto_rawDescGZIP(), []int{153} } func (x *GetDataHistoryJobDetailsRequest) GetId() string { @@ -9480,7 +9724,7 @@ type DataHistoryJob struct { func (x *DataHistoryJob) Reset() { *x = DataHistoryJob{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[150] + mi := &file_rpc_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9493,7 +9737,7 @@ func (x *DataHistoryJob) String() string { func (*DataHistoryJob) ProtoMessage() {} func (x *DataHistoryJob) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[150] + mi := &file_rpc_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9506,7 +9750,7 @@ func (x *DataHistoryJob) ProtoReflect() protoreflect.Message { // Deprecated: Use DataHistoryJob.ProtoReflect.Descriptor instead. func (*DataHistoryJob) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{150} + return file_rpc_proto_rawDescGZIP(), []int{154} } func (x *DataHistoryJob) GetId() string { @@ -9678,7 +9922,7 @@ type DataHistoryJobResult struct { func (x *DataHistoryJobResult) Reset() { *x = DataHistoryJobResult{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[151] + mi := &file_rpc_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9691,7 +9935,7 @@ func (x *DataHistoryJobResult) String() string { func (*DataHistoryJobResult) ProtoMessage() {} func (x *DataHistoryJobResult) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[151] + mi := &file_rpc_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9704,7 +9948,7 @@ func (x *DataHistoryJobResult) ProtoReflect() protoreflect.Message { // Deprecated: Use DataHistoryJobResult.ProtoReflect.Descriptor instead. func (*DataHistoryJobResult) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{151} + return file_rpc_proto_rawDescGZIP(), []int{155} } func (x *DataHistoryJobResult) GetStartDate() string { @@ -9753,7 +9997,7 @@ type DataHistoryJobs struct { func (x *DataHistoryJobs) Reset() { *x = DataHistoryJobs{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[152] + mi := &file_rpc_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9766,7 +10010,7 @@ func (x *DataHistoryJobs) String() string { func (*DataHistoryJobs) ProtoMessage() {} func (x *DataHistoryJobs) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[152] + mi := &file_rpc_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9779,7 +10023,7 @@ func (x *DataHistoryJobs) ProtoReflect() protoreflect.Message { // Deprecated: Use DataHistoryJobs.ProtoReflect.Descriptor instead. func (*DataHistoryJobs) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{152} + return file_rpc_proto_rawDescGZIP(), []int{156} } func (x *DataHistoryJobs) GetResults() []*DataHistoryJob { @@ -9801,7 +10045,7 @@ type GetDataHistoryJobsBetweenRequest struct { func (x *GetDataHistoryJobsBetweenRequest) Reset() { *x = GetDataHistoryJobsBetweenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[153] + mi := &file_rpc_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9814,7 +10058,7 @@ func (x *GetDataHistoryJobsBetweenRequest) String() string { func (*GetDataHistoryJobsBetweenRequest) ProtoMessage() {} func (x *GetDataHistoryJobsBetweenRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[153] + mi := &file_rpc_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9827,7 +10071,7 @@ func (x *GetDataHistoryJobsBetweenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDataHistoryJobsBetweenRequest.ProtoReflect.Descriptor instead. func (*GetDataHistoryJobsBetweenRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{153} + return file_rpc_proto_rawDescGZIP(), []int{157} } func (x *GetDataHistoryJobsBetweenRequest) GetStartDate() string { @@ -9857,7 +10101,7 @@ type SetDataHistoryJobStatusRequest struct { func (x *SetDataHistoryJobStatusRequest) Reset() { *x = SetDataHistoryJobStatusRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[154] + mi := &file_rpc_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9870,7 +10114,7 @@ func (x *SetDataHistoryJobStatusRequest) String() string { func (*SetDataHistoryJobStatusRequest) ProtoMessage() {} func (x *SetDataHistoryJobStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[154] + mi := &file_rpc_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9883,7 +10127,7 @@ func (x *SetDataHistoryJobStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDataHistoryJobStatusRequest.ProtoReflect.Descriptor instead. func (*SetDataHistoryJobStatusRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{154} + return file_rpc_proto_rawDescGZIP(), []int{158} } func (x *SetDataHistoryJobStatusRequest) GetId() string { @@ -9919,7 +10163,7 @@ type UpdateDataHistoryJobPrerequisiteRequest struct { func (x *UpdateDataHistoryJobPrerequisiteRequest) Reset() { *x = UpdateDataHistoryJobPrerequisiteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[155] + mi := &file_rpc_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9932,7 +10176,7 @@ func (x *UpdateDataHistoryJobPrerequisiteRequest) String() string { func (*UpdateDataHistoryJobPrerequisiteRequest) ProtoMessage() {} func (x *UpdateDataHistoryJobPrerequisiteRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[155] + mi := &file_rpc_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9945,7 +10189,7 @@ func (x *UpdateDataHistoryJobPrerequisiteRequest) ProtoReflect() protoreflect.Me // Deprecated: Use UpdateDataHistoryJobPrerequisiteRequest.ProtoReflect.Descriptor instead. func (*UpdateDataHistoryJobPrerequisiteRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{155} + return file_rpc_proto_rawDescGZIP(), []int{159} } func (x *UpdateDataHistoryJobPrerequisiteRequest) GetNickname() string { @@ -9978,7 +10222,7 @@ type ModifyOrderRequest struct { func (x *ModifyOrderRequest) Reset() { *x = ModifyOrderRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[156] + mi := &file_rpc_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9991,7 +10235,7 @@ func (x *ModifyOrderRequest) String() string { func (*ModifyOrderRequest) ProtoMessage() {} func (x *ModifyOrderRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[156] + mi := &file_rpc_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10004,7 +10248,7 @@ func (x *ModifyOrderRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ModifyOrderRequest.ProtoReflect.Descriptor instead. func (*ModifyOrderRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{156} + return file_rpc_proto_rawDescGZIP(), []int{160} } func (x *ModifyOrderRequest) GetExchange() string { @@ -10060,7 +10304,7 @@ type ModifyOrderResponse struct { func (x *ModifyOrderResponse) Reset() { *x = ModifyOrderResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[157] + mi := &file_rpc_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10073,7 +10317,7 @@ func (x *ModifyOrderResponse) String() string { func (*ModifyOrderResponse) ProtoMessage() {} func (x *ModifyOrderResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[157] + mi := &file_rpc_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10086,7 +10330,7 @@ func (x *ModifyOrderResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ModifyOrderResponse.ProtoReflect.Descriptor instead. func (*ModifyOrderResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{157} + return file_rpc_proto_rawDescGZIP(), []int{161} } func (x *ModifyOrderResponse) GetModifiedOrderId() string { @@ -10107,7 +10351,7 @@ type CurrencyStateGetAllRequest struct { func (x *CurrencyStateGetAllRequest) Reset() { *x = CurrencyStateGetAllRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[158] + mi := &file_rpc_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10120,7 +10364,7 @@ func (x *CurrencyStateGetAllRequest) String() string { func (*CurrencyStateGetAllRequest) ProtoMessage() {} func (x *CurrencyStateGetAllRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[158] + mi := &file_rpc_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10133,7 +10377,7 @@ func (x *CurrencyStateGetAllRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyStateGetAllRequest.ProtoReflect.Descriptor instead. func (*CurrencyStateGetAllRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{158} + return file_rpc_proto_rawDescGZIP(), []int{162} } func (x *CurrencyStateGetAllRequest) GetExchange() string { @@ -10156,7 +10400,7 @@ type CurrencyStateTradingRequest struct { func (x *CurrencyStateTradingRequest) Reset() { *x = CurrencyStateTradingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[159] + mi := &file_rpc_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10169,7 +10413,7 @@ func (x *CurrencyStateTradingRequest) String() string { func (*CurrencyStateTradingRequest) ProtoMessage() {} func (x *CurrencyStateTradingRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[159] + mi := &file_rpc_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10182,7 +10426,7 @@ func (x *CurrencyStateTradingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyStateTradingRequest.ProtoReflect.Descriptor instead. func (*CurrencyStateTradingRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{159} + return file_rpc_proto_rawDescGZIP(), []int{163} } func (x *CurrencyStateTradingRequest) GetExchange() string { @@ -10219,7 +10463,7 @@ type CurrencyStateTradingPairRequest struct { func (x *CurrencyStateTradingPairRequest) Reset() { *x = CurrencyStateTradingPairRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[160] + mi := &file_rpc_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10232,7 +10476,7 @@ func (x *CurrencyStateTradingPairRequest) String() string { func (*CurrencyStateTradingPairRequest) ProtoMessage() {} func (x *CurrencyStateTradingPairRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[160] + mi := &file_rpc_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10245,7 +10489,7 @@ func (x *CurrencyStateTradingPairRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyStateTradingPairRequest.ProtoReflect.Descriptor instead. func (*CurrencyStateTradingPairRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{160} + return file_rpc_proto_rawDescGZIP(), []int{164} } func (x *CurrencyStateTradingPairRequest) GetExchange() string { @@ -10282,7 +10526,7 @@ type CurrencyStateWithdrawRequest struct { func (x *CurrencyStateWithdrawRequest) Reset() { *x = CurrencyStateWithdrawRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[161] + mi := &file_rpc_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10295,7 +10539,7 @@ func (x *CurrencyStateWithdrawRequest) String() string { func (*CurrencyStateWithdrawRequest) ProtoMessage() {} func (x *CurrencyStateWithdrawRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[161] + mi := &file_rpc_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10308,7 +10552,7 @@ func (x *CurrencyStateWithdrawRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyStateWithdrawRequest.ProtoReflect.Descriptor instead. func (*CurrencyStateWithdrawRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{161} + return file_rpc_proto_rawDescGZIP(), []int{165} } func (x *CurrencyStateWithdrawRequest) GetExchange() string { @@ -10345,7 +10589,7 @@ type CurrencyStateDepositRequest struct { func (x *CurrencyStateDepositRequest) Reset() { *x = CurrencyStateDepositRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[162] + mi := &file_rpc_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10358,7 +10602,7 @@ func (x *CurrencyStateDepositRequest) String() string { func (*CurrencyStateDepositRequest) ProtoMessage() {} func (x *CurrencyStateDepositRequest) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[162] + mi := &file_rpc_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10371,7 +10615,7 @@ func (x *CurrencyStateDepositRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyStateDepositRequest.ProtoReflect.Descriptor instead. func (*CurrencyStateDepositRequest) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{162} + return file_rpc_proto_rawDescGZIP(), []int{166} } func (x *CurrencyStateDepositRequest) GetExchange() string { @@ -10406,7 +10650,7 @@ type CurrencyStateResponse struct { func (x *CurrencyStateResponse) Reset() { *x = CurrencyStateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[163] + mi := &file_rpc_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10419,7 +10663,7 @@ func (x *CurrencyStateResponse) String() string { func (*CurrencyStateResponse) ProtoMessage() {} func (x *CurrencyStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[163] + mi := &file_rpc_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10432,7 +10676,7 @@ func (x *CurrencyStateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyStateResponse.ProtoReflect.Descriptor instead. func (*CurrencyStateResponse) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{163} + return file_rpc_proto_rawDescGZIP(), []int{167} } func (x *CurrencyStateResponse) GetCurrencyStates() []*CurrencyState { @@ -10457,7 +10701,7 @@ type CurrencyState struct { func (x *CurrencyState) Reset() { *x = CurrencyState{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[164] + mi := &file_rpc_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10470,7 +10714,7 @@ func (x *CurrencyState) String() string { func (*CurrencyState) ProtoMessage() {} func (x *CurrencyState) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[164] + mi := &file_rpc_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10483,7 +10727,7 @@ func (x *CurrencyState) ProtoReflect() protoreflect.Message { // Deprecated: Use CurrencyState.ProtoReflect.Descriptor instead. func (*CurrencyState) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{164} + return file_rpc_proto_rawDescGZIP(), []int{168} } func (x *CurrencyState) GetCurrency() string { @@ -10532,7 +10776,7 @@ type CancelBatchOrdersResponse_Orders struct { func (x *CancelBatchOrdersResponse_Orders) Reset() { *x = CancelBatchOrdersResponse_Orders{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[175] + mi := &file_rpc_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10545,7 +10789,7 @@ func (x *CancelBatchOrdersResponse_Orders) String() string { func (*CancelBatchOrdersResponse_Orders) ProtoMessage() {} func (x *CancelBatchOrdersResponse_Orders) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[175] + mi := &file_rpc_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10580,7 +10824,7 @@ type CancelAllOrdersResponse_Orders struct { func (x *CancelAllOrdersResponse_Orders) Reset() { *x = CancelAllOrdersResponse_Orders{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[177] + mi := &file_rpc_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10593,7 +10837,7 @@ func (x *CancelAllOrdersResponse_Orders) String() string { func (*CancelAllOrdersResponse_Orders) ProtoMessage() {} func (x *CancelAllOrdersResponse_Orders) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[177] + mi := &file_rpc_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11306,30 +11550,56 @@ var file_rpc_proto_rawDesc = []byte{ 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x22, 0xc9, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, + 0x22, 0x52, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x22, 0x48, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0xe3, + 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x09, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x40, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x1a, 0x56, 0x0a, 0x0e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x79, 0x70, + 0x61, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x79, 0x70, 0x61, 0x73, + 0x73, 0x22, 0x55, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, - 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, - 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x1a, 0x3c, - 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6c, 0x0a, 0x26, - 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x43, 0x0a, 0x27, 0x47, 0x65, - 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x67, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x22, 0x3c, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x69, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, @@ -11341,7 +11611,7 @@ var file_rpc_proto_rawDesc = []byte{ 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0xd6, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, 0x72, + 0x64, 0x22, 0xec, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, @@ -11354,210 +11624,227 @@ var file_rpc_proto_rawDesc = []byte{ 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x10, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x0a, 0x1a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x1b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x21, 0x57, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, - 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x79, - 0x0a, 0x1d, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x42, 0x79, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5b, 0x0a, 0x22, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, - 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x95, 0x02, 0x0a, 0x17, 0x57, 0x69, 0x74, 0x68, 0x64, - 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x38, - 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x54, - 0x0a, 0x16, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x16, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x66, 0x69, 0x61, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x46, 0x69, 0x61, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x66, 0x69, 0x61, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x61, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, - 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, - 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x62, 0x73, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, - 0x73, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x77, 0x69, 0x66, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x73, 0x77, 0x69, 0x66, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x62, 0x61, 0x6e, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x62, 0x61, 0x6e, 0x22, 0x79, 0x0a, 0x15, - 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, - 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x66, - 0x65, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4c, 0x6f, - 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x22, 0x6e, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, - 0x62, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, - 0x77, 0x61, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, 0x17, 0x53, 0x65, - 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x22, 0x4b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x22, 0xd8, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, - 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, - 0x5a, 0x0a, 0x14, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x97, 0x01, 0x0a, 0x16, - 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x22, 0x3a, 0x0a, 0x10, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x0a, 0x1a, + 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, + 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x1b, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, + 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x22, 0x81, 0x01, 0x0a, 0x21, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, + 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x22, 0x79, 0x0a, 0x1d, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, + 0x5b, 0x0a, 0x22, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x95, 0x02, 0x0a, + 0x17, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x6c, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x22, 0x54, 0x0a, 0x16, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x16, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2f, 0x0a, 0x04, 0x66, 0x69, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x61, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x66, 0x69, 0x61, 0x74, + 0x12, 0x35, 0x0a, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x13, 0x46, 0x69, 0x61, 0x74, + 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x73, 0x62, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x73, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x77, 0x69, 0x66, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x77, 0x69, 0x66, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x69, 0x62, 0x61, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x62, + 0x61, 0x6e, 0x22, 0x79, 0x0a, 0x15, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x31, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, + 0x22, 0x6e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x47, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, + 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, + 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x4b, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x1a, 0x5a, 0x0a, 0x14, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x97, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x05, 0x70, 0x61, + 0x69, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3f, + 0x0a, 0x21, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, - 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x7d, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, - 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, - 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, - 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, - 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, - 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x88, - 0x01, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x22, 0xa7, 0x01, 0x0a, 0x13, 0x53, 0x61, - 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, - 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, - 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x2b, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, - 0x72, 0x61, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, + 0x7d, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, + 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, + 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x99, 0x01, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xa4, 0x01, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x65, 0x6e, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, + 0x61, 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x64, 0x65, 0x49, 0x64, 0x22, + 0xa7, 0x01, 0x0a, 0x13, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x2b, 0x0a, 0x06, + 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x1d, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x43, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, + 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, + 0x63, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xe6, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, @@ -11569,1163 +11856,1158 @@ var file_rpc_proto_rawDesc = []byte{ 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x22, 0xe6, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, - 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x5f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x73, + 0x65, 0x5f, 0x64, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x73, 0x65, 0x44, + 0x62, 0x12, 0x37, 0x0a, 0x18, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x15, 0x66, 0x69, 0x6c, 0x6c, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x57, 0x69, 0x74, 0x68, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x22, 0xce, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, + 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, - 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, - 0x73, 0x79, 0x6e, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x5f, 0x64, 0x62, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x73, 0x65, 0x44, 0x62, 0x12, 0x37, 0x0a, 0x18, 0x66, - 0x69, 0x6c, 0x6c, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x69, 0x74, 0x68, - 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x66, - 0x69, 0x6c, 0x6c, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x57, 0x69, 0x74, 0x68, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xce, 0x01, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x06, - 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, - 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, - 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, - 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, - 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x22, 0x78, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x62, 0x0a, 0x09, - 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x55, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, - 0x22, 0x44, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x41, 0x0a, 0x14, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, - 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x43, 0x54, - 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x19, - 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x16, 0x47, 0x43, - 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x1a, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x42, 0x0a, - 0x15, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x22, 0x4a, 0x0a, 0x18, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, - 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x5e, 0x0a, - 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x2b, 0x0a, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x06, 0x63, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x22, 0x84, 0x01, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, + 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, + 0x6f, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x78, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0x62, 0x0a, 0x09, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x55, 0x55, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, + 0x55, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, + 0x65, 0x78, 0x74, 0x52, 0x75, 0x6e, 0x22, 0x44, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x52, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x22, 0x6f, 0x0a, - 0x16, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x41, 0x0a, 0x14, + 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, + 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, + 0x19, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, + 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x43, + 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0xa8, 0x01, 0x0a, 0x16, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x1a, 0x47, 0x43, + 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x22, 0x42, 0x0a, 0x15, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, + 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x4a, 0x0a, 0x18, 0x47, 0x43, 0x54, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x5e, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x07, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x73, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, - 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, - 0x17, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0x50, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x50, - 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x36, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, - 0x33, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, - 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x17, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, - 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x93, 0x02, 0x0a, 0x18, - 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x17, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x53, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x22, 0x50, 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, - 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x3e, 0x0a, 0x20, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x22, 0x7b, 0x0a, 0x15, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0x84, 0x01, 0x0a, 0x21, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, - 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4c, 0x0a, 0x18, 0x57, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x46, 0x0a, 0x16, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xd3, 0x01, - 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x65, 0x6e, 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x1e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, - 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, - 0x70, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xcd, 0x01, 0x0a, - 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x57, 0x0a, 0x21, - 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa3, 0x06, 0x0a, 0x1b, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, - 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x2f, 0x0a, 0x13, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, - 0x17, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, - 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x16, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x63, - 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x74, 0x6f, 0x6c, - 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x69, 0x73, 0x73, 0x75, 0x65, 0x54, 0x6f, - 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x22, 0x56, 0x0a, 0x1b, 0x49, - 0x6e, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, - 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6a, 0x6f, - 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6a, - 0x6f, 0x62, 0x73, 0x22, 0x58, 0x0a, 0x1c, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0x4f, 0x0a, - 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x6f, - 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, - 0x87, 0x07, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, - 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, - 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x52, - 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x15, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x45, 0x78, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x65, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x6e, 0x69, - 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x70, 0x72, - 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4e, 0x69, 0x63, - 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, - 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, - 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, - 0x50, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, - 0x36, 0x0a, 0x17, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x15, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x5f, 0x6f, 0x6e, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, - 0x3d, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x15, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, - 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x68, 0x61, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x68, 0x61, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x22, 0x43, 0x0a, 0x0f, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x12, - 0x30, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x22, 0x5c, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, - 0x64, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x27, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x50, 0x72, - 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, - 0x19, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6a, 0x6f, - 0x62, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x17, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x4a, 0x6f, - 0x62, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x12, 0x4d, 0x6f, - 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x41, 0x0a, 0x13, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, - 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x1a, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x50, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x41, 0x0a, 0x23, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x67, 0x0a, 0x1f, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, - 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x22, 0x64, 0x0a, 0x1c, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x63, 0x0a, 0x1b, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x36, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x33, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x17, 0x57, 0x65, + 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x57, 0x0a, 0x15, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0d, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, - 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x32, 0xf8, 0x55, 0x0a, 0x0e, 0x47, 0x6f, 0x43, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, - 0x31, 0x2f, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x73, 0x62, 0x73, 0x79, 0x74, 0x65, 0x6d, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, - 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x68, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x6a, 0x0a, 0x10, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x65, 0x22, 0x93, 0x02, 0x0a, 0x18, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x61, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x55, + 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x50, 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x3e, 0x0a, 0x20, 0x57, 0x65, 0x62, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x7b, 0x0a, 0x15, 0x57, 0x65, 0x62, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x21, 0x57, 0x65, 0x62, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4c, 0x0a, + 0x18, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x22, 0x46, 0x0a, 0x16, 0x57, + 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x22, 0xd3, 0x01, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, + 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x1e, 0x46, 0x69, + 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, + 0x6e, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x1c, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, + 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x57, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa3, 0x06, 0x0a, 0x1b, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, + 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x69, + 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, + 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x10, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4f, 0x6e, + 0x6c, 0x79, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x19, 0x70, + 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, + 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4e, + 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, + 0x73, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x64, 0x65, 0x63, 0x69, 0x6d, + 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, + 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x18, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x22, 0x56, 0x0a, 0x1b, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x37, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0x58, 0x0a, 0x1c, 0x49, 0x6e, 0x73, + 0x65, 0x72, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x6f, 0x62, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x6a, 0x6f, 0x62, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x04, 0x6a, + 0x6f, 0x62, 0x73, 0x22, 0x4f, 0x0a, 0x1c, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, + 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, + 0x6f, 0x62, 0x49, 0x64, 0x22, 0x6f, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x87, 0x07, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, + 0x79, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x10, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x5f, + 0x6a, 0x6f, 0x62, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x17, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, + 0x4a, 0x6f, 0x62, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, + 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, + 0x1a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x18, 0x69, 0x73, 0x73, 0x75, 0x65, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x72, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, + 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6e, 0x5f, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x44, 0x61, + 0x74, 0x65, 0x22, 0x43, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x30, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x42, 0x65, 0x74, + 0x77, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0x64, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x27, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, + 0x69, 0x74, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x73, 0x69, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0xb9, 0x01, 0x0a, 0x12, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, + 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, + 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x41, 0x0a, 0x13, 0x4d, + 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x38, + 0x0a, 0x1a, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x67, 0x0a, + 0x1f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x64, 0x0a, 0x1c, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x63, 0x0a, 0x1b, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x22, 0x57, 0x0a, 0x15, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0d, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x29, + 0x0a, 0x10, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x74, 0x72, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x32, 0x99, 0x57, 0x0a, 0x0e, + 0x47, 0x6f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4f, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, + 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x73, 0x62, 0x73, + 0x79, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x75, + 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x68, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x12, 0x6a, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x6f, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, + 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, + 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x74, 0x72, 0x70, 0x63, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, + 0x93, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, + 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, + 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x0f, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x6f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, - 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x72, 0x70, 0x63, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, - 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, + 0x74, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, + 0x50, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, + 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x6f, 0x74, 0x70, 0x12, 0x73, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, - 0x31, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x74, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6f, 0x74, 0x70, 0x12, - 0x73, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, - 0x50, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, - 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x6f, 0x74, 0x70, 0x73, 0x12, 0x6c, 0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, - 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, - 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, - 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x65, 0x74, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x0a, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, - 0x74, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, - 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x67, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1c, + 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6f, 0x74, 0x70, 0x73, 0x12, 0x6c, 0x0a, 0x0e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, + 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, + 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x3a, 0x01, + 0x2a, 0x12, 0x5b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, + 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x63, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, - 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, - 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, - 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, - 0x6e, 0x66, 0x6f, 0x12, 0x71, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, - 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x79, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1d, + 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, + 0x3a, 0x01, 0x2a, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x6b, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, - 0x01, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x71, 0x0a, 0x11, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x79, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, + 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x7f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x76, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x22, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, 0x64, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x7f, + 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, + 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, + 0x77, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x46, + 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x72, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x5a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x52, 0x0a, + 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, + 0x22, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, + 0x2a, 0x12, 0x62, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x6a, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, + 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, + 0x2a, 0x12, 0x5e, 0x0a, 0x09, 0x57, 0x68, 0x61, 0x6c, 0x65, 0x42, 0x6f, 0x6d, 0x62, 0x12, 0x18, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x68, 0x61, 0x6c, 0x65, 0x42, 0x6f, 0x6d, + 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, + 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x68, 0x61, 0x6c, 0x65, 0x62, 0x6f, 0x6d, 0x62, 0x3a, 0x01, + 0x2a, 0x12, 0x5e, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, + 0x2a, 0x12, 0x7a, 0x0a, 0x11, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x72, 0x0a, + 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x61, 0x6c, 0x6c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x74, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, - 0x7f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, - 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x12, 0x76, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x61, 0x64, 0x64, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x77, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x20, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, - 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x74, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, - 0x74, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, - 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, - 0x74, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x72, 0x61, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x09, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x52, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, - 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x0b, 0x53, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, - 0x6a, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x6d, 0x75, 0x6c, - 0x61, 0x74, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x09, 0x57, - 0x68, 0x61, 0x6c, 0x65, 0x42, 0x6f, 0x6d, 0x62, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x57, 0x68, 0x61, 0x6c, 0x65, 0x42, 0x6f, 0x6d, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x6d, 0x75, - 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x77, - 0x68, 0x61, 0x6c, 0x65, 0x62, 0x6f, 0x6d, 0x62, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x0b, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x7a, 0x0a, 0x11, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, - 0x65, 0x6c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x72, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x61, - 0x6c, 0x6c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x09, 0x47, - 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x12, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, 0x76, 0x31, - 0x2f, 0x61, 0x64, 0x64, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x0b, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0xb2, 0x01, 0x0a, - 0x21, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x2f, 0x67, 0x65, 0x74, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x08, 0x41, 0x64, + 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x11, 0x22, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, 0x64, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, + 0x01, 0x2a, 0x12, 0x5e, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, + 0x01, 0x2a, 0x12, 0xb2, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, - 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x64, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x01, - 0x2a, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6c, - 0x0a, 0x11, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x69, 0x61, 0x74, 0x46, 0x75, - 0x6e, 0x64, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x69, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x66, 0x69, 0x61, 0x74, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8b, 0x01, 0x0a, - 0x1b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x67, - 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, 0x72, - 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28, 0x2f, - 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x77, 0x66, 0x69, - 0x61, 0x74, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x13, 0x57, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, - 0x49, 0x44, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, - 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x79, 0x69, 0x64, 0x3a, 0x01, 0x2a, 0x12, - 0x97, 0x01, 0x0a, 0x1a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x9e, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a, 0x11, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x46, 0x69, 0x61, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x69, 0x61, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x77, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x66, 0x69, 0x61, 0x74, 0x66, 0x75, 0x6e, 0x64, 0x73, + 0x3a, 0x01, 0x2a, 0x12, 0x8b, 0x01, 0x0a, 0x1b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x75, + 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x66, + 0x75, 0x6e, 0x64, 0x73, 0x77, 0x66, 0x69, 0x61, 0x74, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, - 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x62, 0x79, 0x69, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x91, 0x01, 0x0a, 0x16, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, - 0x44, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, - 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x63, + 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, + 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x62, + 0x79, 0x69, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x97, 0x01, 0x0a, 0x1a, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, + 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x79, 0x69, 0x64, 0x3a, 0x01, 0x2a, + 0x12, 0x91, 0x01, 0x0a, 0x16, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, - 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x62, 0x79, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, - 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, - 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, - 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x76, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, 0x10, 0x47, 0x65, - 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x1f, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, 0x69, 0x72, 0x73, 0x3a, - 0x01, 0x2a, 0x12, 0x6a, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x65, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, 0x69, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x74, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x12, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x79, 0x64, 0x61, 0x74, + 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6c, 0x6f, 0x67, 0x67, + 0x65, 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x76, 0x0a, 0x10, 0x53, 0x65, 0x74, + 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, + 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, + 0x74, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x76, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, + 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x70, 0x61, 0x69, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x6a, 0x0a, 0x0f, 0x53, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x1e, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, + 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, + 0x69, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x21, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, - 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x80, 0x01, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, - 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, - 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, - 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, - 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, - 0x75, 0x64, 0x69, 0x74, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x43, 0x54, - 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, - 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x6b, 0x0a, 0x0f, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x3a, 0x01, 0x2a, 0x12, 0x78, 0x0a, 0x13, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x52, 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, - 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x70, 0x0a, - 0x0f, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, + 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, + 0x6f, 0x6b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x30, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x12, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, + 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x75, 0x64, 0x69, 0x74, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, + 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x6b, 0x0a, + 0x0f, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x6c, 0x0a, 0x0e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, - 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x65, 0x0a, - 0x0d, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x1c, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, - 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, + 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x78, 0x0a, 0x13, 0x47, 0x43, + 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x6f, - 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, - 0x2a, 0x12, 0x73, 0x0a, 0x10, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, - 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, - 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, - 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x77, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x6f, 0x67, 0x67, 0x6c, - 0x65, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x72, 0x65, 0x61, + 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x70, 0x0a, 0x0f, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, + 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6c, 0x0a, 0x0e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, + 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x65, 0x0a, 0x0d, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, - 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x69, 0x63, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x10, - 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x73, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x41, - 0x6c, 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, - 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x61, 0x6c, 0x6c, - 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x8e, 0x01, - 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x2b, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x50, - 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, - 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x77, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, - 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x73, 0x0a, 0x10, 0x57, 0x65, 0x62, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x67, 0x63, - 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, - 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x73, 0x0a, 0x13, - 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, - 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, - 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x97, 0x01, 0x0a, 0x19, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, - 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x28, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, - 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x67, 0x65, 0x74, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6d, 0x0a, 0x11, 0x57, - 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, - 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x6b, 0x0a, 0x10, 0x47, + 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, 0x12, + 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x10, 0x47, 0x43, 0x54, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x1f, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x77, 0x0a, + 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x6f, + 0x61, 0x64, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, + 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x6c, + 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, + 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x65, 0x74, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x63, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, + 0x73, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x6c, 0x50, 0x61, + 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, + 0x61, 0x69, 0x72, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x65, 0x74, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x67, 0x0a, 0x0f, 0x57, 0x65, - 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x1e, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x53, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, - 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x65, 0x74, - 0x75, 0x72, 0x6c, 0x12, 0x69, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x73, + 0x0a, 0x10, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, + 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x67, 0x65, 0x74, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x73, 0x0a, 0x13, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, + 0x53, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, + 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x65, + 0x74, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x97, 0x01, 0x0a, 0x19, 0x57, 0x65, 0x62, + 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x67, 0x65, 0x74, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x6d, 0x0a, 0x11, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, + 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x65, 0x74, 0x70, 0x72, 0x6f, 0x78, + 0x79, 0x12, 0x67, 0x0a, 0x0f, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, + 0x74, 0x55, 0x52, 0x4c, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x65, + 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x65, 0x74, 0x75, 0x72, 0x6c, 0x12, 0x69, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x61, 0x76, 0x65, 0x64, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x69, 0x63, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x61, 0x76, 0x65, 0x64, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x65, 0x74, 0x73, 0x61, 0x76, 0x65, 0x64, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x6d, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x61, 0x76, 0x65, - 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, - 0x73, 0x61, 0x76, 0x65, 0x64, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x30, 0x01, 0x12, 0x68, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, - 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x76, 0x65, - 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x61, 0x76, 0x65, - 0x64, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x74, 0x6f, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x1f, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x53, 0x61, 0x76, 0x65, 0x64, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, - 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, - 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x73, 0x61, 0x76, - 0x65, 0x64, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x1e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, - 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, + 0x67, 0x65, 0x74, 0x73, 0x61, 0x76, 0x65, 0x64, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x87, + 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x74, + 0x6f, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x1f, 0x46, 0x69, 0x6e, + 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x61, 0x76, 0x65, 0x64, 0x43, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, - 0x66, 0x69, 0x6e, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x73, 0x61, 0x76, 0x65, 0x64, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x88, - 0x01, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, - 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x74, 0x72, 0x61, 0x64, 0x65, 0x70, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x86, 0x01, 0x0a, 0x14, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, - 0x6f, 0x62, 0x12, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x3a, - 0x01, 0x2a, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, - 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, - 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x71, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, - 0x62, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, - 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, - 0x6f, 0x62, 0x73, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x19, 0x47, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, - 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x28, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, - 0x6f, 0x62, 0x73, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x73, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, - 0x6e, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x27, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x22, - 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, - 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x73, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x82, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, - 0x62, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x9d, 0x01, 0x0a, 0x20, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x12, - 0x2f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x65, - 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x29, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x61, 0x74, - 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x70, 0x72, 0x65, 0x72, 0x65, - 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x68, 0x0a, 0x10, 0x47, 0x65, - 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, - 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x6f, 0x64, - 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x79, 0x0a, 0x13, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x22, 0x2e, 0x67, - 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x67, 0x65, 0x74, 0x61, 0x6c, 0x6c, - 0x12, 0x76, 0x0a, 0x14, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, - 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x76, 0x0a, 0x14, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x12, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x12, 0x79, 0x0a, 0x15, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x67, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x73, 0x61, 0x76, 0x65, 0x64, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x1e, 0x46, 0x69, 0x6e, + 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x61, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x6e, + 0x64, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x73, 0x61, 0x76, 0x65, 0x64, 0x74, 0x72, 0x61, 0x64, 0x65, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, - 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x82, 0x01, 0x0a, 0x18, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x70, 0x61, 0x69, 0x72, - 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, - 0x68, 0x72, 0x61, 0x73, 0x68, 0x65, 0x72, 0x2d, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x67, 0x6f, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x6f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x72, 0x2f, 0x67, 0x63, 0x74, 0x72, - 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, + 0x12, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x74, 0x72, 0x61, 0x64, 0x65, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x12, 0x86, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, + 0x31, 0x2f, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, + 0x62, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, + 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x71, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x73, + 0x12, 0x85, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x28, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, + 0x73, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, + 0x73, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x82, 0x01, 0x0a, + 0x17, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, + 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x20, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, 0x6f, 0x62, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0x9d, 0x01, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, + 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x61, 0x74, 0x61, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6a, + 0x6f, 0x62, 0x70, 0x72, 0x65, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x65, 0x3a, 0x01, + 0x2a, 0x12, 0x68, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x64, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x5f, 0x0a, 0x0b, 0x4d, + 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, + 0x2f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x79, 0x0a, 0x13, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x6c, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x67, 0x65, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x76, 0x0a, 0x14, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x76, 0x0a, 0x14, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x79, 0x0a, 0x15, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x12, 0x24, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x12, 0x82, 0x01, 0x0a, 0x18, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x12, + 0x27, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x73, 0x74, 0x61, 0x74, 0x65, 0x74, 0x72, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x70, 0x61, 0x69, 0x72, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x68, 0x72, 0x61, 0x73, 0x68, 0x65, 0x72, 0x2d, 0x63, + 0x6f, 0x72, 0x70, 0x2f, 0x67, 0x6f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x72, 0x2f, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -12740,7 +13022,7 @@ func file_rpc_proto_rawDescGZIP() []byte { return file_rpc_proto_rawDescData } -var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 181) +var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 185) var file_rpc_proto_goTypes = []interface{}{ (*GetInfoRequest)(nil), // 0: gctrpc.GetInfoRequest (*GetInfoResponse)(nil), // 1: gctrpc.GetInfoResponse @@ -12821,118 +13103,122 @@ var file_rpc_proto_goTypes = []interface{}{ (*AddEventResponse)(nil), // 76: gctrpc.AddEventResponse (*RemoveEventRequest)(nil), // 77: gctrpc.RemoveEventRequest (*GetCryptocurrencyDepositAddressesRequest)(nil), // 78: gctrpc.GetCryptocurrencyDepositAddressesRequest - (*GetCryptocurrencyDepositAddressesResponse)(nil), // 79: gctrpc.GetCryptocurrencyDepositAddressesResponse - (*GetCryptocurrencyDepositAddressRequest)(nil), // 80: gctrpc.GetCryptocurrencyDepositAddressRequest - (*GetCryptocurrencyDepositAddressResponse)(nil), // 81: gctrpc.GetCryptocurrencyDepositAddressResponse - (*WithdrawFiatRequest)(nil), // 82: gctrpc.WithdrawFiatRequest - (*WithdrawCryptoRequest)(nil), // 83: gctrpc.WithdrawCryptoRequest - (*WithdrawResponse)(nil), // 84: gctrpc.WithdrawResponse - (*WithdrawalEventByIDRequest)(nil), // 85: gctrpc.WithdrawalEventByIDRequest - (*WithdrawalEventByIDResponse)(nil), // 86: gctrpc.WithdrawalEventByIDResponse - (*WithdrawalEventsByExchangeRequest)(nil), // 87: gctrpc.WithdrawalEventsByExchangeRequest - (*WithdrawalEventsByDateRequest)(nil), // 88: gctrpc.WithdrawalEventsByDateRequest - (*WithdrawalEventsByExchangeResponse)(nil), // 89: gctrpc.WithdrawalEventsByExchangeResponse - (*WithdrawalEventResponse)(nil), // 90: gctrpc.WithdrawalEventResponse - (*WithdrawlExchangeEvent)(nil), // 91: gctrpc.WithdrawlExchangeEvent - (*WithdrawalRequestEvent)(nil), // 92: gctrpc.WithdrawalRequestEvent - (*FiatWithdrawalEvent)(nil), // 93: gctrpc.FiatWithdrawalEvent - (*CryptoWithdrawalEvent)(nil), // 94: gctrpc.CryptoWithdrawalEvent - (*GetLoggerDetailsRequest)(nil), // 95: gctrpc.GetLoggerDetailsRequest - (*GetLoggerDetailsResponse)(nil), // 96: gctrpc.GetLoggerDetailsResponse - (*SetLoggerDetailsRequest)(nil), // 97: gctrpc.SetLoggerDetailsRequest - (*GetExchangePairsRequest)(nil), // 98: gctrpc.GetExchangePairsRequest - (*GetExchangePairsResponse)(nil), // 99: gctrpc.GetExchangePairsResponse - (*SetExchangePairRequest)(nil), // 100: gctrpc.SetExchangePairRequest - (*GetOrderbookStreamRequest)(nil), // 101: gctrpc.GetOrderbookStreamRequest - (*GetExchangeOrderbookStreamRequest)(nil), // 102: gctrpc.GetExchangeOrderbookStreamRequest - (*GetTickerStreamRequest)(nil), // 103: gctrpc.GetTickerStreamRequest - (*GetExchangeTickerStreamRequest)(nil), // 104: gctrpc.GetExchangeTickerStreamRequest - (*GetAuditEventRequest)(nil), // 105: gctrpc.GetAuditEventRequest - (*GetAuditEventResponse)(nil), // 106: gctrpc.GetAuditEventResponse - (*GetSavedTradesRequest)(nil), // 107: gctrpc.GetSavedTradesRequest - (*SavedTrades)(nil), // 108: gctrpc.SavedTrades - (*SavedTradesResponse)(nil), // 109: gctrpc.SavedTradesResponse - (*ConvertTradesToCandlesRequest)(nil), // 110: gctrpc.ConvertTradesToCandlesRequest - (*GetHistoricCandlesRequest)(nil), // 111: gctrpc.GetHistoricCandlesRequest - (*GetHistoricCandlesResponse)(nil), // 112: gctrpc.GetHistoricCandlesResponse - (*Candle)(nil), // 113: gctrpc.Candle - (*AuditEvent)(nil), // 114: gctrpc.AuditEvent - (*GCTScript)(nil), // 115: gctrpc.GCTScript - (*GCTScriptExecuteRequest)(nil), // 116: gctrpc.GCTScriptExecuteRequest - (*GCTScriptStopRequest)(nil), // 117: gctrpc.GCTScriptStopRequest - (*GCTScriptStopAllRequest)(nil), // 118: gctrpc.GCTScriptStopAllRequest - (*GCTScriptStatusRequest)(nil), // 119: gctrpc.GCTScriptStatusRequest - (*GCTScriptListAllRequest)(nil), // 120: gctrpc.GCTScriptListAllRequest - (*GCTScriptUploadRequest)(nil), // 121: gctrpc.GCTScriptUploadRequest - (*GCTScriptReadScriptRequest)(nil), // 122: gctrpc.GCTScriptReadScriptRequest - (*GCTScriptQueryRequest)(nil), // 123: gctrpc.GCTScriptQueryRequest - (*GCTScriptAutoLoadRequest)(nil), // 124: gctrpc.GCTScriptAutoLoadRequest - (*GCTScriptStatusResponse)(nil), // 125: gctrpc.GCTScriptStatusResponse - (*GCTScriptQueryResponse)(nil), // 126: gctrpc.GCTScriptQueryResponse - (*GenericResponse)(nil), // 127: gctrpc.GenericResponse - (*SetExchangeAssetRequest)(nil), // 128: gctrpc.SetExchangeAssetRequest - (*SetExchangeAllPairsRequest)(nil), // 129: gctrpc.SetExchangeAllPairsRequest - (*UpdateExchangeSupportedPairsRequest)(nil), // 130: gctrpc.UpdateExchangeSupportedPairsRequest - (*GetExchangeAssetsRequest)(nil), // 131: gctrpc.GetExchangeAssetsRequest - (*GetExchangeAssetsResponse)(nil), // 132: gctrpc.GetExchangeAssetsResponse - (*WebsocketGetInfoRequest)(nil), // 133: gctrpc.WebsocketGetInfoRequest - (*WebsocketGetInfoResponse)(nil), // 134: gctrpc.WebsocketGetInfoResponse - (*WebsocketSetEnabledRequest)(nil), // 135: gctrpc.WebsocketSetEnabledRequest - (*WebsocketGetSubscriptionsRequest)(nil), // 136: gctrpc.WebsocketGetSubscriptionsRequest - (*WebsocketSubscription)(nil), // 137: gctrpc.WebsocketSubscription - (*WebsocketGetSubscriptionsResponse)(nil), // 138: gctrpc.WebsocketGetSubscriptionsResponse - (*WebsocketSetProxyRequest)(nil), // 139: gctrpc.WebsocketSetProxyRequest - (*WebsocketSetURLRequest)(nil), // 140: gctrpc.WebsocketSetURLRequest - (*FindMissingCandlePeriodsRequest)(nil), // 141: gctrpc.FindMissingCandlePeriodsRequest - (*FindMissingTradePeriodsRequest)(nil), // 142: gctrpc.FindMissingTradePeriodsRequest - (*FindMissingIntervalsResponse)(nil), // 143: gctrpc.FindMissingIntervalsResponse - (*SetExchangeTradeProcessingRequest)(nil), // 144: gctrpc.SetExchangeTradeProcessingRequest - (*UpsertDataHistoryJobRequest)(nil), // 145: gctrpc.UpsertDataHistoryJobRequest - (*InsertSequentialJobsRequest)(nil), // 146: gctrpc.InsertSequentialJobsRequest - (*InsertSequentialJobsResponse)(nil), // 147: gctrpc.InsertSequentialJobsResponse - (*UpsertDataHistoryJobResponse)(nil), // 148: gctrpc.UpsertDataHistoryJobResponse - (*GetDataHistoryJobDetailsRequest)(nil), // 149: gctrpc.GetDataHistoryJobDetailsRequest - (*DataHistoryJob)(nil), // 150: gctrpc.DataHistoryJob - (*DataHistoryJobResult)(nil), // 151: gctrpc.DataHistoryJobResult - (*DataHistoryJobs)(nil), // 152: gctrpc.DataHistoryJobs - (*GetDataHistoryJobsBetweenRequest)(nil), // 153: gctrpc.GetDataHistoryJobsBetweenRequest - (*SetDataHistoryJobStatusRequest)(nil), // 154: gctrpc.SetDataHistoryJobStatusRequest - (*UpdateDataHistoryJobPrerequisiteRequest)(nil), // 155: gctrpc.UpdateDataHistoryJobPrerequisiteRequest - (*ModifyOrderRequest)(nil), // 156: gctrpc.ModifyOrderRequest - (*ModifyOrderResponse)(nil), // 157: gctrpc.ModifyOrderResponse - (*CurrencyStateGetAllRequest)(nil), // 158: gctrpc.CurrencyStateGetAllRequest - (*CurrencyStateTradingRequest)(nil), // 159: gctrpc.CurrencyStateTradingRequest - (*CurrencyStateTradingPairRequest)(nil), // 160: gctrpc.CurrencyStateTradingPairRequest - (*CurrencyStateWithdrawRequest)(nil), // 161: gctrpc.CurrencyStateWithdrawRequest - (*CurrencyStateDepositRequest)(nil), // 162: gctrpc.CurrencyStateDepositRequest - (*CurrencyStateResponse)(nil), // 163: gctrpc.CurrencyStateResponse - (*CurrencyState)(nil), // 164: gctrpc.CurrencyState - nil, // 165: gctrpc.GetInfoResponse.SubsystemStatusEntry - nil, // 166: gctrpc.GetInfoResponse.RpcEndpointsEntry - nil, // 167: gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry - nil, // 168: gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry - nil, // 169: gctrpc.GetRPCEndpointsResponse.EndpointsEntry - nil, // 170: gctrpc.GetExchangeOTPsResponse.OtpCodesEntry - nil, // 171: gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry - nil, // 172: gctrpc.OnlineCoins.CoinsEntry - nil, // 173: gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry - nil, // 174: gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry - (*CancelBatchOrdersResponse_Orders)(nil), // 175: gctrpc.CancelBatchOrdersResponse.Orders - nil, // 176: gctrpc.CancelBatchOrdersResponse.Orders.OrderStatusEntry - (*CancelAllOrdersResponse_Orders)(nil), // 177: gctrpc.CancelAllOrdersResponse.Orders - nil, // 178: gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry - nil, // 179: gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry - nil, // 180: gctrpc.GetExchangePairsResponse.SupportedAssetsEntry - (*timestamppb.Timestamp)(nil), // 181: google.protobuf.Timestamp + (*DepositAddress)(nil), // 79: gctrpc.DepositAddress + (*DepositAddresses)(nil), // 80: gctrpc.DepositAddresses + (*GetCryptocurrencyDepositAddressesResponse)(nil), // 81: gctrpc.GetCryptocurrencyDepositAddressesResponse + (*GetCryptocurrencyDepositAddressRequest)(nil), // 82: gctrpc.GetCryptocurrencyDepositAddressRequest + (*GetCryptocurrencyDepositAddressResponse)(nil), // 83: gctrpc.GetCryptocurrencyDepositAddressResponse + (*GetAvailableTransferChainsRequest)(nil), // 84: gctrpc.GetAvailableTransferChainsRequest + (*GetAvailableTransferChainsResponse)(nil), // 85: gctrpc.GetAvailableTransferChainsResponse + (*WithdrawFiatRequest)(nil), // 86: gctrpc.WithdrawFiatRequest + (*WithdrawCryptoRequest)(nil), // 87: gctrpc.WithdrawCryptoRequest + (*WithdrawResponse)(nil), // 88: gctrpc.WithdrawResponse + (*WithdrawalEventByIDRequest)(nil), // 89: gctrpc.WithdrawalEventByIDRequest + (*WithdrawalEventByIDResponse)(nil), // 90: gctrpc.WithdrawalEventByIDResponse + (*WithdrawalEventsByExchangeRequest)(nil), // 91: gctrpc.WithdrawalEventsByExchangeRequest + (*WithdrawalEventsByDateRequest)(nil), // 92: gctrpc.WithdrawalEventsByDateRequest + (*WithdrawalEventsByExchangeResponse)(nil), // 93: gctrpc.WithdrawalEventsByExchangeResponse + (*WithdrawalEventResponse)(nil), // 94: gctrpc.WithdrawalEventResponse + (*WithdrawlExchangeEvent)(nil), // 95: gctrpc.WithdrawlExchangeEvent + (*WithdrawalRequestEvent)(nil), // 96: gctrpc.WithdrawalRequestEvent + (*FiatWithdrawalEvent)(nil), // 97: gctrpc.FiatWithdrawalEvent + (*CryptoWithdrawalEvent)(nil), // 98: gctrpc.CryptoWithdrawalEvent + (*GetLoggerDetailsRequest)(nil), // 99: gctrpc.GetLoggerDetailsRequest + (*GetLoggerDetailsResponse)(nil), // 100: gctrpc.GetLoggerDetailsResponse + (*SetLoggerDetailsRequest)(nil), // 101: gctrpc.SetLoggerDetailsRequest + (*GetExchangePairsRequest)(nil), // 102: gctrpc.GetExchangePairsRequest + (*GetExchangePairsResponse)(nil), // 103: gctrpc.GetExchangePairsResponse + (*SetExchangePairRequest)(nil), // 104: gctrpc.SetExchangePairRequest + (*GetOrderbookStreamRequest)(nil), // 105: gctrpc.GetOrderbookStreamRequest + (*GetExchangeOrderbookStreamRequest)(nil), // 106: gctrpc.GetExchangeOrderbookStreamRequest + (*GetTickerStreamRequest)(nil), // 107: gctrpc.GetTickerStreamRequest + (*GetExchangeTickerStreamRequest)(nil), // 108: gctrpc.GetExchangeTickerStreamRequest + (*GetAuditEventRequest)(nil), // 109: gctrpc.GetAuditEventRequest + (*GetAuditEventResponse)(nil), // 110: gctrpc.GetAuditEventResponse + (*GetSavedTradesRequest)(nil), // 111: gctrpc.GetSavedTradesRequest + (*SavedTrades)(nil), // 112: gctrpc.SavedTrades + (*SavedTradesResponse)(nil), // 113: gctrpc.SavedTradesResponse + (*ConvertTradesToCandlesRequest)(nil), // 114: gctrpc.ConvertTradesToCandlesRequest + (*GetHistoricCandlesRequest)(nil), // 115: gctrpc.GetHistoricCandlesRequest + (*GetHistoricCandlesResponse)(nil), // 116: gctrpc.GetHistoricCandlesResponse + (*Candle)(nil), // 117: gctrpc.Candle + (*AuditEvent)(nil), // 118: gctrpc.AuditEvent + (*GCTScript)(nil), // 119: gctrpc.GCTScript + (*GCTScriptExecuteRequest)(nil), // 120: gctrpc.GCTScriptExecuteRequest + (*GCTScriptStopRequest)(nil), // 121: gctrpc.GCTScriptStopRequest + (*GCTScriptStopAllRequest)(nil), // 122: gctrpc.GCTScriptStopAllRequest + (*GCTScriptStatusRequest)(nil), // 123: gctrpc.GCTScriptStatusRequest + (*GCTScriptListAllRequest)(nil), // 124: gctrpc.GCTScriptListAllRequest + (*GCTScriptUploadRequest)(nil), // 125: gctrpc.GCTScriptUploadRequest + (*GCTScriptReadScriptRequest)(nil), // 126: gctrpc.GCTScriptReadScriptRequest + (*GCTScriptQueryRequest)(nil), // 127: gctrpc.GCTScriptQueryRequest + (*GCTScriptAutoLoadRequest)(nil), // 128: gctrpc.GCTScriptAutoLoadRequest + (*GCTScriptStatusResponse)(nil), // 129: gctrpc.GCTScriptStatusResponse + (*GCTScriptQueryResponse)(nil), // 130: gctrpc.GCTScriptQueryResponse + (*GenericResponse)(nil), // 131: gctrpc.GenericResponse + (*SetExchangeAssetRequest)(nil), // 132: gctrpc.SetExchangeAssetRequest + (*SetExchangeAllPairsRequest)(nil), // 133: gctrpc.SetExchangeAllPairsRequest + (*UpdateExchangeSupportedPairsRequest)(nil), // 134: gctrpc.UpdateExchangeSupportedPairsRequest + (*GetExchangeAssetsRequest)(nil), // 135: gctrpc.GetExchangeAssetsRequest + (*GetExchangeAssetsResponse)(nil), // 136: gctrpc.GetExchangeAssetsResponse + (*WebsocketGetInfoRequest)(nil), // 137: gctrpc.WebsocketGetInfoRequest + (*WebsocketGetInfoResponse)(nil), // 138: gctrpc.WebsocketGetInfoResponse + (*WebsocketSetEnabledRequest)(nil), // 139: gctrpc.WebsocketSetEnabledRequest + (*WebsocketGetSubscriptionsRequest)(nil), // 140: gctrpc.WebsocketGetSubscriptionsRequest + (*WebsocketSubscription)(nil), // 141: gctrpc.WebsocketSubscription + (*WebsocketGetSubscriptionsResponse)(nil), // 142: gctrpc.WebsocketGetSubscriptionsResponse + (*WebsocketSetProxyRequest)(nil), // 143: gctrpc.WebsocketSetProxyRequest + (*WebsocketSetURLRequest)(nil), // 144: gctrpc.WebsocketSetURLRequest + (*FindMissingCandlePeriodsRequest)(nil), // 145: gctrpc.FindMissingCandlePeriodsRequest + (*FindMissingTradePeriodsRequest)(nil), // 146: gctrpc.FindMissingTradePeriodsRequest + (*FindMissingIntervalsResponse)(nil), // 147: gctrpc.FindMissingIntervalsResponse + (*SetExchangeTradeProcessingRequest)(nil), // 148: gctrpc.SetExchangeTradeProcessingRequest + (*UpsertDataHistoryJobRequest)(nil), // 149: gctrpc.UpsertDataHistoryJobRequest + (*InsertSequentialJobsRequest)(nil), // 150: gctrpc.InsertSequentialJobsRequest + (*InsertSequentialJobsResponse)(nil), // 151: gctrpc.InsertSequentialJobsResponse + (*UpsertDataHistoryJobResponse)(nil), // 152: gctrpc.UpsertDataHistoryJobResponse + (*GetDataHistoryJobDetailsRequest)(nil), // 153: gctrpc.GetDataHistoryJobDetailsRequest + (*DataHistoryJob)(nil), // 154: gctrpc.DataHistoryJob + (*DataHistoryJobResult)(nil), // 155: gctrpc.DataHistoryJobResult + (*DataHistoryJobs)(nil), // 156: gctrpc.DataHistoryJobs + (*GetDataHistoryJobsBetweenRequest)(nil), // 157: gctrpc.GetDataHistoryJobsBetweenRequest + (*SetDataHistoryJobStatusRequest)(nil), // 158: gctrpc.SetDataHistoryJobStatusRequest + (*UpdateDataHistoryJobPrerequisiteRequest)(nil), // 159: gctrpc.UpdateDataHistoryJobPrerequisiteRequest + (*ModifyOrderRequest)(nil), // 160: gctrpc.ModifyOrderRequest + (*ModifyOrderResponse)(nil), // 161: gctrpc.ModifyOrderResponse + (*CurrencyStateGetAllRequest)(nil), // 162: gctrpc.CurrencyStateGetAllRequest + (*CurrencyStateTradingRequest)(nil), // 163: gctrpc.CurrencyStateTradingRequest + (*CurrencyStateTradingPairRequest)(nil), // 164: gctrpc.CurrencyStateTradingPairRequest + (*CurrencyStateWithdrawRequest)(nil), // 165: gctrpc.CurrencyStateWithdrawRequest + (*CurrencyStateDepositRequest)(nil), // 166: gctrpc.CurrencyStateDepositRequest + (*CurrencyStateResponse)(nil), // 167: gctrpc.CurrencyStateResponse + (*CurrencyState)(nil), // 168: gctrpc.CurrencyState + nil, // 169: gctrpc.GetInfoResponse.SubsystemStatusEntry + nil, // 170: gctrpc.GetInfoResponse.RpcEndpointsEntry + nil, // 171: gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry + nil, // 172: gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry + nil, // 173: gctrpc.GetRPCEndpointsResponse.EndpointsEntry + nil, // 174: gctrpc.GetExchangeOTPsResponse.OtpCodesEntry + nil, // 175: gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry + nil, // 176: gctrpc.OnlineCoins.CoinsEntry + nil, // 177: gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry + nil, // 178: gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry + (*CancelBatchOrdersResponse_Orders)(nil), // 179: gctrpc.CancelBatchOrdersResponse.Orders + nil, // 180: gctrpc.CancelBatchOrdersResponse.Orders.OrderStatusEntry + (*CancelAllOrdersResponse_Orders)(nil), // 181: gctrpc.CancelAllOrdersResponse.Orders + nil, // 182: gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry + nil, // 183: gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry + nil, // 184: gctrpc.GetExchangePairsResponse.SupportedAssetsEntry + (*timestamppb.Timestamp)(nil), // 185: google.protobuf.Timestamp } var file_rpc_proto_depIdxs = []int32{ - 165, // 0: gctrpc.GetInfoResponse.subsystem_status:type_name -> gctrpc.GetInfoResponse.SubsystemStatusEntry - 166, // 1: gctrpc.GetInfoResponse.rpc_endpoints:type_name -> gctrpc.GetInfoResponse.RpcEndpointsEntry - 167, // 2: gctrpc.GetCommunicationRelayersResponse.communication_relayers:type_name -> gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry - 168, // 3: gctrpc.GetSusbsytemsResponse.subsystems_status:type_name -> gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry - 169, // 4: gctrpc.GetRPCEndpointsResponse.endpoints:type_name -> gctrpc.GetRPCEndpointsResponse.EndpointsEntry - 170, // 5: gctrpc.GetExchangeOTPsResponse.otp_codes:type_name -> gctrpc.GetExchangeOTPsResponse.OtpCodesEntry - 171, // 6: gctrpc.GetExchangeInfoResponse.supported_assets:type_name -> gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry + 169, // 0: gctrpc.GetInfoResponse.subsystem_status:type_name -> gctrpc.GetInfoResponse.SubsystemStatusEntry + 170, // 1: gctrpc.GetInfoResponse.rpc_endpoints:type_name -> gctrpc.GetInfoResponse.RpcEndpointsEntry + 171, // 2: gctrpc.GetCommunicationRelayersResponse.communication_relayers:type_name -> gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry + 172, // 3: gctrpc.GetSusbsytemsResponse.subsystems_status:type_name -> gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry + 173, // 4: gctrpc.GetRPCEndpointsResponse.endpoints:type_name -> gctrpc.GetRPCEndpointsResponse.EndpointsEntry + 174, // 5: gctrpc.GetExchangeOTPsResponse.otp_codes:type_name -> gctrpc.GetExchangeOTPsResponse.OtpCodesEntry + 175, // 6: gctrpc.GetExchangeInfoResponse.supported_assets:type_name -> gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry 21, // 7: gctrpc.GetTickerRequest.pair:type_name -> gctrpc.CurrencyPair 21, // 8: gctrpc.TickerResponse.pair:type_name -> gctrpc.CurrencyPair 22, // 9: gctrpc.Tickers.tickers:type_name -> gctrpc.TickerResponse @@ -12947,12 +13233,12 @@ var file_rpc_proto_depIdxs = []int32{ 33, // 18: gctrpc.GetAccountInfoResponse.accounts:type_name -> gctrpc.Account 38, // 19: gctrpc.GetPortfolioResponse.portfolio:type_name -> gctrpc.PortfolioAddress 43, // 20: gctrpc.OfflineCoins.addresses:type_name -> gctrpc.OfflineCoinSummary - 172, // 21: gctrpc.OnlineCoins.coins:type_name -> gctrpc.OnlineCoins.CoinsEntry + 176, // 21: gctrpc.OnlineCoins.coins:type_name -> gctrpc.OnlineCoins.CoinsEntry 42, // 22: gctrpc.GetPortfolioSummaryResponse.coin_totals:type_name -> gctrpc.Coin 42, // 23: gctrpc.GetPortfolioSummaryResponse.coins_offline:type_name -> gctrpc.Coin - 173, // 24: gctrpc.GetPortfolioSummaryResponse.coins_offline_summary:type_name -> gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry + 177, // 24: gctrpc.GetPortfolioSummaryResponse.coins_offline_summary:type_name -> gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry 42, // 25: gctrpc.GetPortfolioSummaryResponse.coins_online:type_name -> gctrpc.Coin - 174, // 26: gctrpc.GetPortfolioSummaryResponse.coins_online_summary:type_name -> gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry + 178, // 26: gctrpc.GetPortfolioSummaryResponse.coins_online_summary:type_name -> gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry 51, // 27: gctrpc.GetForexProvidersResponse.forex_providers:type_name -> gctrpc.ForexProvider 54, // 28: gctrpc.GetForexRatesResponse.forex_rates:type_name -> gctrpc.ForexRatesConversion 57, // 29: gctrpc.OrderDetails.trades:type_name -> gctrpc.TradeHistory @@ -12966,252 +13252,256 @@ var file_rpc_proto_depIdxs = []int32{ 21, // 37: gctrpc.WhaleBombRequest.pair:type_name -> gctrpc.CurrencyPair 21, // 38: gctrpc.CancelOrderRequest.pair:type_name -> gctrpc.CurrencyPair 21, // 39: gctrpc.CancelBatchOrdersRequest.pair:type_name -> gctrpc.CurrencyPair - 175, // 40: gctrpc.CancelBatchOrdersResponse.orders:type_name -> gctrpc.CancelBatchOrdersResponse.Orders - 177, // 41: gctrpc.CancelAllOrdersResponse.orders:type_name -> gctrpc.CancelAllOrdersResponse.Orders + 179, // 40: gctrpc.CancelBatchOrdersResponse.orders:type_name -> gctrpc.CancelBatchOrdersResponse.Orders + 181, // 41: gctrpc.CancelAllOrdersResponse.orders:type_name -> gctrpc.CancelAllOrdersResponse.Orders 73, // 42: gctrpc.GetEventsResponse.condition_params:type_name -> gctrpc.ConditionParams 21, // 43: gctrpc.GetEventsResponse.pair:type_name -> gctrpc.CurrencyPair 73, // 44: gctrpc.AddEventRequest.condition_params:type_name -> gctrpc.ConditionParams 21, // 45: gctrpc.AddEventRequest.pair:type_name -> gctrpc.CurrencyPair - 179, // 46: gctrpc.GetCryptocurrencyDepositAddressesResponse.addresses:type_name -> gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry - 90, // 47: gctrpc.WithdrawalEventByIDResponse.event:type_name -> gctrpc.WithdrawalEventResponse - 90, // 48: gctrpc.WithdrawalEventsByExchangeResponse.event:type_name -> gctrpc.WithdrawalEventResponse - 91, // 49: gctrpc.WithdrawalEventResponse.exchange:type_name -> gctrpc.WithdrawlExchangeEvent - 92, // 50: gctrpc.WithdrawalEventResponse.request:type_name -> gctrpc.WithdrawalRequestEvent - 181, // 51: gctrpc.WithdrawalEventResponse.created_at:type_name -> google.protobuf.Timestamp - 181, // 52: gctrpc.WithdrawalEventResponse.updated_at:type_name -> google.protobuf.Timestamp - 93, // 53: gctrpc.WithdrawalRequestEvent.fiat:type_name -> gctrpc.FiatWithdrawalEvent - 94, // 54: gctrpc.WithdrawalRequestEvent.crypto:type_name -> gctrpc.CryptoWithdrawalEvent - 180, // 55: gctrpc.GetExchangePairsResponse.supported_assets:type_name -> gctrpc.GetExchangePairsResponse.SupportedAssetsEntry - 21, // 56: gctrpc.SetExchangePairRequest.pairs:type_name -> gctrpc.CurrencyPair - 21, // 57: gctrpc.GetOrderbookStreamRequest.pair:type_name -> gctrpc.CurrencyPair - 21, // 58: gctrpc.GetTickerStreamRequest.pair:type_name -> gctrpc.CurrencyPair - 114, // 59: gctrpc.GetAuditEventResponse.events:type_name -> gctrpc.AuditEvent - 21, // 60: gctrpc.GetSavedTradesRequest.pair:type_name -> gctrpc.CurrencyPair - 21, // 61: gctrpc.SavedTradesResponse.pair:type_name -> gctrpc.CurrencyPair - 108, // 62: gctrpc.SavedTradesResponse.trades:type_name -> gctrpc.SavedTrades - 21, // 63: gctrpc.ConvertTradesToCandlesRequest.pair:type_name -> gctrpc.CurrencyPair - 21, // 64: gctrpc.GetHistoricCandlesRequest.pair:type_name -> gctrpc.CurrencyPair - 21, // 65: gctrpc.GetHistoricCandlesResponse.pair:type_name -> gctrpc.CurrencyPair - 113, // 66: gctrpc.GetHistoricCandlesResponse.candle:type_name -> gctrpc.Candle - 115, // 67: gctrpc.GCTScriptExecuteRequest.script:type_name -> gctrpc.GCTScript - 115, // 68: gctrpc.GCTScriptStopRequest.script:type_name -> gctrpc.GCTScript - 115, // 69: gctrpc.GCTScriptReadScriptRequest.script:type_name -> gctrpc.GCTScript - 115, // 70: gctrpc.GCTScriptQueryRequest.script:type_name -> gctrpc.GCTScript - 115, // 71: gctrpc.GCTScriptStatusResponse.scripts:type_name -> gctrpc.GCTScript - 115, // 72: gctrpc.GCTScriptQueryResponse.script:type_name -> gctrpc.GCTScript - 137, // 73: gctrpc.WebsocketGetSubscriptionsResponse.subscriptions:type_name -> gctrpc.WebsocketSubscription - 21, // 74: gctrpc.FindMissingCandlePeriodsRequest.pair:type_name -> gctrpc.CurrencyPair - 21, // 75: gctrpc.FindMissingTradePeriodsRequest.pair:type_name -> gctrpc.CurrencyPair - 21, // 76: gctrpc.FindMissingIntervalsResponse.pair:type_name -> gctrpc.CurrencyPair - 21, // 77: gctrpc.UpsertDataHistoryJobRequest.pair:type_name -> gctrpc.CurrencyPair - 145, // 78: gctrpc.InsertSequentialJobsRequest.jobs:type_name -> gctrpc.UpsertDataHistoryJobRequest - 148, // 79: gctrpc.InsertSequentialJobsResponse.jobs:type_name -> gctrpc.UpsertDataHistoryJobResponse - 21, // 80: gctrpc.DataHistoryJob.pair:type_name -> gctrpc.CurrencyPair - 151, // 81: gctrpc.DataHistoryJob.job_results:type_name -> gctrpc.DataHistoryJobResult - 150, // 82: gctrpc.DataHistoryJobs.results:type_name -> gctrpc.DataHistoryJob - 21, // 83: gctrpc.ModifyOrderRequest.pair:type_name -> gctrpc.CurrencyPair - 164, // 84: gctrpc.CurrencyStateResponse.currency_states:type_name -> gctrpc.CurrencyState - 9, // 85: gctrpc.GetInfoResponse.RpcEndpointsEntry.value:type_name -> gctrpc.RPCEndpoint - 3, // 86: gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry.value:type_name -> gctrpc.CommunicationRelayer - 9, // 87: gctrpc.GetRPCEndpointsResponse.EndpointsEntry.value:type_name -> gctrpc.RPCEndpoint - 18, // 88: gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry.value:type_name -> gctrpc.PairsSupported - 44, // 89: gctrpc.OnlineCoins.CoinsEntry.value:type_name -> gctrpc.OnlineCoinSummary - 45, // 90: gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry.value:type_name -> gctrpc.OfflineCoins - 46, // 91: gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry.value:type_name -> gctrpc.OnlineCoins - 176, // 92: gctrpc.CancelBatchOrdersResponse.Orders.order_status:type_name -> gctrpc.CancelBatchOrdersResponse.Orders.OrderStatusEntry - 178, // 93: gctrpc.CancelAllOrdersResponse.Orders.order_status:type_name -> gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry - 18, // 94: gctrpc.GetExchangePairsResponse.SupportedAssetsEntry.value:type_name -> gctrpc.PairsSupported - 0, // 95: gctrpc.GoCryptoTrader.GetInfo:input_type -> gctrpc.GetInfoRequest - 6, // 96: gctrpc.GoCryptoTrader.GetSubsystems:input_type -> gctrpc.GetSubsystemsRequest - 5, // 97: gctrpc.GoCryptoTrader.EnableSubsystem:input_type -> gctrpc.GenericSubsystemRequest - 5, // 98: gctrpc.GoCryptoTrader.DisableSubsystem:input_type -> gctrpc.GenericSubsystemRequest - 8, // 99: gctrpc.GoCryptoTrader.GetRPCEndpoints:input_type -> gctrpc.GetRPCEndpointsRequest - 2, // 100: gctrpc.GoCryptoTrader.GetCommunicationRelayers:input_type -> gctrpc.GetCommunicationRelayersRequest - 12, // 101: gctrpc.GoCryptoTrader.GetExchanges:input_type -> gctrpc.GetExchangesRequest - 11, // 102: gctrpc.GoCryptoTrader.DisableExchange:input_type -> gctrpc.GenericExchangeNameRequest - 11, // 103: gctrpc.GoCryptoTrader.GetExchangeInfo:input_type -> gctrpc.GenericExchangeNameRequest - 11, // 104: gctrpc.GoCryptoTrader.GetExchangeOTPCode:input_type -> gctrpc.GenericExchangeNameRequest - 15, // 105: gctrpc.GoCryptoTrader.GetExchangeOTPCodes:input_type -> gctrpc.GetExchangeOTPsRequest - 11, // 106: gctrpc.GoCryptoTrader.EnableExchange:input_type -> gctrpc.GenericExchangeNameRequest - 20, // 107: gctrpc.GoCryptoTrader.GetTicker:input_type -> gctrpc.GetTickerRequest - 23, // 108: gctrpc.GoCryptoTrader.GetTickers:input_type -> gctrpc.GetTickersRequest - 26, // 109: gctrpc.GoCryptoTrader.GetOrderbook:input_type -> gctrpc.GetOrderbookRequest - 29, // 110: gctrpc.GoCryptoTrader.GetOrderbooks:input_type -> gctrpc.GetOrderbooksRequest - 32, // 111: gctrpc.GoCryptoTrader.GetAccountInfo:input_type -> gctrpc.GetAccountInfoRequest - 32, // 112: gctrpc.GoCryptoTrader.UpdateAccountInfo:input_type -> gctrpc.GetAccountInfoRequest - 32, // 113: gctrpc.GoCryptoTrader.GetAccountInfoStream:input_type -> gctrpc.GetAccountInfoRequest - 36, // 114: gctrpc.GoCryptoTrader.GetConfig:input_type -> gctrpc.GetConfigRequest - 39, // 115: gctrpc.GoCryptoTrader.GetPortfolio:input_type -> gctrpc.GetPortfolioRequest - 41, // 116: gctrpc.GoCryptoTrader.GetPortfolioSummary:input_type -> gctrpc.GetPortfolioSummaryRequest - 48, // 117: gctrpc.GoCryptoTrader.AddPortfolioAddress:input_type -> gctrpc.AddPortfolioAddressRequest - 49, // 118: gctrpc.GoCryptoTrader.RemovePortfolioAddress:input_type -> gctrpc.RemovePortfolioAddressRequest - 50, // 119: gctrpc.GoCryptoTrader.GetForexProviders:input_type -> gctrpc.GetForexProvidersRequest - 53, // 120: gctrpc.GoCryptoTrader.GetForexRates:input_type -> gctrpc.GetForexRatesRequest - 58, // 121: gctrpc.GoCryptoTrader.GetOrders:input_type -> gctrpc.GetOrdersRequest - 60, // 122: gctrpc.GoCryptoTrader.GetOrder:input_type -> gctrpc.GetOrderRequest - 61, // 123: gctrpc.GoCryptoTrader.SubmitOrder:input_type -> gctrpc.SubmitOrderRequest - 64, // 124: gctrpc.GoCryptoTrader.SimulateOrder:input_type -> gctrpc.SimulateOrderRequest - 66, // 125: gctrpc.GoCryptoTrader.WhaleBomb:input_type -> gctrpc.WhaleBombRequest - 67, // 126: gctrpc.GoCryptoTrader.CancelOrder:input_type -> gctrpc.CancelOrderRequest - 68, // 127: gctrpc.GoCryptoTrader.CancelBatchOrders:input_type -> gctrpc.CancelBatchOrdersRequest - 70, // 128: gctrpc.GoCryptoTrader.CancelAllOrders:input_type -> gctrpc.CancelAllOrdersRequest - 72, // 129: gctrpc.GoCryptoTrader.GetEvents:input_type -> gctrpc.GetEventsRequest - 75, // 130: gctrpc.GoCryptoTrader.AddEvent:input_type -> gctrpc.AddEventRequest - 77, // 131: gctrpc.GoCryptoTrader.RemoveEvent:input_type -> gctrpc.RemoveEventRequest - 78, // 132: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddresses:input_type -> gctrpc.GetCryptocurrencyDepositAddressesRequest - 80, // 133: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddress:input_type -> gctrpc.GetCryptocurrencyDepositAddressRequest - 82, // 134: gctrpc.GoCryptoTrader.WithdrawFiatFunds:input_type -> gctrpc.WithdrawFiatRequest - 83, // 135: gctrpc.GoCryptoTrader.WithdrawCryptocurrencyFunds:input_type -> gctrpc.WithdrawCryptoRequest - 85, // 136: gctrpc.GoCryptoTrader.WithdrawalEventByID:input_type -> gctrpc.WithdrawalEventByIDRequest - 87, // 137: gctrpc.GoCryptoTrader.WithdrawalEventsByExchange:input_type -> gctrpc.WithdrawalEventsByExchangeRequest - 88, // 138: gctrpc.GoCryptoTrader.WithdrawalEventsByDate:input_type -> gctrpc.WithdrawalEventsByDateRequest - 95, // 139: gctrpc.GoCryptoTrader.GetLoggerDetails:input_type -> gctrpc.GetLoggerDetailsRequest - 97, // 140: gctrpc.GoCryptoTrader.SetLoggerDetails:input_type -> gctrpc.SetLoggerDetailsRequest - 98, // 141: gctrpc.GoCryptoTrader.GetExchangePairs:input_type -> gctrpc.GetExchangePairsRequest - 100, // 142: gctrpc.GoCryptoTrader.SetExchangePair:input_type -> gctrpc.SetExchangePairRequest - 101, // 143: gctrpc.GoCryptoTrader.GetOrderbookStream:input_type -> gctrpc.GetOrderbookStreamRequest - 102, // 144: gctrpc.GoCryptoTrader.GetExchangeOrderbookStream:input_type -> gctrpc.GetExchangeOrderbookStreamRequest - 103, // 145: gctrpc.GoCryptoTrader.GetTickerStream:input_type -> gctrpc.GetTickerStreamRequest - 104, // 146: gctrpc.GoCryptoTrader.GetExchangeTickerStream:input_type -> gctrpc.GetExchangeTickerStreamRequest - 105, // 147: gctrpc.GoCryptoTrader.GetAuditEvent:input_type -> gctrpc.GetAuditEventRequest - 116, // 148: gctrpc.GoCryptoTrader.GCTScriptExecute:input_type -> gctrpc.GCTScriptExecuteRequest - 121, // 149: gctrpc.GoCryptoTrader.GCTScriptUpload:input_type -> gctrpc.GCTScriptUploadRequest - 122, // 150: gctrpc.GoCryptoTrader.GCTScriptReadScript:input_type -> gctrpc.GCTScriptReadScriptRequest - 119, // 151: gctrpc.GoCryptoTrader.GCTScriptStatus:input_type -> gctrpc.GCTScriptStatusRequest - 123, // 152: gctrpc.GoCryptoTrader.GCTScriptQuery:input_type -> gctrpc.GCTScriptQueryRequest - 117, // 153: gctrpc.GoCryptoTrader.GCTScriptStop:input_type -> gctrpc.GCTScriptStopRequest - 118, // 154: gctrpc.GoCryptoTrader.GCTScriptStopAll:input_type -> gctrpc.GCTScriptStopAllRequest - 120, // 155: gctrpc.GoCryptoTrader.GCTScriptListAll:input_type -> gctrpc.GCTScriptListAllRequest - 124, // 156: gctrpc.GoCryptoTrader.GCTScriptAutoLoadToggle:input_type -> gctrpc.GCTScriptAutoLoadRequest - 111, // 157: gctrpc.GoCryptoTrader.GetHistoricCandles:input_type -> gctrpc.GetHistoricCandlesRequest - 128, // 158: gctrpc.GoCryptoTrader.SetExchangeAsset:input_type -> gctrpc.SetExchangeAssetRequest - 129, // 159: gctrpc.GoCryptoTrader.SetAllExchangePairs:input_type -> gctrpc.SetExchangeAllPairsRequest - 130, // 160: gctrpc.GoCryptoTrader.UpdateExchangeSupportedPairs:input_type -> gctrpc.UpdateExchangeSupportedPairsRequest - 131, // 161: gctrpc.GoCryptoTrader.GetExchangeAssets:input_type -> gctrpc.GetExchangeAssetsRequest - 133, // 162: gctrpc.GoCryptoTrader.WebsocketGetInfo:input_type -> gctrpc.WebsocketGetInfoRequest - 135, // 163: gctrpc.GoCryptoTrader.WebsocketSetEnabled:input_type -> gctrpc.WebsocketSetEnabledRequest - 136, // 164: gctrpc.GoCryptoTrader.WebsocketGetSubscriptions:input_type -> gctrpc.WebsocketGetSubscriptionsRequest - 139, // 165: gctrpc.GoCryptoTrader.WebsocketSetProxy:input_type -> gctrpc.WebsocketSetProxyRequest - 140, // 166: gctrpc.GoCryptoTrader.WebsocketSetURL:input_type -> gctrpc.WebsocketSetURLRequest - 107, // 167: gctrpc.GoCryptoTrader.GetRecentTrades:input_type -> gctrpc.GetSavedTradesRequest - 107, // 168: gctrpc.GoCryptoTrader.GetHistoricTrades:input_type -> gctrpc.GetSavedTradesRequest - 107, // 169: gctrpc.GoCryptoTrader.GetSavedTrades:input_type -> gctrpc.GetSavedTradesRequest - 110, // 170: gctrpc.GoCryptoTrader.ConvertTradesToCandles:input_type -> gctrpc.ConvertTradesToCandlesRequest - 141, // 171: gctrpc.GoCryptoTrader.FindMissingSavedCandleIntervals:input_type -> gctrpc.FindMissingCandlePeriodsRequest - 142, // 172: gctrpc.GoCryptoTrader.FindMissingSavedTradeIntervals:input_type -> gctrpc.FindMissingTradePeriodsRequest - 144, // 173: gctrpc.GoCryptoTrader.SetExchangeTradeProcessing:input_type -> gctrpc.SetExchangeTradeProcessingRequest - 145, // 174: gctrpc.GoCryptoTrader.UpsertDataHistoryJob:input_type -> gctrpc.UpsertDataHistoryJobRequest - 149, // 175: gctrpc.GoCryptoTrader.GetDataHistoryJobDetails:input_type -> gctrpc.GetDataHistoryJobDetailsRequest - 0, // 176: gctrpc.GoCryptoTrader.GetActiveDataHistoryJobs:input_type -> gctrpc.GetInfoRequest - 153, // 177: gctrpc.GoCryptoTrader.GetDataHistoryJobsBetween:input_type -> gctrpc.GetDataHistoryJobsBetweenRequest - 149, // 178: gctrpc.GoCryptoTrader.GetDataHistoryJobSummary:input_type -> gctrpc.GetDataHistoryJobDetailsRequest - 154, // 179: gctrpc.GoCryptoTrader.SetDataHistoryJobStatus:input_type -> gctrpc.SetDataHistoryJobStatusRequest - 155, // 180: gctrpc.GoCryptoTrader.UpdateDataHistoryJobPrerequisite:input_type -> gctrpc.UpdateDataHistoryJobPrerequisiteRequest - 58, // 181: gctrpc.GoCryptoTrader.GetManagedOrders:input_type -> gctrpc.GetOrdersRequest - 156, // 182: gctrpc.GoCryptoTrader.ModifyOrder:input_type -> gctrpc.ModifyOrderRequest - 158, // 183: gctrpc.GoCryptoTrader.CurrencyStateGetAll:input_type -> gctrpc.CurrencyStateGetAllRequest - 159, // 184: gctrpc.GoCryptoTrader.CurrencyStateTrading:input_type -> gctrpc.CurrencyStateTradingRequest - 162, // 185: gctrpc.GoCryptoTrader.CurrencyStateDeposit:input_type -> gctrpc.CurrencyStateDepositRequest - 161, // 186: gctrpc.GoCryptoTrader.CurrencyStateWithdraw:input_type -> gctrpc.CurrencyStateWithdrawRequest - 160, // 187: gctrpc.GoCryptoTrader.CurrencyStateTradingPair:input_type -> gctrpc.CurrencyStateTradingPairRequest - 1, // 188: gctrpc.GoCryptoTrader.GetInfo:output_type -> gctrpc.GetInfoResponse - 7, // 189: gctrpc.GoCryptoTrader.GetSubsystems:output_type -> gctrpc.GetSusbsytemsResponse - 127, // 190: gctrpc.GoCryptoTrader.EnableSubsystem:output_type -> gctrpc.GenericResponse - 127, // 191: gctrpc.GoCryptoTrader.DisableSubsystem:output_type -> gctrpc.GenericResponse - 10, // 192: gctrpc.GoCryptoTrader.GetRPCEndpoints:output_type -> gctrpc.GetRPCEndpointsResponse - 4, // 193: gctrpc.GoCryptoTrader.GetCommunicationRelayers:output_type -> gctrpc.GetCommunicationRelayersResponse - 13, // 194: gctrpc.GoCryptoTrader.GetExchanges:output_type -> gctrpc.GetExchangesResponse - 127, // 195: gctrpc.GoCryptoTrader.DisableExchange:output_type -> gctrpc.GenericResponse - 19, // 196: gctrpc.GoCryptoTrader.GetExchangeInfo:output_type -> gctrpc.GetExchangeInfoResponse - 14, // 197: gctrpc.GoCryptoTrader.GetExchangeOTPCode:output_type -> gctrpc.GetExchangeOTPResponse - 16, // 198: gctrpc.GoCryptoTrader.GetExchangeOTPCodes:output_type -> gctrpc.GetExchangeOTPsResponse - 127, // 199: gctrpc.GoCryptoTrader.EnableExchange:output_type -> gctrpc.GenericResponse - 22, // 200: gctrpc.GoCryptoTrader.GetTicker:output_type -> gctrpc.TickerResponse - 25, // 201: gctrpc.GoCryptoTrader.GetTickers:output_type -> gctrpc.GetTickersResponse - 28, // 202: gctrpc.GoCryptoTrader.GetOrderbook:output_type -> gctrpc.OrderbookResponse - 31, // 203: gctrpc.GoCryptoTrader.GetOrderbooks:output_type -> gctrpc.GetOrderbooksResponse - 35, // 204: gctrpc.GoCryptoTrader.GetAccountInfo:output_type -> gctrpc.GetAccountInfoResponse - 35, // 205: gctrpc.GoCryptoTrader.UpdateAccountInfo:output_type -> gctrpc.GetAccountInfoResponse - 35, // 206: gctrpc.GoCryptoTrader.GetAccountInfoStream:output_type -> gctrpc.GetAccountInfoResponse - 37, // 207: gctrpc.GoCryptoTrader.GetConfig:output_type -> gctrpc.GetConfigResponse - 40, // 208: gctrpc.GoCryptoTrader.GetPortfolio:output_type -> gctrpc.GetPortfolioResponse - 47, // 209: gctrpc.GoCryptoTrader.GetPortfolioSummary:output_type -> gctrpc.GetPortfolioSummaryResponse - 127, // 210: gctrpc.GoCryptoTrader.AddPortfolioAddress:output_type -> gctrpc.GenericResponse - 127, // 211: gctrpc.GoCryptoTrader.RemovePortfolioAddress:output_type -> gctrpc.GenericResponse - 52, // 212: gctrpc.GoCryptoTrader.GetForexProviders:output_type -> gctrpc.GetForexProvidersResponse - 55, // 213: gctrpc.GoCryptoTrader.GetForexRates:output_type -> gctrpc.GetForexRatesResponse - 59, // 214: gctrpc.GoCryptoTrader.GetOrders:output_type -> gctrpc.GetOrdersResponse - 56, // 215: gctrpc.GoCryptoTrader.GetOrder:output_type -> gctrpc.OrderDetails - 63, // 216: gctrpc.GoCryptoTrader.SubmitOrder:output_type -> gctrpc.SubmitOrderResponse - 65, // 217: gctrpc.GoCryptoTrader.SimulateOrder:output_type -> gctrpc.SimulateOrderResponse - 65, // 218: gctrpc.GoCryptoTrader.WhaleBomb:output_type -> gctrpc.SimulateOrderResponse - 127, // 219: gctrpc.GoCryptoTrader.CancelOrder:output_type -> gctrpc.GenericResponse - 69, // 220: gctrpc.GoCryptoTrader.CancelBatchOrders:output_type -> gctrpc.CancelBatchOrdersResponse - 71, // 221: gctrpc.GoCryptoTrader.CancelAllOrders:output_type -> gctrpc.CancelAllOrdersResponse - 74, // 222: gctrpc.GoCryptoTrader.GetEvents:output_type -> gctrpc.GetEventsResponse - 76, // 223: gctrpc.GoCryptoTrader.AddEvent:output_type -> gctrpc.AddEventResponse - 127, // 224: gctrpc.GoCryptoTrader.RemoveEvent:output_type -> gctrpc.GenericResponse - 79, // 225: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddresses:output_type -> gctrpc.GetCryptocurrencyDepositAddressesResponse - 81, // 226: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddress:output_type -> gctrpc.GetCryptocurrencyDepositAddressResponse - 84, // 227: gctrpc.GoCryptoTrader.WithdrawFiatFunds:output_type -> gctrpc.WithdrawResponse - 84, // 228: gctrpc.GoCryptoTrader.WithdrawCryptocurrencyFunds:output_type -> gctrpc.WithdrawResponse - 86, // 229: gctrpc.GoCryptoTrader.WithdrawalEventByID:output_type -> gctrpc.WithdrawalEventByIDResponse - 89, // 230: gctrpc.GoCryptoTrader.WithdrawalEventsByExchange:output_type -> gctrpc.WithdrawalEventsByExchangeResponse - 89, // 231: gctrpc.GoCryptoTrader.WithdrawalEventsByDate:output_type -> gctrpc.WithdrawalEventsByExchangeResponse - 96, // 232: gctrpc.GoCryptoTrader.GetLoggerDetails:output_type -> gctrpc.GetLoggerDetailsResponse - 96, // 233: gctrpc.GoCryptoTrader.SetLoggerDetails:output_type -> gctrpc.GetLoggerDetailsResponse - 99, // 234: gctrpc.GoCryptoTrader.GetExchangePairs:output_type -> gctrpc.GetExchangePairsResponse - 127, // 235: gctrpc.GoCryptoTrader.SetExchangePair:output_type -> gctrpc.GenericResponse - 28, // 236: gctrpc.GoCryptoTrader.GetOrderbookStream:output_type -> gctrpc.OrderbookResponse - 28, // 237: gctrpc.GoCryptoTrader.GetExchangeOrderbookStream:output_type -> gctrpc.OrderbookResponse - 22, // 238: gctrpc.GoCryptoTrader.GetTickerStream:output_type -> gctrpc.TickerResponse - 22, // 239: gctrpc.GoCryptoTrader.GetExchangeTickerStream:output_type -> gctrpc.TickerResponse - 106, // 240: gctrpc.GoCryptoTrader.GetAuditEvent:output_type -> gctrpc.GetAuditEventResponse - 127, // 241: gctrpc.GoCryptoTrader.GCTScriptExecute:output_type -> gctrpc.GenericResponse - 127, // 242: gctrpc.GoCryptoTrader.GCTScriptUpload:output_type -> gctrpc.GenericResponse - 126, // 243: gctrpc.GoCryptoTrader.GCTScriptReadScript:output_type -> gctrpc.GCTScriptQueryResponse - 125, // 244: gctrpc.GoCryptoTrader.GCTScriptStatus:output_type -> gctrpc.GCTScriptStatusResponse - 126, // 245: gctrpc.GoCryptoTrader.GCTScriptQuery:output_type -> gctrpc.GCTScriptQueryResponse - 127, // 246: gctrpc.GoCryptoTrader.GCTScriptStop:output_type -> gctrpc.GenericResponse - 127, // 247: gctrpc.GoCryptoTrader.GCTScriptStopAll:output_type -> gctrpc.GenericResponse - 125, // 248: gctrpc.GoCryptoTrader.GCTScriptListAll:output_type -> gctrpc.GCTScriptStatusResponse - 127, // 249: gctrpc.GoCryptoTrader.GCTScriptAutoLoadToggle:output_type -> gctrpc.GenericResponse - 112, // 250: gctrpc.GoCryptoTrader.GetHistoricCandles:output_type -> gctrpc.GetHistoricCandlesResponse - 127, // 251: gctrpc.GoCryptoTrader.SetExchangeAsset:output_type -> gctrpc.GenericResponse - 127, // 252: gctrpc.GoCryptoTrader.SetAllExchangePairs:output_type -> gctrpc.GenericResponse - 127, // 253: gctrpc.GoCryptoTrader.UpdateExchangeSupportedPairs:output_type -> gctrpc.GenericResponse - 132, // 254: gctrpc.GoCryptoTrader.GetExchangeAssets:output_type -> gctrpc.GetExchangeAssetsResponse - 134, // 255: gctrpc.GoCryptoTrader.WebsocketGetInfo:output_type -> gctrpc.WebsocketGetInfoResponse - 127, // 256: gctrpc.GoCryptoTrader.WebsocketSetEnabled:output_type -> gctrpc.GenericResponse - 138, // 257: gctrpc.GoCryptoTrader.WebsocketGetSubscriptions:output_type -> gctrpc.WebsocketGetSubscriptionsResponse - 127, // 258: gctrpc.GoCryptoTrader.WebsocketSetProxy:output_type -> gctrpc.GenericResponse - 127, // 259: gctrpc.GoCryptoTrader.WebsocketSetURL:output_type -> gctrpc.GenericResponse - 109, // 260: gctrpc.GoCryptoTrader.GetRecentTrades:output_type -> gctrpc.SavedTradesResponse - 109, // 261: gctrpc.GoCryptoTrader.GetHistoricTrades:output_type -> gctrpc.SavedTradesResponse - 109, // 262: gctrpc.GoCryptoTrader.GetSavedTrades:output_type -> gctrpc.SavedTradesResponse - 112, // 263: gctrpc.GoCryptoTrader.ConvertTradesToCandles:output_type -> gctrpc.GetHistoricCandlesResponse - 143, // 264: gctrpc.GoCryptoTrader.FindMissingSavedCandleIntervals:output_type -> gctrpc.FindMissingIntervalsResponse - 143, // 265: gctrpc.GoCryptoTrader.FindMissingSavedTradeIntervals:output_type -> gctrpc.FindMissingIntervalsResponse - 127, // 266: gctrpc.GoCryptoTrader.SetExchangeTradeProcessing:output_type -> gctrpc.GenericResponse - 148, // 267: gctrpc.GoCryptoTrader.UpsertDataHistoryJob:output_type -> gctrpc.UpsertDataHistoryJobResponse - 150, // 268: gctrpc.GoCryptoTrader.GetDataHistoryJobDetails:output_type -> gctrpc.DataHistoryJob - 152, // 269: gctrpc.GoCryptoTrader.GetActiveDataHistoryJobs:output_type -> gctrpc.DataHistoryJobs - 152, // 270: gctrpc.GoCryptoTrader.GetDataHistoryJobsBetween:output_type -> gctrpc.DataHistoryJobs - 150, // 271: gctrpc.GoCryptoTrader.GetDataHistoryJobSummary:output_type -> gctrpc.DataHistoryJob - 127, // 272: gctrpc.GoCryptoTrader.SetDataHistoryJobStatus:output_type -> gctrpc.GenericResponse - 127, // 273: gctrpc.GoCryptoTrader.UpdateDataHistoryJobPrerequisite:output_type -> gctrpc.GenericResponse - 59, // 274: gctrpc.GoCryptoTrader.GetManagedOrders:output_type -> gctrpc.GetOrdersResponse - 157, // 275: gctrpc.GoCryptoTrader.ModifyOrder:output_type -> gctrpc.ModifyOrderResponse - 163, // 276: gctrpc.GoCryptoTrader.CurrencyStateGetAll:output_type -> gctrpc.CurrencyStateResponse - 127, // 277: gctrpc.GoCryptoTrader.CurrencyStateTrading:output_type -> gctrpc.GenericResponse - 127, // 278: gctrpc.GoCryptoTrader.CurrencyStateDeposit:output_type -> gctrpc.GenericResponse - 127, // 279: gctrpc.GoCryptoTrader.CurrencyStateWithdraw:output_type -> gctrpc.GenericResponse - 127, // 280: gctrpc.GoCryptoTrader.CurrencyStateTradingPair:output_type -> gctrpc.GenericResponse - 188, // [188:281] is the sub-list for method output_type - 95, // [95:188] is the sub-list for method input_type - 95, // [95:95] is the sub-list for extension type_name - 95, // [95:95] is the sub-list for extension extendee - 0, // [0:95] is the sub-list for field type_name + 79, // 46: gctrpc.DepositAddresses.addresses:type_name -> gctrpc.DepositAddress + 183, // 47: gctrpc.GetCryptocurrencyDepositAddressesResponse.addresses:type_name -> gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry + 94, // 48: gctrpc.WithdrawalEventByIDResponse.event:type_name -> gctrpc.WithdrawalEventResponse + 94, // 49: gctrpc.WithdrawalEventsByExchangeResponse.event:type_name -> gctrpc.WithdrawalEventResponse + 95, // 50: gctrpc.WithdrawalEventResponse.exchange:type_name -> gctrpc.WithdrawlExchangeEvent + 96, // 51: gctrpc.WithdrawalEventResponse.request:type_name -> gctrpc.WithdrawalRequestEvent + 185, // 52: gctrpc.WithdrawalEventResponse.created_at:type_name -> google.protobuf.Timestamp + 185, // 53: gctrpc.WithdrawalEventResponse.updated_at:type_name -> google.protobuf.Timestamp + 97, // 54: gctrpc.WithdrawalRequestEvent.fiat:type_name -> gctrpc.FiatWithdrawalEvent + 98, // 55: gctrpc.WithdrawalRequestEvent.crypto:type_name -> gctrpc.CryptoWithdrawalEvent + 184, // 56: gctrpc.GetExchangePairsResponse.supported_assets:type_name -> gctrpc.GetExchangePairsResponse.SupportedAssetsEntry + 21, // 57: gctrpc.SetExchangePairRequest.pairs:type_name -> gctrpc.CurrencyPair + 21, // 58: gctrpc.GetOrderbookStreamRequest.pair:type_name -> gctrpc.CurrencyPair + 21, // 59: gctrpc.GetTickerStreamRequest.pair:type_name -> gctrpc.CurrencyPair + 118, // 60: gctrpc.GetAuditEventResponse.events:type_name -> gctrpc.AuditEvent + 21, // 61: gctrpc.GetSavedTradesRequest.pair:type_name -> gctrpc.CurrencyPair + 21, // 62: gctrpc.SavedTradesResponse.pair:type_name -> gctrpc.CurrencyPair + 112, // 63: gctrpc.SavedTradesResponse.trades:type_name -> gctrpc.SavedTrades + 21, // 64: gctrpc.ConvertTradesToCandlesRequest.pair:type_name -> gctrpc.CurrencyPair + 21, // 65: gctrpc.GetHistoricCandlesRequest.pair:type_name -> gctrpc.CurrencyPair + 21, // 66: gctrpc.GetHistoricCandlesResponse.pair:type_name -> gctrpc.CurrencyPair + 117, // 67: gctrpc.GetHistoricCandlesResponse.candle:type_name -> gctrpc.Candle + 119, // 68: gctrpc.GCTScriptExecuteRequest.script:type_name -> gctrpc.GCTScript + 119, // 69: gctrpc.GCTScriptStopRequest.script:type_name -> gctrpc.GCTScript + 119, // 70: gctrpc.GCTScriptReadScriptRequest.script:type_name -> gctrpc.GCTScript + 119, // 71: gctrpc.GCTScriptQueryRequest.script:type_name -> gctrpc.GCTScript + 119, // 72: gctrpc.GCTScriptStatusResponse.scripts:type_name -> gctrpc.GCTScript + 119, // 73: gctrpc.GCTScriptQueryResponse.script:type_name -> gctrpc.GCTScript + 141, // 74: gctrpc.WebsocketGetSubscriptionsResponse.subscriptions:type_name -> gctrpc.WebsocketSubscription + 21, // 75: gctrpc.FindMissingCandlePeriodsRequest.pair:type_name -> gctrpc.CurrencyPair + 21, // 76: gctrpc.FindMissingTradePeriodsRequest.pair:type_name -> gctrpc.CurrencyPair + 21, // 77: gctrpc.FindMissingIntervalsResponse.pair:type_name -> gctrpc.CurrencyPair + 21, // 78: gctrpc.UpsertDataHistoryJobRequest.pair:type_name -> gctrpc.CurrencyPair + 149, // 79: gctrpc.InsertSequentialJobsRequest.jobs:type_name -> gctrpc.UpsertDataHistoryJobRequest + 152, // 80: gctrpc.InsertSequentialJobsResponse.jobs:type_name -> gctrpc.UpsertDataHistoryJobResponse + 21, // 81: gctrpc.DataHistoryJob.pair:type_name -> gctrpc.CurrencyPair + 155, // 82: gctrpc.DataHistoryJob.job_results:type_name -> gctrpc.DataHistoryJobResult + 154, // 83: gctrpc.DataHistoryJobs.results:type_name -> gctrpc.DataHistoryJob + 21, // 84: gctrpc.ModifyOrderRequest.pair:type_name -> gctrpc.CurrencyPair + 168, // 85: gctrpc.CurrencyStateResponse.currency_states:type_name -> gctrpc.CurrencyState + 9, // 86: gctrpc.GetInfoResponse.RpcEndpointsEntry.value:type_name -> gctrpc.RPCEndpoint + 3, // 87: gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry.value:type_name -> gctrpc.CommunicationRelayer + 9, // 88: gctrpc.GetRPCEndpointsResponse.EndpointsEntry.value:type_name -> gctrpc.RPCEndpoint + 18, // 89: gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry.value:type_name -> gctrpc.PairsSupported + 44, // 90: gctrpc.OnlineCoins.CoinsEntry.value:type_name -> gctrpc.OnlineCoinSummary + 45, // 91: gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry.value:type_name -> gctrpc.OfflineCoins + 46, // 92: gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry.value:type_name -> gctrpc.OnlineCoins + 180, // 93: gctrpc.CancelBatchOrdersResponse.Orders.order_status:type_name -> gctrpc.CancelBatchOrdersResponse.Orders.OrderStatusEntry + 182, // 94: gctrpc.CancelAllOrdersResponse.Orders.order_status:type_name -> gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry + 80, // 95: gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry.value:type_name -> gctrpc.DepositAddresses + 18, // 96: gctrpc.GetExchangePairsResponse.SupportedAssetsEntry.value:type_name -> gctrpc.PairsSupported + 0, // 97: gctrpc.GoCryptoTrader.GetInfo:input_type -> gctrpc.GetInfoRequest + 6, // 98: gctrpc.GoCryptoTrader.GetSubsystems:input_type -> gctrpc.GetSubsystemsRequest + 5, // 99: gctrpc.GoCryptoTrader.EnableSubsystem:input_type -> gctrpc.GenericSubsystemRequest + 5, // 100: gctrpc.GoCryptoTrader.DisableSubsystem:input_type -> gctrpc.GenericSubsystemRequest + 8, // 101: gctrpc.GoCryptoTrader.GetRPCEndpoints:input_type -> gctrpc.GetRPCEndpointsRequest + 2, // 102: gctrpc.GoCryptoTrader.GetCommunicationRelayers:input_type -> gctrpc.GetCommunicationRelayersRequest + 12, // 103: gctrpc.GoCryptoTrader.GetExchanges:input_type -> gctrpc.GetExchangesRequest + 11, // 104: gctrpc.GoCryptoTrader.DisableExchange:input_type -> gctrpc.GenericExchangeNameRequest + 11, // 105: gctrpc.GoCryptoTrader.GetExchangeInfo:input_type -> gctrpc.GenericExchangeNameRequest + 11, // 106: gctrpc.GoCryptoTrader.GetExchangeOTPCode:input_type -> gctrpc.GenericExchangeNameRequest + 15, // 107: gctrpc.GoCryptoTrader.GetExchangeOTPCodes:input_type -> gctrpc.GetExchangeOTPsRequest + 11, // 108: gctrpc.GoCryptoTrader.EnableExchange:input_type -> gctrpc.GenericExchangeNameRequest + 20, // 109: gctrpc.GoCryptoTrader.GetTicker:input_type -> gctrpc.GetTickerRequest + 23, // 110: gctrpc.GoCryptoTrader.GetTickers:input_type -> gctrpc.GetTickersRequest + 26, // 111: gctrpc.GoCryptoTrader.GetOrderbook:input_type -> gctrpc.GetOrderbookRequest + 29, // 112: gctrpc.GoCryptoTrader.GetOrderbooks:input_type -> gctrpc.GetOrderbooksRequest + 32, // 113: gctrpc.GoCryptoTrader.GetAccountInfo:input_type -> gctrpc.GetAccountInfoRequest + 32, // 114: gctrpc.GoCryptoTrader.UpdateAccountInfo:input_type -> gctrpc.GetAccountInfoRequest + 32, // 115: gctrpc.GoCryptoTrader.GetAccountInfoStream:input_type -> gctrpc.GetAccountInfoRequest + 36, // 116: gctrpc.GoCryptoTrader.GetConfig:input_type -> gctrpc.GetConfigRequest + 39, // 117: gctrpc.GoCryptoTrader.GetPortfolio:input_type -> gctrpc.GetPortfolioRequest + 41, // 118: gctrpc.GoCryptoTrader.GetPortfolioSummary:input_type -> gctrpc.GetPortfolioSummaryRequest + 48, // 119: gctrpc.GoCryptoTrader.AddPortfolioAddress:input_type -> gctrpc.AddPortfolioAddressRequest + 49, // 120: gctrpc.GoCryptoTrader.RemovePortfolioAddress:input_type -> gctrpc.RemovePortfolioAddressRequest + 50, // 121: gctrpc.GoCryptoTrader.GetForexProviders:input_type -> gctrpc.GetForexProvidersRequest + 53, // 122: gctrpc.GoCryptoTrader.GetForexRates:input_type -> gctrpc.GetForexRatesRequest + 58, // 123: gctrpc.GoCryptoTrader.GetOrders:input_type -> gctrpc.GetOrdersRequest + 60, // 124: gctrpc.GoCryptoTrader.GetOrder:input_type -> gctrpc.GetOrderRequest + 61, // 125: gctrpc.GoCryptoTrader.SubmitOrder:input_type -> gctrpc.SubmitOrderRequest + 64, // 126: gctrpc.GoCryptoTrader.SimulateOrder:input_type -> gctrpc.SimulateOrderRequest + 66, // 127: gctrpc.GoCryptoTrader.WhaleBomb:input_type -> gctrpc.WhaleBombRequest + 67, // 128: gctrpc.GoCryptoTrader.CancelOrder:input_type -> gctrpc.CancelOrderRequest + 68, // 129: gctrpc.GoCryptoTrader.CancelBatchOrders:input_type -> gctrpc.CancelBatchOrdersRequest + 70, // 130: gctrpc.GoCryptoTrader.CancelAllOrders:input_type -> gctrpc.CancelAllOrdersRequest + 72, // 131: gctrpc.GoCryptoTrader.GetEvents:input_type -> gctrpc.GetEventsRequest + 75, // 132: gctrpc.GoCryptoTrader.AddEvent:input_type -> gctrpc.AddEventRequest + 77, // 133: gctrpc.GoCryptoTrader.RemoveEvent:input_type -> gctrpc.RemoveEventRequest + 78, // 134: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddresses:input_type -> gctrpc.GetCryptocurrencyDepositAddressesRequest + 82, // 135: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddress:input_type -> gctrpc.GetCryptocurrencyDepositAddressRequest + 84, // 136: gctrpc.GoCryptoTrader.GetAvailableTransferChains:input_type -> gctrpc.GetAvailableTransferChainsRequest + 86, // 137: gctrpc.GoCryptoTrader.WithdrawFiatFunds:input_type -> gctrpc.WithdrawFiatRequest + 87, // 138: gctrpc.GoCryptoTrader.WithdrawCryptocurrencyFunds:input_type -> gctrpc.WithdrawCryptoRequest + 89, // 139: gctrpc.GoCryptoTrader.WithdrawalEventByID:input_type -> gctrpc.WithdrawalEventByIDRequest + 91, // 140: gctrpc.GoCryptoTrader.WithdrawalEventsByExchange:input_type -> gctrpc.WithdrawalEventsByExchangeRequest + 92, // 141: gctrpc.GoCryptoTrader.WithdrawalEventsByDate:input_type -> gctrpc.WithdrawalEventsByDateRequest + 99, // 142: gctrpc.GoCryptoTrader.GetLoggerDetails:input_type -> gctrpc.GetLoggerDetailsRequest + 101, // 143: gctrpc.GoCryptoTrader.SetLoggerDetails:input_type -> gctrpc.SetLoggerDetailsRequest + 102, // 144: gctrpc.GoCryptoTrader.GetExchangePairs:input_type -> gctrpc.GetExchangePairsRequest + 104, // 145: gctrpc.GoCryptoTrader.SetExchangePair:input_type -> gctrpc.SetExchangePairRequest + 105, // 146: gctrpc.GoCryptoTrader.GetOrderbookStream:input_type -> gctrpc.GetOrderbookStreamRequest + 106, // 147: gctrpc.GoCryptoTrader.GetExchangeOrderbookStream:input_type -> gctrpc.GetExchangeOrderbookStreamRequest + 107, // 148: gctrpc.GoCryptoTrader.GetTickerStream:input_type -> gctrpc.GetTickerStreamRequest + 108, // 149: gctrpc.GoCryptoTrader.GetExchangeTickerStream:input_type -> gctrpc.GetExchangeTickerStreamRequest + 109, // 150: gctrpc.GoCryptoTrader.GetAuditEvent:input_type -> gctrpc.GetAuditEventRequest + 120, // 151: gctrpc.GoCryptoTrader.GCTScriptExecute:input_type -> gctrpc.GCTScriptExecuteRequest + 125, // 152: gctrpc.GoCryptoTrader.GCTScriptUpload:input_type -> gctrpc.GCTScriptUploadRequest + 126, // 153: gctrpc.GoCryptoTrader.GCTScriptReadScript:input_type -> gctrpc.GCTScriptReadScriptRequest + 123, // 154: gctrpc.GoCryptoTrader.GCTScriptStatus:input_type -> gctrpc.GCTScriptStatusRequest + 127, // 155: gctrpc.GoCryptoTrader.GCTScriptQuery:input_type -> gctrpc.GCTScriptQueryRequest + 121, // 156: gctrpc.GoCryptoTrader.GCTScriptStop:input_type -> gctrpc.GCTScriptStopRequest + 122, // 157: gctrpc.GoCryptoTrader.GCTScriptStopAll:input_type -> gctrpc.GCTScriptStopAllRequest + 124, // 158: gctrpc.GoCryptoTrader.GCTScriptListAll:input_type -> gctrpc.GCTScriptListAllRequest + 128, // 159: gctrpc.GoCryptoTrader.GCTScriptAutoLoadToggle:input_type -> gctrpc.GCTScriptAutoLoadRequest + 115, // 160: gctrpc.GoCryptoTrader.GetHistoricCandles:input_type -> gctrpc.GetHistoricCandlesRequest + 132, // 161: gctrpc.GoCryptoTrader.SetExchangeAsset:input_type -> gctrpc.SetExchangeAssetRequest + 133, // 162: gctrpc.GoCryptoTrader.SetAllExchangePairs:input_type -> gctrpc.SetExchangeAllPairsRequest + 134, // 163: gctrpc.GoCryptoTrader.UpdateExchangeSupportedPairs:input_type -> gctrpc.UpdateExchangeSupportedPairsRequest + 135, // 164: gctrpc.GoCryptoTrader.GetExchangeAssets:input_type -> gctrpc.GetExchangeAssetsRequest + 137, // 165: gctrpc.GoCryptoTrader.WebsocketGetInfo:input_type -> gctrpc.WebsocketGetInfoRequest + 139, // 166: gctrpc.GoCryptoTrader.WebsocketSetEnabled:input_type -> gctrpc.WebsocketSetEnabledRequest + 140, // 167: gctrpc.GoCryptoTrader.WebsocketGetSubscriptions:input_type -> gctrpc.WebsocketGetSubscriptionsRequest + 143, // 168: gctrpc.GoCryptoTrader.WebsocketSetProxy:input_type -> gctrpc.WebsocketSetProxyRequest + 144, // 169: gctrpc.GoCryptoTrader.WebsocketSetURL:input_type -> gctrpc.WebsocketSetURLRequest + 111, // 170: gctrpc.GoCryptoTrader.GetRecentTrades:input_type -> gctrpc.GetSavedTradesRequest + 111, // 171: gctrpc.GoCryptoTrader.GetHistoricTrades:input_type -> gctrpc.GetSavedTradesRequest + 111, // 172: gctrpc.GoCryptoTrader.GetSavedTrades:input_type -> gctrpc.GetSavedTradesRequest + 114, // 173: gctrpc.GoCryptoTrader.ConvertTradesToCandles:input_type -> gctrpc.ConvertTradesToCandlesRequest + 145, // 174: gctrpc.GoCryptoTrader.FindMissingSavedCandleIntervals:input_type -> gctrpc.FindMissingCandlePeriodsRequest + 146, // 175: gctrpc.GoCryptoTrader.FindMissingSavedTradeIntervals:input_type -> gctrpc.FindMissingTradePeriodsRequest + 148, // 176: gctrpc.GoCryptoTrader.SetExchangeTradeProcessing:input_type -> gctrpc.SetExchangeTradeProcessingRequest + 149, // 177: gctrpc.GoCryptoTrader.UpsertDataHistoryJob:input_type -> gctrpc.UpsertDataHistoryJobRequest + 153, // 178: gctrpc.GoCryptoTrader.GetDataHistoryJobDetails:input_type -> gctrpc.GetDataHistoryJobDetailsRequest + 0, // 179: gctrpc.GoCryptoTrader.GetActiveDataHistoryJobs:input_type -> gctrpc.GetInfoRequest + 157, // 180: gctrpc.GoCryptoTrader.GetDataHistoryJobsBetween:input_type -> gctrpc.GetDataHistoryJobsBetweenRequest + 153, // 181: gctrpc.GoCryptoTrader.GetDataHistoryJobSummary:input_type -> gctrpc.GetDataHistoryJobDetailsRequest + 158, // 182: gctrpc.GoCryptoTrader.SetDataHistoryJobStatus:input_type -> gctrpc.SetDataHistoryJobStatusRequest + 159, // 183: gctrpc.GoCryptoTrader.UpdateDataHistoryJobPrerequisite:input_type -> gctrpc.UpdateDataHistoryJobPrerequisiteRequest + 58, // 184: gctrpc.GoCryptoTrader.GetManagedOrders:input_type -> gctrpc.GetOrdersRequest + 160, // 185: gctrpc.GoCryptoTrader.ModifyOrder:input_type -> gctrpc.ModifyOrderRequest + 162, // 186: gctrpc.GoCryptoTrader.CurrencyStateGetAll:input_type -> gctrpc.CurrencyStateGetAllRequest + 163, // 187: gctrpc.GoCryptoTrader.CurrencyStateTrading:input_type -> gctrpc.CurrencyStateTradingRequest + 166, // 188: gctrpc.GoCryptoTrader.CurrencyStateDeposit:input_type -> gctrpc.CurrencyStateDepositRequest + 165, // 189: gctrpc.GoCryptoTrader.CurrencyStateWithdraw:input_type -> gctrpc.CurrencyStateWithdrawRequest + 164, // 190: gctrpc.GoCryptoTrader.CurrencyStateTradingPair:input_type -> gctrpc.CurrencyStateTradingPairRequest + 1, // 191: gctrpc.GoCryptoTrader.GetInfo:output_type -> gctrpc.GetInfoResponse + 7, // 192: gctrpc.GoCryptoTrader.GetSubsystems:output_type -> gctrpc.GetSusbsytemsResponse + 131, // 193: gctrpc.GoCryptoTrader.EnableSubsystem:output_type -> gctrpc.GenericResponse + 131, // 194: gctrpc.GoCryptoTrader.DisableSubsystem:output_type -> gctrpc.GenericResponse + 10, // 195: gctrpc.GoCryptoTrader.GetRPCEndpoints:output_type -> gctrpc.GetRPCEndpointsResponse + 4, // 196: gctrpc.GoCryptoTrader.GetCommunicationRelayers:output_type -> gctrpc.GetCommunicationRelayersResponse + 13, // 197: gctrpc.GoCryptoTrader.GetExchanges:output_type -> gctrpc.GetExchangesResponse + 131, // 198: gctrpc.GoCryptoTrader.DisableExchange:output_type -> gctrpc.GenericResponse + 19, // 199: gctrpc.GoCryptoTrader.GetExchangeInfo:output_type -> gctrpc.GetExchangeInfoResponse + 14, // 200: gctrpc.GoCryptoTrader.GetExchangeOTPCode:output_type -> gctrpc.GetExchangeOTPResponse + 16, // 201: gctrpc.GoCryptoTrader.GetExchangeOTPCodes:output_type -> gctrpc.GetExchangeOTPsResponse + 131, // 202: gctrpc.GoCryptoTrader.EnableExchange:output_type -> gctrpc.GenericResponse + 22, // 203: gctrpc.GoCryptoTrader.GetTicker:output_type -> gctrpc.TickerResponse + 25, // 204: gctrpc.GoCryptoTrader.GetTickers:output_type -> gctrpc.GetTickersResponse + 28, // 205: gctrpc.GoCryptoTrader.GetOrderbook:output_type -> gctrpc.OrderbookResponse + 31, // 206: gctrpc.GoCryptoTrader.GetOrderbooks:output_type -> gctrpc.GetOrderbooksResponse + 35, // 207: gctrpc.GoCryptoTrader.GetAccountInfo:output_type -> gctrpc.GetAccountInfoResponse + 35, // 208: gctrpc.GoCryptoTrader.UpdateAccountInfo:output_type -> gctrpc.GetAccountInfoResponse + 35, // 209: gctrpc.GoCryptoTrader.GetAccountInfoStream:output_type -> gctrpc.GetAccountInfoResponse + 37, // 210: gctrpc.GoCryptoTrader.GetConfig:output_type -> gctrpc.GetConfigResponse + 40, // 211: gctrpc.GoCryptoTrader.GetPortfolio:output_type -> gctrpc.GetPortfolioResponse + 47, // 212: gctrpc.GoCryptoTrader.GetPortfolioSummary:output_type -> gctrpc.GetPortfolioSummaryResponse + 131, // 213: gctrpc.GoCryptoTrader.AddPortfolioAddress:output_type -> gctrpc.GenericResponse + 131, // 214: gctrpc.GoCryptoTrader.RemovePortfolioAddress:output_type -> gctrpc.GenericResponse + 52, // 215: gctrpc.GoCryptoTrader.GetForexProviders:output_type -> gctrpc.GetForexProvidersResponse + 55, // 216: gctrpc.GoCryptoTrader.GetForexRates:output_type -> gctrpc.GetForexRatesResponse + 59, // 217: gctrpc.GoCryptoTrader.GetOrders:output_type -> gctrpc.GetOrdersResponse + 56, // 218: gctrpc.GoCryptoTrader.GetOrder:output_type -> gctrpc.OrderDetails + 63, // 219: gctrpc.GoCryptoTrader.SubmitOrder:output_type -> gctrpc.SubmitOrderResponse + 65, // 220: gctrpc.GoCryptoTrader.SimulateOrder:output_type -> gctrpc.SimulateOrderResponse + 65, // 221: gctrpc.GoCryptoTrader.WhaleBomb:output_type -> gctrpc.SimulateOrderResponse + 131, // 222: gctrpc.GoCryptoTrader.CancelOrder:output_type -> gctrpc.GenericResponse + 69, // 223: gctrpc.GoCryptoTrader.CancelBatchOrders:output_type -> gctrpc.CancelBatchOrdersResponse + 71, // 224: gctrpc.GoCryptoTrader.CancelAllOrders:output_type -> gctrpc.CancelAllOrdersResponse + 74, // 225: gctrpc.GoCryptoTrader.GetEvents:output_type -> gctrpc.GetEventsResponse + 76, // 226: gctrpc.GoCryptoTrader.AddEvent:output_type -> gctrpc.AddEventResponse + 131, // 227: gctrpc.GoCryptoTrader.RemoveEvent:output_type -> gctrpc.GenericResponse + 81, // 228: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddresses:output_type -> gctrpc.GetCryptocurrencyDepositAddressesResponse + 83, // 229: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddress:output_type -> gctrpc.GetCryptocurrencyDepositAddressResponse + 85, // 230: gctrpc.GoCryptoTrader.GetAvailableTransferChains:output_type -> gctrpc.GetAvailableTransferChainsResponse + 88, // 231: gctrpc.GoCryptoTrader.WithdrawFiatFunds:output_type -> gctrpc.WithdrawResponse + 88, // 232: gctrpc.GoCryptoTrader.WithdrawCryptocurrencyFunds:output_type -> gctrpc.WithdrawResponse + 90, // 233: gctrpc.GoCryptoTrader.WithdrawalEventByID:output_type -> gctrpc.WithdrawalEventByIDResponse + 93, // 234: gctrpc.GoCryptoTrader.WithdrawalEventsByExchange:output_type -> gctrpc.WithdrawalEventsByExchangeResponse + 93, // 235: gctrpc.GoCryptoTrader.WithdrawalEventsByDate:output_type -> gctrpc.WithdrawalEventsByExchangeResponse + 100, // 236: gctrpc.GoCryptoTrader.GetLoggerDetails:output_type -> gctrpc.GetLoggerDetailsResponse + 100, // 237: gctrpc.GoCryptoTrader.SetLoggerDetails:output_type -> gctrpc.GetLoggerDetailsResponse + 103, // 238: gctrpc.GoCryptoTrader.GetExchangePairs:output_type -> gctrpc.GetExchangePairsResponse + 131, // 239: gctrpc.GoCryptoTrader.SetExchangePair:output_type -> gctrpc.GenericResponse + 28, // 240: gctrpc.GoCryptoTrader.GetOrderbookStream:output_type -> gctrpc.OrderbookResponse + 28, // 241: gctrpc.GoCryptoTrader.GetExchangeOrderbookStream:output_type -> gctrpc.OrderbookResponse + 22, // 242: gctrpc.GoCryptoTrader.GetTickerStream:output_type -> gctrpc.TickerResponse + 22, // 243: gctrpc.GoCryptoTrader.GetExchangeTickerStream:output_type -> gctrpc.TickerResponse + 110, // 244: gctrpc.GoCryptoTrader.GetAuditEvent:output_type -> gctrpc.GetAuditEventResponse + 131, // 245: gctrpc.GoCryptoTrader.GCTScriptExecute:output_type -> gctrpc.GenericResponse + 131, // 246: gctrpc.GoCryptoTrader.GCTScriptUpload:output_type -> gctrpc.GenericResponse + 130, // 247: gctrpc.GoCryptoTrader.GCTScriptReadScript:output_type -> gctrpc.GCTScriptQueryResponse + 129, // 248: gctrpc.GoCryptoTrader.GCTScriptStatus:output_type -> gctrpc.GCTScriptStatusResponse + 130, // 249: gctrpc.GoCryptoTrader.GCTScriptQuery:output_type -> gctrpc.GCTScriptQueryResponse + 131, // 250: gctrpc.GoCryptoTrader.GCTScriptStop:output_type -> gctrpc.GenericResponse + 131, // 251: gctrpc.GoCryptoTrader.GCTScriptStopAll:output_type -> gctrpc.GenericResponse + 129, // 252: gctrpc.GoCryptoTrader.GCTScriptListAll:output_type -> gctrpc.GCTScriptStatusResponse + 131, // 253: gctrpc.GoCryptoTrader.GCTScriptAutoLoadToggle:output_type -> gctrpc.GenericResponse + 116, // 254: gctrpc.GoCryptoTrader.GetHistoricCandles:output_type -> gctrpc.GetHistoricCandlesResponse + 131, // 255: gctrpc.GoCryptoTrader.SetExchangeAsset:output_type -> gctrpc.GenericResponse + 131, // 256: gctrpc.GoCryptoTrader.SetAllExchangePairs:output_type -> gctrpc.GenericResponse + 131, // 257: gctrpc.GoCryptoTrader.UpdateExchangeSupportedPairs:output_type -> gctrpc.GenericResponse + 136, // 258: gctrpc.GoCryptoTrader.GetExchangeAssets:output_type -> gctrpc.GetExchangeAssetsResponse + 138, // 259: gctrpc.GoCryptoTrader.WebsocketGetInfo:output_type -> gctrpc.WebsocketGetInfoResponse + 131, // 260: gctrpc.GoCryptoTrader.WebsocketSetEnabled:output_type -> gctrpc.GenericResponse + 142, // 261: gctrpc.GoCryptoTrader.WebsocketGetSubscriptions:output_type -> gctrpc.WebsocketGetSubscriptionsResponse + 131, // 262: gctrpc.GoCryptoTrader.WebsocketSetProxy:output_type -> gctrpc.GenericResponse + 131, // 263: gctrpc.GoCryptoTrader.WebsocketSetURL:output_type -> gctrpc.GenericResponse + 113, // 264: gctrpc.GoCryptoTrader.GetRecentTrades:output_type -> gctrpc.SavedTradesResponse + 113, // 265: gctrpc.GoCryptoTrader.GetHistoricTrades:output_type -> gctrpc.SavedTradesResponse + 113, // 266: gctrpc.GoCryptoTrader.GetSavedTrades:output_type -> gctrpc.SavedTradesResponse + 116, // 267: gctrpc.GoCryptoTrader.ConvertTradesToCandles:output_type -> gctrpc.GetHistoricCandlesResponse + 147, // 268: gctrpc.GoCryptoTrader.FindMissingSavedCandleIntervals:output_type -> gctrpc.FindMissingIntervalsResponse + 147, // 269: gctrpc.GoCryptoTrader.FindMissingSavedTradeIntervals:output_type -> gctrpc.FindMissingIntervalsResponse + 131, // 270: gctrpc.GoCryptoTrader.SetExchangeTradeProcessing:output_type -> gctrpc.GenericResponse + 152, // 271: gctrpc.GoCryptoTrader.UpsertDataHistoryJob:output_type -> gctrpc.UpsertDataHistoryJobResponse + 154, // 272: gctrpc.GoCryptoTrader.GetDataHistoryJobDetails:output_type -> gctrpc.DataHistoryJob + 156, // 273: gctrpc.GoCryptoTrader.GetActiveDataHistoryJobs:output_type -> gctrpc.DataHistoryJobs + 156, // 274: gctrpc.GoCryptoTrader.GetDataHistoryJobsBetween:output_type -> gctrpc.DataHistoryJobs + 154, // 275: gctrpc.GoCryptoTrader.GetDataHistoryJobSummary:output_type -> gctrpc.DataHistoryJob + 131, // 276: gctrpc.GoCryptoTrader.SetDataHistoryJobStatus:output_type -> gctrpc.GenericResponse + 131, // 277: gctrpc.GoCryptoTrader.UpdateDataHistoryJobPrerequisite:output_type -> gctrpc.GenericResponse + 59, // 278: gctrpc.GoCryptoTrader.GetManagedOrders:output_type -> gctrpc.GetOrdersResponse + 161, // 279: gctrpc.GoCryptoTrader.ModifyOrder:output_type -> gctrpc.ModifyOrderResponse + 167, // 280: gctrpc.GoCryptoTrader.CurrencyStateGetAll:output_type -> gctrpc.CurrencyStateResponse + 131, // 281: gctrpc.GoCryptoTrader.CurrencyStateTrading:output_type -> gctrpc.GenericResponse + 131, // 282: gctrpc.GoCryptoTrader.CurrencyStateDeposit:output_type -> gctrpc.GenericResponse + 131, // 283: gctrpc.GoCryptoTrader.CurrencyStateWithdraw:output_type -> gctrpc.GenericResponse + 131, // 284: gctrpc.GoCryptoTrader.CurrencyStateTradingPair:output_type -> gctrpc.GenericResponse + 191, // [191:285] is the sub-list for method output_type + 97, // [97:191] is the sub-list for method input_type + 97, // [97:97] is the sub-list for extension type_name + 97, // [97:97] is the sub-list for extension extendee + 0, // [0:97] is the sub-list for field type_name } func init() { file_rpc_proto_init() } @@ -14169,7 +14459,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCryptocurrencyDepositAddressesResponse); i { + switch v := v.(*DepositAddress); i { case 0: return &v.state case 1: @@ -14181,7 +14471,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCryptocurrencyDepositAddressRequest); i { + switch v := v.(*DepositAddresses); i { case 0: return &v.state case 1: @@ -14193,7 +14483,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCryptocurrencyDepositAddressResponse); i { + switch v := v.(*GetCryptocurrencyDepositAddressesResponse); i { case 0: return &v.state case 1: @@ -14205,7 +14495,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawFiatRequest); i { + switch v := v.(*GetCryptocurrencyDepositAddressRequest); i { case 0: return &v.state case 1: @@ -14217,7 +14507,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawCryptoRequest); i { + switch v := v.(*GetCryptocurrencyDepositAddressResponse); i { case 0: return &v.state case 1: @@ -14229,7 +14519,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawResponse); i { + switch v := v.(*GetAvailableTransferChainsRequest); i { case 0: return &v.state case 1: @@ -14241,7 +14531,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalEventByIDRequest); i { + switch v := v.(*GetAvailableTransferChainsResponse); i { case 0: return &v.state case 1: @@ -14253,7 +14543,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalEventByIDResponse); i { + switch v := v.(*WithdrawFiatRequest); i { case 0: return &v.state case 1: @@ -14265,7 +14555,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalEventsByExchangeRequest); i { + switch v := v.(*WithdrawCryptoRequest); i { case 0: return &v.state case 1: @@ -14277,7 +14567,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalEventsByDateRequest); i { + switch v := v.(*WithdrawResponse); i { case 0: return &v.state case 1: @@ -14289,7 +14579,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalEventsByExchangeResponse); i { + switch v := v.(*WithdrawalEventByIDRequest); i { case 0: return &v.state case 1: @@ -14301,7 +14591,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalEventResponse); i { + switch v := v.(*WithdrawalEventByIDResponse); i { case 0: return &v.state case 1: @@ -14313,7 +14603,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawlExchangeEvent); i { + switch v := v.(*WithdrawalEventsByExchangeRequest); i { case 0: return &v.state case 1: @@ -14325,7 +14615,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithdrawalRequestEvent); i { + switch v := v.(*WithdrawalEventsByDateRequest); i { case 0: return &v.state case 1: @@ -14337,7 +14627,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FiatWithdrawalEvent); i { + switch v := v.(*WithdrawalEventsByExchangeResponse); i { case 0: return &v.state case 1: @@ -14349,7 +14639,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CryptoWithdrawalEvent); i { + switch v := v.(*WithdrawalEventResponse); i { case 0: return &v.state case 1: @@ -14361,7 +14651,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLoggerDetailsRequest); i { + switch v := v.(*WithdrawlExchangeEvent); i { case 0: return &v.state case 1: @@ -14373,7 +14663,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetLoggerDetailsResponse); i { + switch v := v.(*WithdrawalRequestEvent); i { case 0: return &v.state case 1: @@ -14385,7 +14675,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetLoggerDetailsRequest); i { + switch v := v.(*FiatWithdrawalEvent); i { case 0: return &v.state case 1: @@ -14397,7 +14687,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExchangePairsRequest); i { + switch v := v.(*CryptoWithdrawalEvent); i { case 0: return &v.state case 1: @@ -14409,7 +14699,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExchangePairsResponse); i { + switch v := v.(*GetLoggerDetailsRequest); i { case 0: return &v.state case 1: @@ -14421,7 +14711,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetExchangePairRequest); i { + switch v := v.(*GetLoggerDetailsResponse); i { case 0: return &v.state case 1: @@ -14433,7 +14723,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrderbookStreamRequest); i { + switch v := v.(*SetLoggerDetailsRequest); i { case 0: return &v.state case 1: @@ -14445,7 +14735,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExchangeOrderbookStreamRequest); i { + switch v := v.(*GetExchangePairsRequest); i { case 0: return &v.state case 1: @@ -14457,7 +14747,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTickerStreamRequest); i { + switch v := v.(*GetExchangePairsResponse); i { case 0: return &v.state case 1: @@ -14469,7 +14759,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExchangeTickerStreamRequest); i { + switch v := v.(*SetExchangePairRequest); i { case 0: return &v.state case 1: @@ -14481,7 +14771,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAuditEventRequest); i { + switch v := v.(*GetOrderbookStreamRequest); i { case 0: return &v.state case 1: @@ -14493,7 +14783,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAuditEventResponse); i { + switch v := v.(*GetExchangeOrderbookStreamRequest); i { case 0: return &v.state case 1: @@ -14505,7 +14795,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSavedTradesRequest); i { + switch v := v.(*GetTickerStreamRequest); i { case 0: return &v.state case 1: @@ -14517,7 +14807,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SavedTrades); i { + switch v := v.(*GetExchangeTickerStreamRequest); i { case 0: return &v.state case 1: @@ -14529,7 +14819,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SavedTradesResponse); i { + switch v := v.(*GetAuditEventRequest); i { case 0: return &v.state case 1: @@ -14541,7 +14831,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConvertTradesToCandlesRequest); i { + switch v := v.(*GetAuditEventResponse); i { case 0: return &v.state case 1: @@ -14553,7 +14843,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetHistoricCandlesRequest); i { + switch v := v.(*GetSavedTradesRequest); i { case 0: return &v.state case 1: @@ -14565,7 +14855,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetHistoricCandlesResponse); i { + switch v := v.(*SavedTrades); i { case 0: return &v.state case 1: @@ -14577,7 +14867,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Candle); i { + switch v := v.(*SavedTradesResponse); i { case 0: return &v.state case 1: @@ -14589,7 +14879,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AuditEvent); i { + switch v := v.(*ConvertTradesToCandlesRequest); i { case 0: return &v.state case 1: @@ -14601,7 +14891,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScript); i { + switch v := v.(*GetHistoricCandlesRequest); i { case 0: return &v.state case 1: @@ -14613,7 +14903,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptExecuteRequest); i { + switch v := v.(*GetHistoricCandlesResponse); i { case 0: return &v.state case 1: @@ -14625,7 +14915,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptStopRequest); i { + switch v := v.(*Candle); i { case 0: return &v.state case 1: @@ -14637,7 +14927,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptStopAllRequest); i { + switch v := v.(*AuditEvent); i { case 0: return &v.state case 1: @@ -14649,7 +14939,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptStatusRequest); i { + switch v := v.(*GCTScript); i { case 0: return &v.state case 1: @@ -14661,7 +14951,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptListAllRequest); i { + switch v := v.(*GCTScriptExecuteRequest); i { case 0: return &v.state case 1: @@ -14673,7 +14963,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptUploadRequest); i { + switch v := v.(*GCTScriptStopRequest); i { case 0: return &v.state case 1: @@ -14685,7 +14975,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptReadScriptRequest); i { + switch v := v.(*GCTScriptStopAllRequest); i { case 0: return &v.state case 1: @@ -14697,7 +14987,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptQueryRequest); i { + switch v := v.(*GCTScriptStatusRequest); i { case 0: return &v.state case 1: @@ -14709,7 +14999,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptAutoLoadRequest); i { + switch v := v.(*GCTScriptListAllRequest); i { case 0: return &v.state case 1: @@ -14721,7 +15011,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptStatusResponse); i { + switch v := v.(*GCTScriptUploadRequest); i { case 0: return &v.state case 1: @@ -14733,7 +15023,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GCTScriptQueryResponse); i { + switch v := v.(*GCTScriptReadScriptRequest); i { case 0: return &v.state case 1: @@ -14745,7 +15035,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenericResponse); i { + switch v := v.(*GCTScriptQueryRequest); i { case 0: return &v.state case 1: @@ -14757,7 +15047,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetExchangeAssetRequest); i { + switch v := v.(*GCTScriptAutoLoadRequest); i { case 0: return &v.state case 1: @@ -14769,7 +15059,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetExchangeAllPairsRequest); i { + switch v := v.(*GCTScriptStatusResponse); i { case 0: return &v.state case 1: @@ -14781,7 +15071,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateExchangeSupportedPairsRequest); i { + switch v := v.(*GCTScriptQueryResponse); i { case 0: return &v.state case 1: @@ -14793,7 +15083,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExchangeAssetsRequest); i { + switch v := v.(*GenericResponse); i { case 0: return &v.state case 1: @@ -14805,7 +15095,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExchangeAssetsResponse); i { + switch v := v.(*SetExchangeAssetRequest); i { case 0: return &v.state case 1: @@ -14817,7 +15107,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketGetInfoRequest); i { + switch v := v.(*SetExchangeAllPairsRequest); i { case 0: return &v.state case 1: @@ -14829,7 +15119,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketGetInfoResponse); i { + switch v := v.(*UpdateExchangeSupportedPairsRequest); i { case 0: return &v.state case 1: @@ -14841,7 +15131,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketSetEnabledRequest); i { + switch v := v.(*GetExchangeAssetsRequest); i { case 0: return &v.state case 1: @@ -14853,7 +15143,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketGetSubscriptionsRequest); i { + switch v := v.(*GetExchangeAssetsResponse); i { case 0: return &v.state case 1: @@ -14865,7 +15155,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketSubscription); i { + switch v := v.(*WebsocketGetInfoRequest); i { case 0: return &v.state case 1: @@ -14877,7 +15167,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketGetSubscriptionsResponse); i { + switch v := v.(*WebsocketGetInfoResponse); i { case 0: return &v.state case 1: @@ -14889,7 +15179,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketSetProxyRequest); i { + switch v := v.(*WebsocketSetEnabledRequest); i { case 0: return &v.state case 1: @@ -14901,7 +15191,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WebsocketSetURLRequest); i { + switch v := v.(*WebsocketGetSubscriptionsRequest); i { case 0: return &v.state case 1: @@ -14913,7 +15203,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindMissingCandlePeriodsRequest); i { + switch v := v.(*WebsocketSubscription); i { case 0: return &v.state case 1: @@ -14925,7 +15215,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindMissingTradePeriodsRequest); i { + switch v := v.(*WebsocketGetSubscriptionsResponse); i { case 0: return &v.state case 1: @@ -14937,7 +15227,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FindMissingIntervalsResponse); i { + switch v := v.(*WebsocketSetProxyRequest); i { case 0: return &v.state case 1: @@ -14949,7 +15239,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetExchangeTradeProcessingRequest); i { + switch v := v.(*WebsocketSetURLRequest); i { case 0: return &v.state case 1: @@ -14961,7 +15251,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertDataHistoryJobRequest); i { + switch v := v.(*FindMissingCandlePeriodsRequest); i { case 0: return &v.state case 1: @@ -14973,7 +15263,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InsertSequentialJobsRequest); i { + switch v := v.(*FindMissingTradePeriodsRequest); i { case 0: return &v.state case 1: @@ -14985,7 +15275,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InsertSequentialJobsResponse); i { + switch v := v.(*FindMissingIntervalsResponse); i { case 0: return &v.state case 1: @@ -14997,7 +15287,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpsertDataHistoryJobResponse); i { + switch v := v.(*SetExchangeTradeProcessingRequest); i { case 0: return &v.state case 1: @@ -15009,7 +15299,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDataHistoryJobDetailsRequest); i { + switch v := v.(*UpsertDataHistoryJobRequest); i { case 0: return &v.state case 1: @@ -15021,7 +15311,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataHistoryJob); i { + switch v := v.(*InsertSequentialJobsRequest); i { case 0: return &v.state case 1: @@ -15033,7 +15323,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataHistoryJobResult); i { + switch v := v.(*InsertSequentialJobsResponse); i { case 0: return &v.state case 1: @@ -15045,7 +15335,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataHistoryJobs); i { + switch v := v.(*UpsertDataHistoryJobResponse); i { case 0: return &v.state case 1: @@ -15057,7 +15347,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDataHistoryJobsBetweenRequest); i { + switch v := v.(*GetDataHistoryJobDetailsRequest); i { case 0: return &v.state case 1: @@ -15069,7 +15359,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetDataHistoryJobStatusRequest); i { + switch v := v.(*DataHistoryJob); i { case 0: return &v.state case 1: @@ -15081,7 +15371,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateDataHistoryJobPrerequisiteRequest); i { + switch v := v.(*DataHistoryJobResult); i { case 0: return &v.state case 1: @@ -15093,7 +15383,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModifyOrderRequest); i { + switch v := v.(*DataHistoryJobs); i { case 0: return &v.state case 1: @@ -15105,7 +15395,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ModifyOrderResponse); i { + switch v := v.(*GetDataHistoryJobsBetweenRequest); i { case 0: return &v.state case 1: @@ -15117,7 +15407,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CurrencyStateGetAllRequest); i { + switch v := v.(*SetDataHistoryJobStatusRequest); i { case 0: return &v.state case 1: @@ -15129,7 +15419,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CurrencyStateTradingRequest); i { + switch v := v.(*UpdateDataHistoryJobPrerequisiteRequest); i { case 0: return &v.state case 1: @@ -15141,7 +15431,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CurrencyStateTradingPairRequest); i { + switch v := v.(*ModifyOrderRequest); i { case 0: return &v.state case 1: @@ -15153,7 +15443,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CurrencyStateWithdrawRequest); i { + switch v := v.(*ModifyOrderResponse); i { case 0: return &v.state case 1: @@ -15165,7 +15455,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CurrencyStateDepositRequest); i { + switch v := v.(*CurrencyStateGetAllRequest); i { case 0: return &v.state case 1: @@ -15177,7 +15467,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CurrencyStateResponse); i { + switch v := v.(*CurrencyStateTradingRequest); i { case 0: return &v.state case 1: @@ -15189,6 +15479,54 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrencyStateTradingPairRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrencyStateWithdrawRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrencyStateDepositRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrencyStateResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CurrencyState); i { case 0: return &v.state @@ -15200,7 +15538,7 @@ func file_rpc_proto_init() { return nil } } - file_rpc_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_rpc_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancelBatchOrdersResponse_Orders); i { case 0: return &v.state @@ -15212,7 +15550,7 @@ func file_rpc_proto_init() { return nil } } - file_rpc_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_rpc_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancelAllOrdersResponse_Orders); i { case 0: return &v.state @@ -15231,7 +15569,7 @@ func file_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rpc_proto_rawDesc, NumEnums: 0, - NumMessages: 181, + NumMessages: 185, NumExtensions: 0, NumServices: 1, }, diff --git a/gctrpc/rpc.pb.gw.go b/gctrpc/rpc.pb.gw.go index 0142a5bb..8a046caa 100644 --- a/gctrpc/rpc.pb.gw.go +++ b/gctrpc/rpc.pb.gw.go @@ -1157,6 +1157,40 @@ func local_request_GoCryptoTrader_GetCryptocurrencyDepositAddress_0(ctx context. } +func request_GoCryptoTrader_GetAvailableTransferChains_0(ctx context.Context, marshaler runtime.Marshaler, client GoCryptoTraderClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetAvailableTransferChainsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GetAvailableTransferChains(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_GoCryptoTrader_GetAvailableTransferChains_0(ctx context.Context, marshaler runtime.Marshaler, server GoCryptoTraderServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetAvailableTransferChainsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GetAvailableTransferChains(ctx, &protoReq) + return msg, metadata, err + +} + func request_GoCryptoTrader_WithdrawFiatFunds_0(ctx context.Context, marshaler runtime.Marshaler, client GoCryptoTraderClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq WithdrawFiatRequest var metadata runtime.ServerMetadata @@ -3876,6 +3910,29 @@ func RegisterGoCryptoTraderHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("POST", pattern_GoCryptoTrader_GetAvailableTransferChains_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/gctrpc.GoCryptoTrader/GetAvailableTransferChains", runtime.WithHTTPPathPattern("/v1/getavailabletransferchains")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_GoCryptoTrader_GetAvailableTransferChains_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_GoCryptoTrader_GetAvailableTransferChains_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_GoCryptoTrader_WithdrawFiatFunds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -5859,6 +5916,26 @@ func RegisterGoCryptoTraderHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("POST", pattern_GoCryptoTrader_GetAvailableTransferChains_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req, "/gctrpc.GoCryptoTrader/GetAvailableTransferChains", runtime.WithHTTPPathPattern("/v1/getavailabletransferchains")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_GoCryptoTrader_GetAvailableTransferChains_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_GoCryptoTrader_GetAvailableTransferChains_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_GoCryptoTrader_WithdrawFiatFunds_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -7021,6 +7098,8 @@ var ( pattern_GoCryptoTrader_GetCryptocurrencyDepositAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "getcryptodepositaddress"}, "")) + pattern_GoCryptoTrader_GetAvailableTransferChains_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "getavailabletransferchains"}, "")) + pattern_GoCryptoTrader_WithdrawFiatFunds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "withdrawfiatfunds"}, "")) pattern_GoCryptoTrader_WithdrawCryptocurrencyFunds_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "withdrawithdrawcryptofundswfiatfunds"}, "")) @@ -7209,6 +7288,8 @@ var ( forward_GoCryptoTrader_GetCryptocurrencyDepositAddress_0 = runtime.ForwardResponseMessage + forward_GoCryptoTrader_GetAvailableTransferChains_0 = runtime.ForwardResponseMessage + forward_GoCryptoTrader_WithdrawFiatFunds_0 = runtime.ForwardResponseMessage forward_GoCryptoTrader_WithdrawCryptocurrencyFunds_0 = runtime.ForwardResponseMessage diff --git a/gctrpc/rpc.proto b/gctrpc/rpc.proto index 235c6364..950b34ba 100644 --- a/gctrpc/rpc.proto +++ b/gctrpc/rpc.proto @@ -461,17 +461,39 @@ message GetCryptocurrencyDepositAddressesRequest { string exchange = 1; } +message DepositAddress { + string address = 1; + string tag = 2; + string chain = 3; +} + +message DepositAddresses { + repeated DepositAddress addresses = 1; +} + message GetCryptocurrencyDepositAddressesResponse { - map addresses = 1; + map addresses = 1; } message GetCryptocurrencyDepositAddressRequest { string exchange = 1; string cryptocurrency = 2; + string chain = 3; + bool bypass = 4; } message GetCryptocurrencyDepositAddressResponse { string address = 1; + string tag = 2; +} + +message GetAvailableTransferChainsRequest { + string exchange = 1; + string cryptocurrency = 2; +} + +message GetAvailableTransferChainsResponse { + repeated string chains = 1; } message WithdrawFiatRequest { @@ -490,6 +512,7 @@ message WithdrawCryptoRequest { double amount = 5; double fee = 6; string description = 7; + string chain = 8; } message WithdrawResponse { @@ -1254,6 +1277,12 @@ service GoCryptoTrader { }; } + rpc GetAvailableTransferChains(GetAvailableTransferChainsRequest) returns (GetAvailableTransferChainsResponse) { + option (google.api.http) = { + post: "/v1/getavailabletransferchains" + body: "*" + }; + } rpc WithdrawFiatFunds(WithdrawFiatRequest) returns (WithdrawResponse) { option (google.api.http) = { diff --git a/gctrpc/rpc.swagger.json b/gctrpc/rpc.swagger.json index c2ce6277..e35e6a77 100644 --- a/gctrpc/rpc.swagger.json +++ b/gctrpc/rpc.swagger.json @@ -1127,6 +1127,38 @@ ] } }, + "/v1/getavailabletransferchains": { + "post": { + "operationId": "GoCryptoTrader_GetAvailableTransferChains", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/gctrpcGetAvailableTransferChainsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/gctrpcGetAvailableTransferChainsRequest" + } + } + ], + "tags": [ + "GoCryptoTrader" + ] + } + }, "/v1/getcommunicationrelayers": { "get": { "operationId": "GoCryptoTrader_GetCommunicationRelayers", @@ -3656,6 +3688,31 @@ } } }, + "gctrpcDepositAddress": { + "type": "object", + "properties": { + "address": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "chain": { + "type": "string" + } + } + }, + "gctrpcDepositAddresses": { + "type": "object", + "properties": { + "addresses": { + "type": "array", + "items": { + "$ref": "#/definitions/gctrpcDepositAddress" + } + } + } + }, "gctrpcFiatWithdrawalEvent": { "type": "object", "properties": { @@ -3891,6 +3948,28 @@ } } }, + "gctrpcGetAvailableTransferChainsRequest": { + "type": "object", + "properties": { + "exchange": { + "type": "string" + }, + "cryptocurrency": { + "type": "string" + } + } + }, + "gctrpcGetAvailableTransferChainsResponse": { + "type": "object", + "properties": { + "chains": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, "gctrpcGetCommunicationRelayersResponse": { "type": "object", "properties": { @@ -3919,6 +3998,12 @@ }, "cryptocurrency": { "type": "string" + }, + "chain": { + "type": "string" + }, + "bypass": { + "type": "boolean" } } }, @@ -3927,6 +4012,9 @@ "properties": { "address": { "type": "string" + }, + "tag": { + "type": "string" } } }, @@ -3944,7 +4032,7 @@ "addresses": { "type": "object", "additionalProperties": { - "type": "string" + "$ref": "#/definitions/gctrpcDepositAddresses" } } } @@ -5075,6 +5163,9 @@ }, "description": { "type": "string" + }, + "chain": { + "type": "string" } } }, diff --git a/gctrpc/rpc_grpc.pb.go b/gctrpc/rpc_grpc.pb.go index d9e20b1f..3f0e90f3 100644 --- a/gctrpc/rpc_grpc.pb.go +++ b/gctrpc/rpc_grpc.pb.go @@ -57,6 +57,7 @@ type GoCryptoTraderClient interface { RemoveEvent(ctx context.Context, in *RemoveEventRequest, opts ...grpc.CallOption) (*GenericResponse, error) GetCryptocurrencyDepositAddresses(ctx context.Context, in *GetCryptocurrencyDepositAddressesRequest, opts ...grpc.CallOption) (*GetCryptocurrencyDepositAddressesResponse, error) GetCryptocurrencyDepositAddress(ctx context.Context, in *GetCryptocurrencyDepositAddressRequest, opts ...grpc.CallOption) (*GetCryptocurrencyDepositAddressResponse, error) + GetAvailableTransferChains(ctx context.Context, in *GetAvailableTransferChainsRequest, opts ...grpc.CallOption) (*GetAvailableTransferChainsResponse, error) WithdrawFiatFunds(ctx context.Context, in *WithdrawFiatRequest, opts ...grpc.CallOption) (*WithdrawResponse, error) WithdrawCryptocurrencyFunds(ctx context.Context, in *WithdrawCryptoRequest, opts ...grpc.CallOption) (*WithdrawResponse, error) WithdrawalEventByID(ctx context.Context, in *WithdrawalEventByIDRequest, opts ...grpc.CallOption) (*WithdrawalEventByIDResponse, error) @@ -495,6 +496,15 @@ func (c *goCryptoTraderClient) GetCryptocurrencyDepositAddress(ctx context.Conte return out, nil } +func (c *goCryptoTraderClient) GetAvailableTransferChains(ctx context.Context, in *GetAvailableTransferChainsRequest, opts ...grpc.CallOption) (*GetAvailableTransferChainsResponse, error) { + out := new(GetAvailableTransferChainsResponse) + err := c.cc.Invoke(ctx, "/gctrpc.GoCryptoTrader/GetAvailableTransferChains", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *goCryptoTraderClient) WithdrawFiatFunds(ctx context.Context, in *WithdrawFiatRequest, opts ...grpc.CallOption) (*WithdrawResponse, error) { out := new(WithdrawResponse) err := c.cc.Invoke(ctx, "/gctrpc.GoCryptoTrader/WithdrawFiatFunds", in, out, opts...) @@ -1139,6 +1149,7 @@ type GoCryptoTraderServer interface { RemoveEvent(context.Context, *RemoveEventRequest) (*GenericResponse, error) GetCryptocurrencyDepositAddresses(context.Context, *GetCryptocurrencyDepositAddressesRequest) (*GetCryptocurrencyDepositAddressesResponse, error) GetCryptocurrencyDepositAddress(context.Context, *GetCryptocurrencyDepositAddressRequest) (*GetCryptocurrencyDepositAddressResponse, error) + GetAvailableTransferChains(context.Context, *GetAvailableTransferChainsRequest) (*GetAvailableTransferChainsResponse, error) WithdrawFiatFunds(context.Context, *WithdrawFiatRequest) (*WithdrawResponse, error) WithdrawCryptocurrencyFunds(context.Context, *WithdrawCryptoRequest) (*WithdrawResponse, error) WithdrawalEventByID(context.Context, *WithdrawalEventByIDRequest) (*WithdrawalEventByIDResponse, error) @@ -1317,6 +1328,9 @@ func (UnimplementedGoCryptoTraderServer) GetCryptocurrencyDepositAddresses(conte func (UnimplementedGoCryptoTraderServer) GetCryptocurrencyDepositAddress(context.Context, *GetCryptocurrencyDepositAddressRequest) (*GetCryptocurrencyDepositAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCryptocurrencyDepositAddress not implemented") } +func (UnimplementedGoCryptoTraderServer) GetAvailableTransferChains(context.Context, *GetAvailableTransferChainsRequest) (*GetAvailableTransferChainsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAvailableTransferChains not implemented") +} func (UnimplementedGoCryptoTraderServer) WithdrawFiatFunds(context.Context, *WithdrawFiatRequest) (*WithdrawResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WithdrawFiatFunds not implemented") } @@ -2197,6 +2211,24 @@ func _GoCryptoTrader_GetCryptocurrencyDepositAddress_Handler(srv interface{}, ct return interceptor(ctx, in, info, handler) } +func _GoCryptoTrader_GetAvailableTransferChains_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAvailableTransferChainsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GoCryptoTraderServer).GetAvailableTransferChains(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gctrpc.GoCryptoTrader/GetAvailableTransferChains", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GoCryptoTraderServer).GetAvailableTransferChains(ctx, req.(*GetAvailableTransferChainsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _GoCryptoTrader_WithdrawFiatFunds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(WithdrawFiatRequest) if err := dec(in); err != nil { @@ -3343,6 +3375,10 @@ var GoCryptoTrader_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetCryptocurrencyDepositAddress", Handler: _GoCryptoTrader_GetCryptocurrencyDepositAddress_Handler, }, + { + MethodName: "GetAvailableTransferChains", + Handler: _GoCryptoTrader_GetAvailableTransferChains_Handler, + }, { MethodName: "WithdrawFiatFunds", Handler: _GoCryptoTrader_WithdrawFiatFunds_Handler, diff --git a/gctscript/modules/gct/exchange.go b/gctscript/modules/gct/exchange.go index 8b5ec7b3..b8845e44 100644 --- a/gctscript/modules/gct/exchange.go +++ b/gctscript/modules/gct/exchange.go @@ -483,7 +483,7 @@ func ExchangeOrderSubmit(args ...objects.Object) (objects.Object, error) { // ExchangeDepositAddress returns deposit address (if supported by exchange) func ExchangeDepositAddress(args ...objects.Object) (objects.Object, error) { - if len(args) != 2 { + if len(args) != 3 { return nil, objects.ErrWrongNumArguments } @@ -495,15 +495,24 @@ func ExchangeDepositAddress(args ...objects.Object) (objects.Object, error) { if !ok { return nil, fmt.Errorf(ErrParameterConvertFailed, currencyCode) } + chain, ok := objects.ToString(args[2]) + if !ok { + return nil, fmt.Errorf(ErrParameterConvertFailed, chain) + } currCode := currency.NewCode(currencyCode) - rtn, err := wrappers.GetWrapper().DepositAddress(exchangeName, currCode) + rtn, err := wrappers.GetWrapper().DepositAddress(exchangeName, chain, currCode) if err != nil { return nil, err } - return &objects.String{Value: rtn}, nil + data := make(map[string]objects.Object, 2) + data["address"] = &objects.String{Value: rtn.Address} + data["tag"] = &objects.String{Value: rtn.Tag} + return &objects.Map{ + Value: data, + }, nil } // ExchangeWithdrawCrypto submit request to withdraw crypto assets diff --git a/gctscript/modules/gct/gct_test.go b/gctscript/modules/gct/gct_test.go index 46576413..b8aa03cd 100644 --- a/gctscript/modules/gct/gct_test.go +++ b/gctscript/modules/gct/gct_test.go @@ -245,12 +245,13 @@ func TestExchangeDepositAddress(t *testing.T) { } currCode := &objects.String{Value: "BTC"} - _, err = ExchangeDepositAddress(exch, currCode) + chain := &objects.String{Value: ""} + _, err = ExchangeDepositAddress(exch, currCode, chain) if err != nil { t.Error(err) } - _, err = ExchangeDepositAddress(exchError, currCode) + _, err = ExchangeDepositAddress(exchError, currCode, chain) if err != nil && !errors.Is(err, errTestFailed) { t.Error(err) } diff --git a/gctscript/modules/wrapper_types.go b/gctscript/modules/wrapper_types.go index 8deb7b53..77eecfe3 100644 --- a/gctscript/modules/wrapper_types.go +++ b/gctscript/modules/wrapper_types.go @@ -7,6 +7,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -40,7 +41,7 @@ type Exchange interface { SubmitOrder(ctx context.Context, submit *order.Submit) (*order.SubmitResponse, error) CancelOrder(ctx context.Context, exch, orderid string, pair currency.Pair, item asset.Item) (bool, error) AccountInformation(ctx context.Context, exch string, assetType asset.Item) (account.Holdings, error) - DepositAddress(exch string, currencyCode currency.Code) (string, error) + DepositAddress(exch, chain string, currencyCode currency.Code) (*deposit.Address, error) WithdrawalFiatFunds(ctx context.Context, bankAccountID string, request *withdraw.Request) (out string, err error) WithdrawalCryptoFunds(ctx context.Context, request *withdraw.Request) (out string, err error) OHLCV(ctx context.Context, exch string, pair currency.Pair, item asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) diff --git a/gctscript/wrappers/gct/exchange/exchange.go b/gctscript/wrappers/gct/exchange/exchange.go index 24619366..d3c1f7af 100644 --- a/gctscript/wrappers/gct/exchange/exchange.go +++ b/gctscript/wrappers/gct/exchange/exchange.go @@ -12,6 +12,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -135,11 +136,12 @@ func (e Exchange) AccountInformation(ctx context.Context, exch string, assetType } // DepositAddress gets the address required to deposit funds for currency type -func (e Exchange) DepositAddress(exch string, currencyCode currency.Code) (out string, err error) { +func (e Exchange) DepositAddress(exch, chain string, currencyCode currency.Code) (depositAddr *deposit.Address, err error) { if currencyCode.IsEmpty() { - return "", errors.New("currency code is empty") + return nil, errors.New("currency code is empty") } - return engine.Bot.DepositAddressManager.GetDepositAddressByExchangeAndCurrency(exch, currencyCode) + resp, err := engine.Bot.DepositAddressManager.GetDepositAddressByExchangeAndCurrency(exch, chain, currencyCode) + return &deposit.Address{Address: resp.Address, Tag: resp.Tag}, err } // WithdrawalFiatFunds withdraw funds from exchange to requested fiat source diff --git a/gctscript/wrappers/gct/gctwrapper_test.go b/gctscript/wrappers/gct/gctwrapper_test.go index db8004fa..52f318f6 100644 --- a/gctscript/wrappers/gct/gctwrapper_test.go +++ b/gctscript/wrappers/gct/gctwrapper_test.go @@ -54,7 +54,7 @@ func TestMain(m *testing.M) { } engine.Bot.DepositAddressManager = engine.SetupDepositAddressManager() - err = engine.Bot.DepositAddressManager.Sync(engine.Bot.GetExchangeCryptocurrencyDepositAddresses()) + err = engine.Bot.DepositAddressManager.Sync(engine.Bot.GetAllExchangeCryptocurrencyDepositAddresses()) if err != nil { log.Print(err) os.Exit(1) @@ -261,7 +261,8 @@ func TestExchangeDepositAddress(t *testing.T) { } currCode := &objects.String{Value: "BTC"} - _, err = gct.ExchangeDepositAddress(exch, currCode) + chain := &objects.String{Value: ""} + _, err = gct.ExchangeDepositAddress(exch, currCode, chain) if err != nil && err.Error() != "deposit address store is nil" { t.Error(err) } diff --git a/gctscript/wrappers/validator/validator.go b/gctscript/wrappers/validator/validator.go index 53443678..9d2e5b0c 100644 --- a/gctscript/wrappers/validator/validator.go +++ b/gctscript/wrappers/validator/validator.go @@ -5,9 +5,11 @@ import ( "math/rand" "time" + "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/deposit" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" @@ -216,12 +218,12 @@ func (w Wrapper) AccountInformation(ctx context.Context, exch string, assetType } // DepositAddress validator for test execution/scripts -func (w Wrapper) DepositAddress(exch string, _ currency.Code) (string, error) { +func (w Wrapper) DepositAddress(exch, chain string, _ currency.Code) (*deposit.Address, error) { if exch == exchError.String() { - return exch, errTestFailed + return nil, errTestFailed } - return exch, nil + return &deposit.Address{Address: core.BitcoinDonationAddress}, nil } // WithdrawalCryptoFunds validator for test execution/scripts diff --git a/gctscript/wrappers/validator/validator_test.go b/gctscript/wrappers/validator/validator_test.go index 1c9d22f8..d198d142 100644 --- a/gctscript/wrappers/validator/validator_test.go +++ b/gctscript/wrappers/validator/validator_test.go @@ -112,12 +112,12 @@ func TestWrapper_CancelOrder(t *testing.T) { } func TestWrapper_DepositAddress(t *testing.T) { - _, err := testWrapper.DepositAddress(exchError.String(), currency.NewCode("BTC")) + _, err := testWrapper.DepositAddress(exchError.String(), "", currency.NewCode("BTC")) if err == nil { t.Fatal("expected DepositAddress to return error on invalid name") } - _, err = testWrapper.DepositAddress(exchName, currency.NewCode("BTC")) + _, err = testWrapper.DepositAddress(exchName, "", currency.NewCode("BTC")) if err != nil { t.Fatal(err) } diff --git a/portfolio/portfolio_types.go b/portfolio/portfolio_types.go index 1694252d..15c5d382 100644 --- a/portfolio/portfolio_types.go +++ b/portfolio/portfolio_types.go @@ -15,6 +15,7 @@ type Base struct { // Address sub type holding address information for portfolio type Address struct { Address string + AddressTag string CoinType currency.Code Balance float64 Description string diff --git a/portfolio/withdraw/withdraw_types.go b/portfolio/withdraw/withdraw_types.go index 295bf381..72e84af2 100644 --- a/portfolio/withdraw/withdraw_types.go +++ b/portfolio/withdraw/withdraw_types.go @@ -60,6 +60,7 @@ var ( type CryptoRequest struct { Address string AddressTag string + Chain string FeeAmount float64 } diff --git a/testdata/configtest.json b/testdata/configtest.json index 5096e20f..44383090 100644 --- a/testdata/configtest.json +++ b/testdata/configtest.json @@ -262,7 +262,7 @@ ], "pairs": { "spot": { - "enabled": "BTC-USDT", + "enabled": "BTC-USDT,DOGE-USDT", "available": "ETH-BTC,LTC-BTC,BNB-BTC,NEO-BTC,QTUM-ETH,EOS-ETH,SNT-ETH,BNT-ETH,GAS-BTC,BNB-ETH,BTC-USDT,ETH-USDT,OAX-ETH,DNT-ETH,MCO-ETH,MCO-BTC,WTC-BTC,WTC-ETH,LRC-BTC,LRC-ETH,QTUM-BTC,YOYO-BTC,OMG-BTC,OMG-ETH,ZRX-BTC,ZRX-ETH,STRAT-BTC,STRAT-ETH,SNGLS-BTC,BQX-BTC,BQX-ETH,KNC-BTC,KNC-ETH,FUN-BTC,FUN-ETH,SNM-BTC,SNM-ETH,NEO-ETH,IOTA-BTC,IOTA-ETH,LINK-BTC,LINK-ETH,XVG-BTC,XVG-ETH,MDA-BTC,MDA-ETH,MTL-BTC,MTL-ETH,EOS-BTC,SNT-BTC,ETC-ETH,ETC-BTC,MTH-BTC,MTH-ETH,ENG-BTC,ENG-ETH,DNT-BTC,ZEC-BTC,ZEC-ETH,BNT-BTC,AST-BTC,AST-ETH,DASH-BTC,DASH-ETH,OAX-BTC,BTG-BTC,BTG-ETH,EVX-BTC,EVX-ETH,REQ-BTC,REQ-ETH,VIB-BTC,VIB-ETH,TRX-BTC,TRX-ETH,POWR-BTC,POWR-ETH,ARK-BTC,ARK-ETH,YOYO-ETH,XRP-BTC,XRP-ETH,ENJ-BTC,ENJ-ETH,STORJ-BTC,STORJ-ETH,BNB-USDT,YOYO-BNB,POWR-BNB,KMD-BTC,KMD-ETH,NULS-BNB,RCN-BTC,RCN-ETH,RCN-BNB,NULS-BTC,NULS-ETH,RDN-BTC,RDN-ETH,RDN-BNB,XMR-BTC,XMR-ETH,DLT-BNB,WTC-BNB,DLT-BTC,DLT-ETH,AMB-BTC,AMB-ETH,AMB-BNB,BAT-BTC,BAT-ETH,BAT-BNB,BCPT-BTC,BCPT-ETH,BCPT-BNB,ARN-BTC,ARN-ETH,GVT-BTC,GVT-ETH,CDT-BTC,CDT-ETH,GXS-BTC,GXS-ETH,NEO-USDT,NEO-BNB,POE-BTC,POE-ETH,QSP-BTC,QSP-ETH,QSP-BNB,BTS-BTC,BTS-ETH,XZC-BTC,XZC-ETH,XZC-BNB,LSK-BTC,LSK-ETH,LSK-BNB,TNT-BTC,TNT-ETH,FUEL-BTC,MANA-BTC,MANA-ETH,BCD-BTC,BCD-ETH,DGD-BTC,DGD-ETH,IOTA-BNB,ADX-BTC,ADX-ETH,ADA-BTC,ADA-ETH,PPT-BTC,PPT-ETH,CMT-BTC,CMT-ETH,CMT-BNB,XLM-BTC,XLM-ETH,XLM-BNB,CND-BTC,CND-ETH,CND-BNB,LEND-BTC,LEND-ETH,WABI-BTC,WABI-ETH,WABI-BNB,LTC-ETH,LTC-USDT,LTC-BNB,TNB-BTC,TNB-ETH,WAVES-BTC,WAVES-ETH,WAVES-BNB,GTO-BTC,GTO-ETH,GTO-BNB,ICX-BTC,ICX-ETH,ICX-BNB,OST-BTC,OST-ETH,OST-BNB,ELF-BTC,ELF-ETH,AION-BTC,AION-ETH,AION-BNB,NEBL-BTC,NEBL-ETH,NEBL-BNB,BRD-BTC,BRD-ETH,BRD-BNB,MCO-BNB,EDO-BTC,EDO-ETH,NAV-BTC,LUN-BTC,APPC-BTC,APPC-ETH,APPC-BNB,VIBE-BTC,VIBE-ETH,RLC-BTC,RLC-ETH,RLC-BNB,INS-BTC,INS-ETH,PIVX-BTC,PIVX-ETH,PIVX-BNB,IOST-BTC,IOST-ETH,STEEM-BTC,STEEM-ETH,STEEM-BNB,NANO-BTC,NANO-ETH,NANO-BNB,VIA-BTC,VIA-ETH,VIA-BNB,BLZ-BTC,BLZ-ETH,BLZ-BNB,AE-BTC,AE-ETH,AE-BNB,NCASH-BTC,NCASH-ETH,POA-BTC,POA-ETH,ZIL-BTC,ZIL-ETH,ZIL-BNB,ONT-BTC,ONT-ETH,ONT-BNB,STORM-BTC,STORM-ETH,STORM-BNB,QTUM-BNB,QTUM-USDT,XEM-BTC,XEM-ETH,XEM-BNB,WAN-BTC,WAN-ETH,WAN-BNB,WPR-BTC,WPR-ETH,QLC-BTC,QLC-ETH,SYS-BTC,SYS-ETH,SYS-BNB,QLC-BNB,GRS-BTC,GRS-ETH,ADA-USDT,ADA-BNB,GNT-BTC,GNT-ETH,LOOM-BTC,LOOM-ETH,LOOM-BNB,XRP-USDT,REP-BTC,REP-ETH,BTC-TUSD,ETH-TUSD,ZEN-BTC,ZEN-ETH,ZEN-BNB,SKY-BTC,SKY-ETH,SKY-BNB,EOS-USDT,EOS-BNB,CVC-BTC,CVC-ETH,THETA-BTC,THETA-ETH,THETA-BNB,XRP-BNB,TUSD-USDT,IOTA-USDT,XLM-USDT,IOTX-BTC,IOTX-ETH,QKC-BTC,QKC-ETH,AGI-BTC,AGI-ETH,AGI-BNB,NXS-BTC,NXS-ETH,NXS-BNB,ENJ-BNB,DATA-BTC,DATA-ETH,ONT-USDT,TRX-BNB,TRX-USDT,ETC-USDT,ETC-BNB,ICX-USDT,SC-BTC,SC-ETH,SC-BNB,NPXS-ETH,KEY-BTC,KEY-ETH,NAS-BTC,NAS-ETH,NAS-BNB,MFT-BTC,MFT-ETH,MFT-BNB,DENT-ETH,ARDR-BTC,ARDR-ETH,NULS-USDT,HOT-BTC,HOT-ETH,VET-BTC,VET-ETH,VET-USDT,VET-BNB,DOCK-BTC,DOCK-ETH,POLY-BTC,POLY-BNB,HC-BTC,HC-ETH,GO-BTC,GO-BNB,PAX-USDT,RVN-BTC,RVN-BNB,DCR-BTC,DCR-BNB,MITH-BTC,MITH-BNB,BNB-PAX,BTC-PAX,ETH-PAX,XRP-PAX,EOS-PAX,XLM-PAX,REN-BTC,REN-BNB,BNB-TUSD,XRP-TUSD,EOS-TUSD,XLM-TUSD,BNB-USDC,BTC-USDC,ETH-USDC,XRP-USDC,EOS-USDC,XLM-USDC,USDC-USDT,ADA-TUSD,TRX-TUSD,NEO-TUSD,TRX-XRP,XZC-XRP,PAX-TUSD,USDC-TUSD,USDC-PAX,LINK-USDT,LINK-TUSD,LINK-PAX,LINK-USDC,WAVES-USDT,WAVES-TUSD,WAVES-USDC,LTC-TUSD,LTC-PAX,LTC-USDC,TRX-PAX,TRX-USDC,BTT-BNB,BTT-USDT,BNB-USDS,BTC-USDS,USDS-USDT,USDS-PAX,USDS-TUSD,USDS-USDC,BTT-PAX,BTT-TUSD,BTT-USDC,ONG-BNB,ONG-BTC,ONG-USDT,HOT-BNB,HOT-USDT,ZIL-USDT,ZRX-BNB,ZRX-USDT,FET-BNB,FET-BTC,FET-USDT,BAT-USDT,XMR-BNB,XMR-USDT,ZEC-BNB,ZEC-USDT,ZEC-PAX,ZEC-TUSD,ZEC-USDC,IOST-BNB,IOST-USDT,CELR-BNB,CELR-BTC,CELR-USDT,ADA-PAX,ADA-USDC,NEO-PAX,NEO-USDC,DASH-BNB,DASH-USDT,NANO-USDT,OMG-BNB,OMG-USDT,THETA-USDT,ENJ-USDT,MITH-USDT,MATIC-BNB,MATIC-BTC,MATIC-USDT,ATOM-BNB,ATOM-BTC,ATOM-USDT,ATOM-USDC,ATOM-TUSD,ETC-TUSD,BAT-USDC,BAT-PAX,BAT-TUSD,PHB-BNB,PHB-BTC,PHB-TUSD,TFUEL-BNB,TFUEL-BTC,TFUEL-USDT,ONE-BNB,ONE-BTC,ONE-USDT,ONE-USDC,FTM-BNB,FTM-BTC,FTM-USDT,FTM-USDC,ALGO-BNB,ALGO-BTC,ALGO-USDT,ALGO-TUSD,ALGO-PAX,ALGO-USDC,GTO-USDT,ERD-BNB,ERD-BTC,ERD-USDT,DOGE-BNB,DOGE-BTC,DOGE-USDT,DUSK-BNB,DUSK-BTC,DUSK-USDT,DUSK-USDC,DUSK-PAX,BGBP-USDC,ANKR-BNB,ANKR-BTC,ANKR-USDT,ONT-PAX,ONT-USDC,WIN-BNB,WIN-USDT,WIN-USDC,COS-BNB,COS-BTC,COS-USDT,NPXS-USDT,COCOS-BNB,COCOS-BTC,COCOS-USDT,MTL-USDT,TOMO-BNB,TOMO-BTC,TOMO-USDT,TOMO-USDC,PERL-BNB,PERL-BTC,PERL-USDT,DENT-USDT,MFT-USDT,KEY-USDT,STORM-USDT,DOCK-USDT,WAN-USDT,FUN-USDT,CVC-USDT,BTT-TRX,WIN-TRX,CHZ-BNB,CHZ-BTC,CHZ-USDT,BAND-BNB,BAND-BTC,BAND-USDT,BNB-BUSD,BTC-BUSD,BUSD-USDT,BEAM-BNB,BEAM-BTC,BEAM-USDT,XTZ-BNB,XTZ-BTC,XTZ-USDT,REN-USDT,RVN-USDT,HC-USDT,HBAR-BNB,HBAR-BTC,HBAR-USDT,NKN-BNB,NKN-BTC,NKN-USDT,XRP-BUSD,ETH-BUSD,LTC-BUSD,LINK-BUSD,ETC-BUSD,STX-BNB,STX-BTC,STX-USDT,KAVA-BNB,KAVA-BTC,KAVA-USDT,BUSD-NGN,BNB-NGN,BTC-NGN,ARPA-BNB,ARPA-BTC,ARPA-USDT,TRX-BUSD,EOS-BUSD,IOTX-USDT,RLC-USDT,MCO-USDT,XLM-BUSD,ADA-BUSD,CTXC-BNB,CTXC-BTC,CTXC-USDT,BCH-BNB,BCH-BTC,BCH-USDT,BCH-USDC,BCH-TUSD,BCH-PAX,BCH-BUSD,BTC-RUB,ETH-RUB,XRP-RUB,BNB-RUB,TROY-BNB,TROY-BTC,TROY-USDT,BUSD-RUB,QTUM-BUSD,VET-BUSD" } } diff --git a/testdata/http_mock/binance/binance.json b/testdata/http_mock/binance/binance.json index 76293a50..cc51af9f 100644 --- a/testdata/http_mock/binance/binance.json +++ b/testdata/http_mock/binance/binance.json @@ -11227,7 +11227,7 @@ }, { "data": [ - { + { "M": true, "T": 1577978657562, "a": 202792189, @@ -143034,27 +143034,27 @@ }, { "data": { - "askPrice": "0.04103400", - "askQty": "1.89600000", - "bidPrice": "0.04103300", - "bidQty": "43.77800000", - "closeTime": 1611715404283, - "count": 460443, - "firstId": 221265272, - "highPrice": "0.04223600", - "lastId": 221725714, - "lastPrice": "0.04103400", - "lastQty": "1.06900000", - "lowPrice": "0.04007400", - "openPrice": "0.04176800", - "openTime": 1611629004283, - "prevClosePrice": "0.04176800", - "priceChange": "-0.00073400", - "priceChangePercent": "-1.757", - "quoteVolume": "16980.13811233", - "symbol": "ETHBTC", - "volume": "410969.51200000", - "weightedAvgPrice": "0.04131727" + "askPrice": "0.04103400", + "askQty": "1.89600000", + "bidPrice": "0.04103300", + "bidQty": "43.77800000", + "closeTime": 1611715404283, + "count": 460443, + "firstId": 221265272, + "highPrice": "0.04223600", + "lastId": 221725714, + "lastPrice": "0.04103400", + "lastQty": "1.06900000", + "lowPrice": "0.04007400", + "openPrice": "0.04176800", + "openTime": 1611629004283, + "prevClosePrice": "0.04176800", + "priceChange": "-0.00073400", + "priceChangePercent": "-1.757", + "quoteVolume": "16980.13811233", + "symbol": "ETHBTC", + "volume": "410969.51200000", + "weightedAvgPrice": "0.04131727" }, "queryString": "symbol=ETHBTC", "bodyParams": "", @@ -172138,6 +172138,34 @@ "queryString": "", "bodyParams": "", "headers": {} + }, + { + "data": { + "askPrice": "0.27050000", + "askQty": "106108.00000000", + "bidPrice": "0.27040000", + "bidQty": "160275.00000000", + "closeTime": 1630042422749, + "count": 383971, + "firstId": 323585768, + "highPrice": "0.28173000", + "lastId": 323969738, + "lastPrice": "0.27050000", + "lastQty": "944.00000000", + "lowPrice": "0.26410000", + "openPrice": "0.27927000", + "openTime": 1629956022749, + "prevClosePrice": "0.27937000", + "priceChange": "-0.00877000", + "priceChangePercent": "-3.140", + "quoteVolume": "365772101.01826800", + "symbol": "DOGEUSDT", + "volume": "1343961239.70000000", + "weightedAvgPrice": "0.27215971" + }, + "queryString": "symbol=DOGEUSDT", + "bodyParams": "", + "headers": {} } ] }, @@ -201678,7 +201706,7 @@ "rateLimitType": "ORDERS" } ], - "serverTime": 1611715405797, + "serverTime": 1629707607949, "symbols": [ { "baseAsset": "BTC", @@ -201691,13 +201719,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.1", + "maxPrice": "4520958", + "minPrice": "1000", "tickSize": "0.1" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -201718,12 +201746,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.006000", "maintMarginPercent": "2.5000", "marginAsset": "BTC", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1597042800000, "orderTypes": [ "LIMIT", @@ -201757,24 +201788,24 @@ "contractSize": 100, "contractStatus": "TRADING", "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, + "deliveryDate": 1632470400000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.1", + "maxPrice": "4545059", + "minPrice": "1000", "tickSize": "0.1" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "10000", "minQty": "1", "stepSize": "1" }, @@ -201789,13 +201820,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.006000", "maintMarginPercent": "2.5000", "marginAsset": "BTC", - "onboardDate": 1601020800000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, "orderTypes": [ "LIMIT", "MARKET", @@ -201811,7 +201845,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "BTCUSD_210326", + "symbol": "BTCUSD_210924", "timeInForce": [ "GTC", "IOC", @@ -201828,24 +201862,24 @@ "contractSize": 100, "contractStatus": "TRADING", "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "deliveryDate": 1640937600000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.1", + "maxPrice": "4671848", + "minPrice": "1000", "tickSize": "0.1" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "500", "minQty": "1", "stepSize": "1" }, @@ -201860,13 +201894,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.006000", "maintMarginPercent": "2.5000", "marginAsset": "BTC", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, "orderTypes": [ "LIMIT", "MARKET", @@ -201882,7 +201919,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "BTCUSD_210625", + "symbol": "BTCUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -201904,13 +201941,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.01", + "maxPrice": "306159", + "minPrice": "50", "tickSize": "0.01" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -201931,12 +201968,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "ETH", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1597734000000, "orderTypes": [ "LIMIT", @@ -201970,18 +202010,18 @@ "contractSize": 10, "contractStatus": "TRADING", "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, + "deliveryDate": 1632470400000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.01", + "maxPrice": "307683", + "minPrice": "50", "tickSize": "0.01" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202002,13 +202042,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "ETH", - "onboardDate": 1601020800000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, "orderTypes": [ "LIMIT", "MARKET", @@ -202024,7 +202067,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "ETHUSD_210326", + "symbol": "ETHUSD_210924", "timeInForce": [ "GTC", "IOC", @@ -202041,24 +202084,24 @@ "contractSize": 10, "contractStatus": "TRADING", "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "deliveryDate": 1640937600000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.01", + "maxPrice": "316265", + "minPrice": "50", "tickSize": "0.01" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "5000", "minQty": "1", "stepSize": "1" }, @@ -202073,13 +202116,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "ETH", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, "orderTypes": [ "LIMIT", "MARKET", @@ -202095,7 +202141,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "ETHUSD_210625", + "symbol": "ETHUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -202117,13 +202163,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "2000", - "minPrice": "0.001", + "maxPrice": "2650", + "minPrice": "0.500", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202144,12 +202190,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "LINK", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1597734000000, "orderTypes": [ "LIMIT", @@ -202175,7 +202224,8 @@ ], "triggerProtect": "0.0500", "underlyingSubType": [ - "DEFI" + "DEFI", + "HOT" ], "underlyingType": "COIN" }, @@ -202190,13 +202240,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "3000", - "minPrice": "0.001", + "maxPrice": "40227", + "minPrice": "7", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202217,12 +202267,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "BNB", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1597993200000, "orderTypes": [ "LIMIT", @@ -202247,7 +202300,10 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "BSC", + "HOT" + ], "underlyingType": "COIN" }, { @@ -202261,13 +202317,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "5", - "minPrice": "0.00001", + "maxPrice": "8", + "minPrice": "0.00150", "tickSize": "0.00001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202288,12 +202344,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "TRX", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1598338800000, "orderTypes": [ "LIMIT", @@ -202332,13 +202391,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", + "maxPrice": "2386", + "minPrice": "0.400", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202359,12 +202418,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "DOT", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1598338800000, "orderTypes": [ "LIMIT", @@ -202389,7 +202451,9 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "HOT" + ], "underlyingType": "COIN" }, { @@ -202403,13 +202467,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "5", - "minPrice": "0.00001", + "maxPrice": "202", + "minPrice": "0.01700", "tickSize": "0.00001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202430,12 +202494,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "ADA", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1598425200000, "orderTypes": [ "LIMIT", @@ -202460,7 +202527,9 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "HOT" + ], "underlyingType": "COIN" }, { @@ -202475,12 +202544,12 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.001", + "minPrice": "0.100", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202501,12 +202570,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "EOS", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1599375600000, "orderTypes": [ "LIMIT", @@ -202545,19 +202617,19 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "8000", - "minPrice": "0.01", + "maxPrice": "17047", + "minPrice": "3.80", "tickSize": "0.01" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "20000", "minQty": "1", "stepSize": "1" }, @@ -202572,12 +202644,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "LTC", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1599462000000, "orderTypes": [ "LIMIT", @@ -202616,13 +202691,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "20000", - "minPrice": "0.01", + "maxPrice": "63936", + "minPrice": "14.40", "tickSize": "0.01" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -202643,12 +202718,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "BCH", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1599462000000, "orderTypes": [ "LIMIT", @@ -202687,19 +202765,19 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.0001", + "maxPrice": "111", + "minPrice": "0.0150", "tickSize": "0.0001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "72757", + "maxQty": "10000", "minQty": "1", "stepSize": "1" }, @@ -202714,12 +202792,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "XRP", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1599634800000, "orderTypes": [ "LIMIT", @@ -202758,19 +202839,19 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", + "maxPrice": "6392", + "minPrice": "1.200", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "36927", + "maxQty": "5000", "minQty": "1", "stepSize": "1" }, @@ -202785,12 +202866,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "ETC", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1599634800000, "orderTypes": [ "LIMIT", @@ -202818,150 +202902,6 @@ "underlyingSubType": [], "underlyingType": "COIN" }, - { - "baseAsset": "ADA", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "11578", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "ADA", - "onboardDate": 1601020800000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "ADAUSD", - "pricePrecision": 5, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "ADAUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "LINK", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "2000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "LINK", - "onboardDate": 1601020800000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "LINKUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "LINKUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [ - "DEFI" - ], - "underlyingType": "COIN" - }, { "baseAsset": "FIL", "baseAssetPrecision": 8, @@ -202974,12 +202914,12 @@ { "filterType": "PRICE_FILTER", "maxPrice": "10000", - "minPrice": "0.001", + "minPrice": "1.500", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -203000,12 +202940,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.015000", "maintMarginPercent": "2.5000", "marginAsset": "FIL", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1603350000000, "orderTypes": [ "LIMIT", @@ -203033,432 +202976,6 @@ "underlyingSubType": [], "underlyingType": "COIN" }, - { - "baseAsset": "BNB", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "3000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "5000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "BNB", - "onboardDate": 1604473200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "BNBUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "BNBUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "DOT", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "3000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "5000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "DOT", - "onboardDate": 1604473200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "DOTUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "DOTUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "XRP", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.0001", - "tickSize": "0.0001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "25000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "XRP", - "onboardDate": 1606719600000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "XRPUSD", - "pricePrecision": 4, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "XRPUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "LTC", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "8000", - "minPrice": "0.01", - "tickSize": "0.01" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "LTC", - "onboardDate": 1606719600000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "LTCUSD", - "pricePrecision": 2, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "LTCUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "BCH", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "8000", - "minPrice": "0.01", - "tickSize": "0.01" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "BCH", - "onboardDate": 1606892400000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "BCHUSD", - "pricePrecision": 2, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "BCHUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "FIL", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "CURRENT_QUARTER", - "deliveryDate": 1616745600000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "6500", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.7000", - "multiplierUp": "1.3000" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "FIL", - "onboardDate": 1607410800000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "FILUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "FILUSD_210326", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, { "baseAsset": "EGLD", "baseAssetPrecision": 8, @@ -203470,13 +202987,13 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "10000", - "minPrice": "0.001", + "maxPrice": "14473", + "minPrice": "1.840", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -203497,12 +203014,15 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.015000", "maintMarginPercent": "2.5000", "marginAsset": "EGLD", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, "onboardDate": 1608534000000, "orderTypes": [ "LIMIT", @@ -203531,29 +203051,29 @@ "underlyingType": "COIN" }, { - "baseAsset": "ADA", + "baseAsset": "DOGE", "baseAssetPrecision": 8, "contractSize": 10, "contractStatus": "TRADING", - "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "30", + "minPrice": "0.002000", + "tickSize": "0.000001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "11578", + "maxQty": "10000", "minQty": "1", "stepSize": "1" }, @@ -203568,13 +203088,92 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.015000", + "maintMarginPercent": "2.5000", + "marginAsset": "DOGE", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1612162800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "DOGEUSD", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "DOGEUSD_PERP", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [ + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "ADA", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "203", + "minPrice": "0.01700", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "ADA", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, "orderTypes": [ "LIMIT", "MARKET", @@ -203590,7 +203189,752 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "ADAUSD_210625", + "symbol": "ADAUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [ + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "LINK", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "2672", + "minPrice": "0.500", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "50000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "LINK", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "LINKUSD", + "pricePrecision": 3, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "LINKUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [ + "DEFI", + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "BCH", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "64421", + "minPrice": "14.40", + "tickSize": "0.01" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "20000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "BCH", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BCHUSD", + "pricePrecision": 2, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "BCHUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "DOT", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "3000", + "minPrice": "0.400", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "DOT", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "DOTUSD", + "pricePrecision": 3, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "DOTUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "XRP", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "112", + "minPrice": "0.0150", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "XRP", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "XRPUSD", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "XRPUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "LTC", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "17172", + "minPrice": "3.80", + "tickSize": "0.01" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "20000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "LTC", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "LTCUSD", + "pricePrecision": 2, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "LTCUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BNB", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "40335", + "minPrice": "7", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "BNB", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1616745600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BNBUSD", + "pricePrecision": 3, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "BNBUSD_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "UNI", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "10000", + "minPrice": "0.390", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.015000", + "maintMarginPercent": "2.5000", + "marginAsset": "UNI", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1618297200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "UNIUSD", + "pricePrecision": 3, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "UNIUSD_PERP", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "THETA", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "10000", + "minPrice": "0.100", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "2500", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.015000", + "maintMarginPercent": "2.5000", + "marginAsset": "THETA", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1618297200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "THETAUSD", + "pricePrecision": 3, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "THETAUSD_PERP", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "XLM", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100", + "minPrice": "0.00700", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.015000", + "maintMarginPercent": "2.5000", + "marginAsset": "XLM", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1618470000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "XLMUSD", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "XLMUSD_PERP", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "ADA", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "NEXT_QUARTER", + "deliveryDate": 1640937600000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "205", + "minPrice": "0.01700", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "ADA", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ADAUSD", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "ADAUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -203607,24 +203951,24 @@ "contractSize": 10, "contractStatus": "TRADING", "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "deliveryDate": 1640937600000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "2000", - "minPrice": "0.001", + "maxPrice": "2737", + "minPrice": "0.500", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", + "maxQty": "5000", "minQty": "1", "stepSize": "1" }, @@ -203639,13 +203983,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "LINK", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, "orderTypes": [ "LIMIT", "MARKET", @@ -203661,7 +204008,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "LINKUSD_210625", + "symbol": "LINKUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -203669,7 +204016,9 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "DEFI" + ], "underlyingType": "COIN" }, { @@ -203678,24 +204027,24 @@ "contractSize": 10, "contractStatus": "TRADING", "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "deliveryDate": 1640937600000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "8000", - "minPrice": "0.01", + "maxPrice": "66208", + "minPrice": "14.40", "tickSize": "0.01" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", + "maxQty": "5000", "minQty": "1", "stepSize": "1" }, @@ -203710,13 +204059,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "BCH", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, "orderTypes": [ "LIMIT", "MARKET", @@ -203732,220 +204084,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "BCHUSD_210625", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "ETC", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "DELIVERING", - "contractType": "NEXT_QUARTER DELIVERING", - "deliveryDate": 1624608000000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "15000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "ETC", - "onboardDate": 1608883200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "ETCUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "ETCUSD_210625", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "EOS", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "DELIVERING", - "contractType": "NEXT_QUARTER DELIVERING", - "deliveryDate": 1624608000000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "40000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "EOS", - "onboardDate": 1608883200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "EOSUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "EOSUSD_210625", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "FIL", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "DELIVERING", - "contractType": "NEXT_QUARTER DELIVERING", - "deliveryDate": 1624608000000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "6500", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.7000", - "multiplierUp": "1.3000" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "FIL", - "onboardDate": 1608883200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "FILUSD", - "pricePrecision": 3, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "FILUSD_210625", + "symbol": "BCHUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -203962,18 +204101,18 @@ "contractSize": 10, "contractStatus": "TRADING", "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "deliveryDate": 1640937600000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", "maxPrice": "3000", - "minPrice": "0.001", + "minPrice": "0.400", "tickSize": "0.001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -203994,13 +204133,16 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "DOT", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, "orderTypes": [ "LIMIT", "MARKET", @@ -204016,78 +204158,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "DOTUSD_210625", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "TRX", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "DELIVERING", - "contractType": "NEXT_QUARTER DELIVERING", - "deliveryDate": 1624608000000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "5", - "minPrice": "0.00001", - "tickSize": "0.00001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "TRX", - "onboardDate": 1608883200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "TRXUSD", - "pricePrecision": 5, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "TRXUSD_210625", + "symbol": "DOTUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -204104,160 +204175,18 @@ "contractSize": 10, "contractStatus": "TRADING", "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, + "deliveryDate": 1640937600000, "equalQtyPrecision": 4, "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.0001", + "maxPrice": "115", + "minPrice": "0.0150", "tickSize": "0.0001" }, { "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "25000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "XRP", - "onboardDate": 1608883200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "XRPUSD", - "pricePrecision": 4, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "XRPUSD_210625", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "LTC", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "8000", - "minPrice": "0.01", - "tickSize": "0.01" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", - "minQty": "1", - "stepSize": "1" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "LTC", - "onboardDate": 1608883200000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "LTCUSD", - "pricePrecision": 2, - "quantityPrecision": 0, - "quoteAsset": "USD", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "symbol": "LTCUSD_210625", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.0500", - "underlyingSubType": [], - "underlyingType": "COIN" - }, - { - "baseAsset": "BNB", - "baseAssetPrecision": 8, - "contractSize": 10, - "contractStatus": "TRADING", - "contractType": "NEXT_QUARTER", - "deliveryDate": 1624608000000, - "equalQtyPrecision": 4, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "3000", - "minPrice": "0.001", - "tickSize": "0.001" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "100000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -204278,13 +204207,164 @@ { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "XRP", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "XRPUSD", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "XRPUSD_211231", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "LTC", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "NEXT_QUARTER", + "deliveryDate": 1640937600000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "17562", + "minPrice": "3.80", + "tickSize": "0.01" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", + "maintMarginPercent": "2.5000", + "marginAsset": "LTC", + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "LTCUSD", + "pricePrecision": 2, + "quantityPrecision": 0, + "quoteAsset": "USD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "symbol": "LTCUSD_211231", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BNB", + "baseAssetPrecision": 8, + "contractSize": 10, + "contractStatus": "TRADING", + "contractType": "NEXT_QUARTER", + "deliveryDate": 1640937600000, + "equalQtyPrecision": 4, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "41461", + "minPrice": "7", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 100 + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.010000", "maintMarginPercent": "2.5000", "marginAsset": "BNB", - "onboardDate": 1608883200000, + "marketTakeBound": "0.10", + "maxMoveOrderLimit": 10000, + "onboardDate": 1624608000000, "orderTypes": [ "LIMIT", "MARKET", @@ -204300,7 +204380,7 @@ "quoteAsset": "USD", "quotePrecision": 8, "requiredMarginPercent": "5.0000", - "symbol": "BNBUSD_210625", + "symbol": "BNBUSD_211231", "timeInForce": [ "GTC", "IOC", @@ -205194,32 +205274,6 @@ "bodyParams": "", "headers": {} }, - { - "data": [ - { - "baseVolume": "21220.93550722", - "closeTime": 1607294351314, - "count": 84965, - "firstId": 7772310, - "highPrice": "19363.4", - "lastId": 7857274, - "lastPrice": "19081.2", - "lastQty": "5", - "lowPrice": "18870.3", - "openPrice": "19062.3", - "openTime": 1607207940000, - "pair": "BTCUSD", - "priceChange": "18.9", - "priceChangePercent": "0.099", - "symbol": "BTCUSD_PERP", - "volume": "4059186", - "weightedAvgPrice": "19128.21420441" - } - ], - "queryString": "symbol=BTCUSD_PERP", - "bodyParams": "", - "headers": {} - }, { "data": [ { @@ -205910,6 +205964,32 @@ "queryString": "", "bodyParams": "", "headers": {} + }, + { + "data": [ + { + "baseVolume": "153291.03251537", + "closeTime": 1630042418232, + "count": 866761, + "firstId": 225537386, + "highPrice": "47662.0", + "lastId": 226404146, + "lastPrice": "47010.2", + "lastQty": "6", + "lowPrice": "46250.0", + "openPrice": "47135.6", + "openTime": 1629955980000, + "pair": "BTCUSD", + "priceChange": "-125.4", + "priceChangePercent": "-0.266", + "symbol": "BTCUSD_PERP", + "volume": "71996462", + "weightedAvgPrice": "46967.17141153" + } + ], + "queryString": "symbol=BTCUSD_PERP", + "bodyParams": "", + "headers": {} } ] }, @@ -224812,6 +224892,33 @@ "GET": [ { "data": { + "assets": [ + { + "asset": "USDT", + "autoAssetExchange": "-10000", + "marginAvailable": true + }, + { + "asset": "BTC", + "autoAssetExchange": "-0.00100000", + "marginAvailable": true + }, + { + "asset": "BNB", + "autoAssetExchange": "-10", + "marginAvailable": true + }, + { + "asset": "ETH", + "autoAssetExchange": "-5", + "marginAvailable": true + }, + { + "asset": "BUSD", + "autoAssetExchange": "-10000", + "marginAvailable": true + } + ], "exchangeFilters": [], "futuresType": "U_MARGINED", "rateLimits": [ @@ -224826,9 +224933,15 @@ "intervalNum": 1, "limit": 1200, "rateLimitType": "ORDERS" + }, + { + "interval": "SECOND", + "intervalNum": 10, + "limit": 300, + "rateLimitType": "ORDERS" } ], - "serverTime": 1611715406526, + "serverTime": 1630037193494, "symbols": [ { "baseAsset": "BTC", @@ -224838,8 +224951,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "1000000", - "minPrice": "0.01", + "maxPrice": "4529764", + "minPrice": "556.72", "tickSize": "0.01" }, { @@ -224850,7 +224963,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000", + "maxQty": "200", "minQty": "0.001", "stepSize": "0.001" }, @@ -224860,21 +224973,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" } ], + "liquidationFee": "0.012000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.05", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -224912,8 +225027,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.01", + "maxPrice": "306177", + "minPrice": "39.86", "tickSize": "0.01" }, { @@ -224924,7 +225039,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000", + "maxQty": "2000", "minQty": "0.001", "stepSize": "0.001" }, @@ -224934,21 +225049,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.05", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -224987,7 +225104,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.01", + "minPrice": "13.93", "tickSize": "0.01" }, { @@ -224998,7 +225115,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000", + "maxQty": "1000", "minQty": "0.001", "stepSize": "0.001" }, @@ -225008,21 +225125,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225061,7 +225180,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.0001", + "minPrice": "0.0143", "tickSize": "0.0001" }, { @@ -225082,21 +225201,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225135,7 +225256,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "0.111", "tickSize": "0.001" }, { @@ -225146,7 +225267,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "200000", "minQty": "0.1", "stepSize": "0.1" }, @@ -225156,21 +225277,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225209,7 +225332,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.01", + "minPrice": "3.61", "tickSize": "0.01" }, { @@ -225230,21 +225353,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225283,7 +225408,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.00001", + "minPrice": "0.00132", "tickSize": "0.00001" }, { @@ -225304,21 +225429,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225357,7 +225484,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "1.051", "tickSize": "0.001" }, { @@ -225378,21 +225505,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225431,7 +225560,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "0.464", "tickSize": "0.001" }, { @@ -225452,21 +225581,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225494,7 +225625,8 @@ ], "triggerProtect": "0.0500", "underlyingSubType": [ - "DEFI" + "DEFI", + "HOT" ], "underlyingType": "COIN" }, @@ -225507,7 +225639,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.00001", + "minPrice": "0.00648", "tickSize": "0.00001" }, { @@ -225518,7 +225650,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -225528,21 +225660,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225581,8 +225715,8 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.00001", - "tickSize": "0.00001" + "minPrice": "0.01740", + "tickSize": "0.00010" }, { "filterType": "LOT_SIZE", @@ -225592,7 +225726,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000000", + "maxQty": "3000000", "minQty": "1", "stepSize": "1" }, @@ -225602,21 +225736,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225643,7 +225779,9 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "HOT" + ], "underlyingType": "COIN" }, { @@ -225655,7 +225793,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.01", + "minPrice": "4.36", "tickSize": "0.01" }, { @@ -225666,7 +225804,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000", + "maxQty": "5000", "minQty": "0.001", "stepSize": "0.001" }, @@ -225676,21 +225814,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225729,7 +225869,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.01", + "minPrice": "3.82", "tickSize": "0.01" }, { @@ -225740,7 +225880,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000", + "maxQty": "3000", "minQty": "0.001", "stepSize": "0.001" }, @@ -225750,21 +225890,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225803,7 +225945,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.01", + "minPrice": "2.85", "tickSize": "0.01" }, { @@ -225814,7 +225956,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000", + "maxQty": "5000", "minQty": "0.001", "stepSize": "0.001" }, @@ -225824,21 +225966,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225877,7 +226021,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "0.064", "tickSize": "0.001" }, { @@ -225898,21 +226042,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -225951,8 +226097,8 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", - "tickSize": "0.001" + "minPrice": "6.600", + "tickSize": "0.010" }, { "filterType": "LOT_SIZE", @@ -225962,7 +226108,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "20000", "minQty": "0.01", "stepSize": "0.01" }, @@ -225972,21 +226118,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.05", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226013,7 +226161,10 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "BSC", + "HOT" + ], "underlyingType": "COIN" }, { @@ -226025,7 +226176,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "0.251", "tickSize": "0.001" }, { @@ -226046,21 +226197,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226099,7 +226252,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.0001", + "minPrice": "0.0241", "tickSize": "0.0001" }, { @@ -226110,7 +226263,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "500000", "minQty": "0.1", "stepSize": "0.1" }, @@ -226120,21 +226273,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226161,7 +226316,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "BSC" + ], "underlyingType": "COIN" }, { @@ -226173,7 +226330,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.0001", + "minPrice": "0.0205", "tickSize": "0.0001" }, { @@ -226184,7 +226341,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "50000", "minQty": "0.1", "stepSize": "0.1" }, @@ -226194,21 +226351,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226247,7 +226406,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.0001", + "minPrice": "0.0134", "tickSize": "0.0001" }, { @@ -226258,7 +226417,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "600000", "minQty": "0.1", "stepSize": "0.1" }, @@ -226268,21 +226427,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226321,8 +226482,8 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.000001", - "tickSize": "0.000001" + "minPrice": "0.002080", + "tickSize": "0.000010" }, { "filterType": "LOT_SIZE", @@ -226342,21 +226503,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226395,7 +226558,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "1.093", "tickSize": "0.001" }, { @@ -226406,7 +226569,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", + "maxQty": "20000", "minQty": "0.01", "stepSize": "0.01" }, @@ -226416,21 +226579,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226469,7 +226634,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.001", + "minPrice": "0.246", "tickSize": "0.001" }, { @@ -226480,7 +226645,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "250000", + "maxQty": "90000", "minQty": "0.1", "stepSize": "0.1" }, @@ -226490,21 +226655,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226543,7 +226710,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.000001", + "minPrice": "0.000587", "tickSize": "0.000001" }, { @@ -226564,21 +226731,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226617,8 +226786,8 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", - "tickSize": "0.0001" + "minPrice": "0.1070", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -226628,7 +226797,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "800000", + "maxQty": "400000", "minQty": "0.1", "stepSize": "0.1" }, @@ -226638,21 +226807,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226691,7 +226862,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.0141", "tickSize": "0.0001" }, { @@ -226712,21 +226883,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226767,7 +226940,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00219", "tickSize": "0.00001" }, { @@ -226788,21 +226961,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226840,9 +227015,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "181", + "minPrice": "0.03200", + "tickSize": "0.00100" }, { "filterType": "LOT_SIZE", @@ -226852,7 +227027,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "600000", + "maxQty": "300000", "minQty": "1", "stepSize": "1" }, @@ -226862,21 +227037,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226917,7 +227094,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.0179", "tickSize": "0.0001" }, { @@ -226928,7 +227105,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "500000", "minQty": "0.1", "stepSize": "0.1" }, @@ -226938,21 +227115,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -226993,7 +227172,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.01", + "minPrice": "8", "tickSize": "0.01" }, { @@ -227004,7 +227183,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "5000", + "maxQty": "2500", "minQty": "0.001", "stepSize": "0.001" }, @@ -227014,21 +227193,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227069,7 +227250,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.1055", "tickSize": "0.0001" }, { @@ -227080,7 +227261,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "200000", + "maxQty": "100000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227090,21 +227271,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227142,9 +227325,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "10", - "minPrice": "0.000001", - "tickSize": "0.000001" + "maxPrice": "30", + "minPrice": "0.002440", + "tickSize": "0.000010" }, { "filterType": "LOT_SIZE", @@ -227154,7 +227337,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000000", + "maxQty": "5000000", "minQty": "1", "stepSize": "1" }, @@ -227164,21 +227347,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227205,7 +227390,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "HOT" + ], "underlyingType": "COIN" }, { @@ -227217,7 +227404,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.0454", "tickSize": "0.0001" }, { @@ -227228,7 +227415,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "250000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227238,21 +227425,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227280,7 +227469,8 @@ ], "triggerProtect": "0.1500", "underlyingSubType": [ - "DEFI" + "DEFI", + "BSC" ], "underlyingType": "COIN" }, @@ -227292,8 +227482,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "200", - "minPrice": "0.0001", + "maxPrice": "653", + "minPrice": "0.0593", "tickSize": "0.0001" }, { @@ -227304,7 +227494,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "473875.6", + "maxQty": "200000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227314,21 +227504,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227368,8 +227560,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "500", - "minPrice": "0.0001", + "maxPrice": "783", + "minPrice": "0.1647", "tickSize": "0.0001" }, { @@ -227380,7 +227572,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "80000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227390,21 +227582,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227444,8 +227638,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "200", - "minPrice": "0.0001", + "maxPrice": "432", + "minPrice": "0.1029", "tickSize": "0.0001" }, { @@ -227456,7 +227650,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "670647.9", + "maxQty": "70000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227466,21 +227660,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227518,9 +227714,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "200", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "2249", + "minPrice": "0.3420", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -227530,7 +227726,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "150000", + "maxQty": "32000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227540,21 +227736,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227592,9 +227790,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "50000", - "minPrice": "0.01", - "tickSize": "0.01" + "maxPrice": "351788", + "minPrice": "50", + "tickSize": "0.10" }, { "filterType": "LOT_SIZE", @@ -227604,7 +227802,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "500", + "maxQty": "200", "minQty": "0.001", "stepSize": "0.001" }, @@ -227614,21 +227812,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227668,8 +227868,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.001", + "maxPrice": "1144", + "minPrice": "0.164", "tickSize": "0.001" }, { @@ -227680,7 +227880,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "80000", + "maxQty": "40000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227690,21 +227890,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227744,8 +227946,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "500", - "minPrice": "0.001", + "maxPrice": "2398", + "minPrice": "0.373", "tickSize": "0.001" }, { @@ -227756,7 +227958,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "200000", + "maxQty": "100000", "minQty": "0.1", "stepSize": "0.1" }, @@ -227766,21 +227968,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.005000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227807,7 +228011,9 @@ "GTX" ], "triggerProtect": "0.0500", - "underlyingSubType": [], + "underlyingSubType": [ + "HOT" + ], "underlyingType": "COIN" }, { @@ -227818,8 +228024,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100000", - "minPrice": "0.1", + "maxPrice": "230680", + "minPrice": "33.8", "tickSize": "0.1" }, { @@ -227830,7 +228036,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000", + "maxQty": "200", "minQty": "0.001", "stepSize": "0.001" }, @@ -227840,21 +228046,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227894,9 +228102,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "500000", - "minPrice": "0.1", - "tickSize": "0.1" + "maxPrice": "3836373", + "minPrice": "667", + "tickSize": "1" }, { "filterType": "LOT_SIZE", @@ -227906,7 +228114,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "50", + "maxQty": "25", "minQty": "0.001", "stepSize": "0.001" }, @@ -227916,21 +228124,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -227971,7 +228181,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "5000", - "minPrice": "0.001", + "minPrice": "0.630", "tickSize": "0.001" }, { @@ -227992,21 +228202,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228047,7 +228259,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.001", + "minPrice": "0.031", "tickSize": "0.001" }, { @@ -228058,7 +228270,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "300000", "minQty": "0.1", "stepSize": "0.1" }, @@ -228068,21 +228280,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228122,9 +228336,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "4000", - "minPrice": "0.001", - "tickSize": "0.001" + "maxPrice": "5138", + "minPrice": "1.230", + "tickSize": "0.010" }, { "filterType": "LOT_SIZE", @@ -228134,7 +228348,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "36700.9", + "maxQty": "10000", "minQty": "0.1", "stepSize": "0.1" }, @@ -228144,21 +228358,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228198,8 +228414,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "300000", - "minPrice": "0.1", + "maxPrice": "386007", + "minPrice": "31.1", "tickSize": "0.1" }, { @@ -228210,7 +228426,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "500", + "maxQty": "100", "minQty": "0.001", "stepSize": "0.001" }, @@ -228220,21 +228436,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228274,9 +228492,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "200", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "839", + "minPrice": "0.1720", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -228286,7 +228504,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "250000", + "maxQty": "50000", "minQty": "1", "stepSize": "1" }, @@ -228296,21 +228514,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228350,9 +228570,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "500", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "1301", + "minPrice": "0.1430", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -228362,7 +228582,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "200000", + "maxQty": "100000", "minQty": "1", "stepSize": "1" }, @@ -228372,21 +228592,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228414,7 +228636,8 @@ ], "triggerProtect": "0.1500", "underlyingSubType": [ - "DEFI" + "DEFI", + "HOT" ], "underlyingType": "COIN" }, @@ -228426,9 +228649,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "300", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "722", + "minPrice": "0.0920", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -228438,7 +228661,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "645211", + "maxQty": "100000", "minQty": "1", "stepSize": "1" }, @@ -228448,21 +228671,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228503,7 +228728,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.0001", + "minPrice": "0.0079", "tickSize": "0.0001" }, { @@ -228514,7 +228739,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "2000000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -228524,21 +228749,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228578,9 +228805,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "2000", - "minPrice": "0.001", - "tickSize": "0.001" + "maxPrice": "14295", + "minPrice": "1.770", + "tickSize": "0.010" }, { "filterType": "LOT_SIZE", @@ -228590,7 +228817,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "30000", + "maxQty": "6000", "minQty": "0.1", "stepSize": "0.1" }, @@ -228600,21 +228827,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228652,9 +228881,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "400", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "6857", + "minPrice": "0.4130", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -228664,7 +228893,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "429228", + "maxQty": "20000", "minQty": "1", "stepSize": "1" }, @@ -228674,21 +228903,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228727,7 +228958,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "400", - "minPrice": "0.0001", + "minPrice": "0.0234", "tickSize": "0.0001" }, { @@ -228738,7 +228969,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "300000", "minQty": "1", "stepSize": "1" }, @@ -228748,21 +228979,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228800,8 +229033,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.0001", + "maxPrice": "121", + "minPrice": "0.0190", "tickSize": "0.0001" }, { @@ -228812,7 +229045,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1912741", + "maxQty": "500000", "minQty": "1", "stepSize": "1" }, @@ -228822,21 +229055,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228874,8 +229109,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "20", - "minPrice": "0.00001", + "maxPrice": "22", + "minPrice": "0.00360", "tickSize": "0.00001" }, { @@ -228896,21 +229131,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -228948,9 +229185,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "300", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "2684", + "minPrice": "0.3730", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -228960,7 +229197,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "200000", + "maxQty": "100000", "minQty": "1", "stepSize": "1" }, @@ -228970,21 +229207,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229012,7 +229251,8 @@ ], "triggerProtect": "0.1500", "underlyingSubType": [ - "DEFI" + "DEFI", + "HOT" ], "underlyingType": "COIN" }, @@ -229024,9 +229264,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "2403", + "minPrice": "0.3480", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -229036,7 +229276,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "100000", + "maxQty": "25000", "minQty": "1", "stepSize": "1" }, @@ -229046,21 +229286,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229098,9 +229340,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "10", - "minPrice": "0.000001", - "tickSize": "0.000001" + "maxPrice": "41", + "minPrice": "0.007660", + "tickSize": "0.000010" }, { "filterType": "LOT_SIZE", @@ -229110,7 +229352,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -229120,21 +229362,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229172,9 +229416,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "1000", - "minPrice": "0.0001", - "tickSize": "0.0001" + "maxPrice": "1929", + "minPrice": "0.1660", + "tickSize": "0.0010" }, { "filterType": "LOT_SIZE", @@ -229184,7 +229428,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "438987", + "maxQty": "30000", "minQty": "1", "stepSize": "1" }, @@ -229194,21 +229438,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229246,9 +229492,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "153", + "minPrice": "0.02250", + "tickSize": "0.00010" }, { "filterType": "LOT_SIZE", @@ -229258,7 +229504,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "2500000", + "maxQty": "350000", "minQty": "1", "stepSize": "1" }, @@ -229268,21 +229514,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229309,7 +229557,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "NFT" + ], "underlyingType": "COIN" }, { @@ -229321,7 +229571,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.0096", "tickSize": "0.0001" }, { @@ -229332,7 +229582,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "2976715", + "maxQty": "800000", "minQty": "1", "stepSize": "1" }, @@ -229342,21 +229592,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229397,7 +229649,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.0250", "tickSize": "0.0001" }, { @@ -229408,7 +229660,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "700000", + "maxQty": "110000", "minQty": "1", "stepSize": "1" }, @@ -229418,21 +229670,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229471,7 +229725,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00878", "tickSize": "0.00001" }, { @@ -229482,7 +229736,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1685378", + "maxQty": "500000", "minQty": "1", "stepSize": "1" }, @@ -229492,21 +229746,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229546,9 +229802,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "10000", - "minPrice": "0.001", - "tickSize": "0.001" + "maxPrice": "28450", + "minPrice": "4.060", + "tickSize": "0.010" }, { "filterType": "LOT_SIZE", @@ -229558,7 +229814,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "10000", + "maxQty": "2000", "minQty": "0.1", "stepSize": "0.1" }, @@ -229568,21 +229824,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229621,7 +229879,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "1000", - "minPrice": "0.0001", + "minPrice": "0.0477", "tickSize": "0.0001" }, { @@ -229632,7 +229890,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "500000", + "maxQty": "120000", "minQty": "1", "stepSize": "1" }, @@ -229642,21 +229900,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229694,9 +229954,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "10000", - "minPrice": "0.001", - "tickSize": "0.001" + "maxPrice": "38702", + "minPrice": "4.340", + "tickSize": "0.010" }, { "filterType": "LOT_SIZE", @@ -229716,21 +229976,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229757,7 +230019,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "DEFI" + ], "underlyingType": "COIN" }, { @@ -229769,7 +230033,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "10000", - "minPrice": "0.001", + "minPrice": "1.381", "tickSize": "0.001" }, { @@ -229780,7 +230044,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "50000", + "maxQty": "20000", "minQty": "0.1", "stepSize": "0.1" }, @@ -229790,21 +230054,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229843,7 +230109,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "10", - "minPrice": "0.000001", + "minPrice": "0.000778", "tickSize": "0.000001" }, { @@ -229864,21 +230130,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229919,7 +230187,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00512", "tickSize": "0.00001" }, { @@ -229930,7 +230198,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1400000", + "maxQty": "500000", "minQty": "1", "stepSize": "1" }, @@ -229940,21 +230208,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -229994,9 +230264,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "137", + "minPrice": "0.00960", + "tickSize": "0.00010" }, { "filterType": "LOT_SIZE", @@ -230006,7 +230276,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "7000000", + "maxQty": "1000000", "minQty": "1", "stepSize": "1" }, @@ -230016,21 +230286,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230069,7 +230341,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.01379", "tickSize": "0.00001" }, { @@ -230080,7 +230352,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "400000", "minQty": "1", "stepSize": "1" }, @@ -230090,21 +230362,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230143,7 +230417,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00517", "tickSize": "0.00001" }, { @@ -230164,21 +230438,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230216,9 +230492,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "204", + "minPrice": "0.03610", + "tickSize": "0.00010" }, { "filterType": "LOT_SIZE", @@ -230228,7 +230504,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "700000", + "maxQty": "200000", "minQty": "1", "stepSize": "1" }, @@ -230238,21 +230514,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230280,7 +230558,8 @@ ], "triggerProtect": "0.1500", "underlyingSubType": [ - "DEFI" + "DEFI", + "BSC" ], "underlyingType": "COIN" }, @@ -230292,9 +230571,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "180", + "minPrice": "0.02600", + "tickSize": "0.00100" }, { "filterType": "LOT_SIZE", @@ -230304,7 +230583,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "400000", + "maxQty": "150000", "minQty": "1", "stepSize": "1" }, @@ -230314,21 +230593,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230355,7 +230636,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "BSC" + ], "underlyingType": "COIN" }, { @@ -230366,9 +230649,9 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "maxPrice": "6989", + "minPrice": "0.08000", + "tickSize": "0.01000" }, { "filterType": "LOT_SIZE", @@ -230378,7 +230661,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "800000", + "maxQty": "100000", "minQty": "1", "stepSize": "1" }, @@ -230388,21 +230671,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.015000", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230429,7 +230714,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "NFT" + ], "underlyingType": "COIN" }, { @@ -230441,8 +230728,8 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", - "tickSize": "0.00001" + "minPrice": "0.01760", + "tickSize": "0.00010" }, { "filterType": "LOT_SIZE", @@ -230452,7 +230739,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "500000", "minQty": "1", "stepSize": "1" }, @@ -230462,21 +230749,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230517,7 +230806,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "10000", - "minPrice": "0.001", + "minPrice": "1.437", "tickSize": "0.001" }, { @@ -230528,7 +230817,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "40000", + "maxQty": "8000", "minQty": "0.1", "stepSize": "0.1" }, @@ -230538,21 +230827,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1569398400000, "orderTypes": [ "LIMIT", @@ -230591,7 +230882,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00544", "tickSize": "0.00001" }, { @@ -230612,21 +230903,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1598252400000, "orderTypes": [ "LIMIT", @@ -230665,7 +230958,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.01398", "tickSize": "0.00001" }, { @@ -230676,7 +230969,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "1000000", + "maxQty": "300000", "minQty": "1", "stepSize": "1" }, @@ -230686,21 +230979,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1608274800000, "orderTypes": [ "LIMIT", @@ -230739,7 +231034,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.0001", + "minPrice": "0.0613", "tickSize": "0.0001" }, { @@ -230760,21 +231055,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1608879600000, "orderTypes": [ "LIMIT", @@ -230802,7 +231099,8 @@ ], "triggerProtect": "0.1500", "underlyingSubType": [ - "DEFI" + "DEFI", + "HOT" ], "underlyingType": "COIN" }, @@ -230814,8 +231112,8 @@ "filters": [ { "filterType": "PRICE_FILTER", - "maxPrice": "500000", - "minPrice": "0.1", + "maxPrice": "4529890", + "minPrice": "557.6", "tickSize": "0.1" }, { @@ -230826,7 +231124,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "20", + "maxQty": "15", "minQty": "0.001", "stepSize": "0.001" }, @@ -230836,11 +231134,11 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", @@ -230849,8 +231147,10 @@ "multiplierUp": "1.0500" } ], + "liquidationFee": "0.012000", "maintMarginPercent": "2.5000", "marginAsset": "BUSD", + "marketTakeBound": "0.05", "onboardDate": 1610352000000, "orderTypes": [ "LIMIT", @@ -230876,7 +231176,7 @@ "FOK", "GTX" ], - "triggerProtect": "0.1500", + "triggerProtect": "0.0500", "underlyingSubType": [], "underlyingType": "COIN" }, @@ -230889,7 +231189,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00048", "tickSize": "0.00001" }, { @@ -230900,7 +231200,7 @@ }, { "filterType": "MARKET_LOT_SIZE", - "maxQty": "7000000", + "maxQty": "3500000", "minQty": "1", "stepSize": "1" }, @@ -230910,21 +231210,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1610953200000, "orderTypes": [ "LIMIT", @@ -230956,80 +231258,6 @@ ], "underlyingType": "COIN" }, - { - "baseAsset": "DOTECO", - "baseAssetPrecision": 8, - "contractType": "PERPETUAL", - "deliveryDate": 4133404800000, - "filters": [ - { - "filterType": "PRICE_FILTER", - "maxPrice": "500000", - "minPrice": "0.1", - "tickSize": "0.1" - }, - { - "filterType": "LOT_SIZE", - "maxQty": "10000", - "minQty": "0.001", - "stepSize": "0.001" - }, - { - "filterType": "MARKET_LOT_SIZE", - "maxQty": "300", - "minQty": "0.001", - "stepSize": "0.001" - }, - { - "filterType": "MAX_NUM_ORDERS", - "limit": 200 - }, - { - "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 - }, - { - "filterType": "MIN_NOTIONAL", - "notional": "1" - }, - { - "filterType": "PERCENT_PRICE", - "multiplierDecimal": "4", - "multiplierDown": "0.9500", - "multiplierUp": "1.0500" - } - ], - "maintMarginPercent": "2.5000", - "marginAsset": "USDT", - "onboardDate": 1611129600000, - "orderTypes": [ - "LIMIT", - "MARKET", - "STOP", - "STOP_MARKET", - "TAKE_PROFIT", - "TAKE_PROFIT_MARKET", - "TRAILING_STOP_MARKET" - ], - "pair": "DOTECOUSDT", - "pricePrecision": 1, - "quantityPrecision": 3, - "quoteAsset": "USDT", - "quotePrecision": 8, - "requiredMarginPercent": "5.0000", - "settlePlan": 0, - "status": "TRADING", - "symbol": "DOTECOUSDT", - "timeInForce": [ - "GTC", - "IOC", - "FOK", - "GTX" - ], - "triggerProtect": "0.1500", - "underlyingSubType": [], - "underlyingType": "INDEX" - }, { "baseAsset": "CHZ", "baseAssetPrecision": 8, @@ -231039,7 +231267,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100", - "minPrice": "0.00001", + "minPrice": "0.00447", "tickSize": "0.00001" }, { @@ -231060,21 +231288,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1611212400000, "orderTypes": [ "LIMIT", @@ -231101,7 +231331,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "NFT" + ], "underlyingType": "COIN" }, { @@ -231113,7 +231345,7 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.00001", + "minPrice": "0.00494", "tickSize": "0.00001" }, { @@ -231134,21 +231366,23 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", + "marketTakeBound": "0.10", "onboardDate": 1610953200000, "orderTypes": [ "LIMIT", @@ -231175,7 +231409,9 @@ "GTX" ], "triggerProtect": "0.1500", - "underlyingSubType": [], + "underlyingSubType": [ + "NFT" + ], "underlyingType": "COIN" }, { @@ -231187,7 +231423,2157 @@ { "filterType": "PRICE_FILTER", "maxPrice": "100000", - "minPrice": "0.000001", + "minPrice": "0.001510", + "tickSize": "0.000010" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1611558000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ANKRUSDT", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ANKRUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "LUNA", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.1600", + "tickSize": "0.0010" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "30000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1611730800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "LUNAUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "LUNAUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "BTS", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00114", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "3000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1612076400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BTSUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "BTSUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "LIT", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.077", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "100000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1613545200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "LITUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "LITUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "UNFI", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "10000", + "minPrice": "0.222", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "20000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1612854000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "UNFIUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "UNFIUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI", + "BSC" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "DODO", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.033", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "300000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1613718000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "DODOUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "DODOUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI", + "BSC" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "REEF", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.000516", + "tickSize": "0.000001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1611558000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "REEFUSDT", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "REEFUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "RVN", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00154", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "3000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1614063600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "RVNUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "RVNUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "SFP", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0223", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "300000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1614150000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "SFPUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "SFPUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "XEM", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0035", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1614668400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "XEMUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "XEMUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BTCST", + "baseAssetPrecision": 8, + "contractType": "", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.668", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "1000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.8500", + "multiplierUp": "1.1500" + } + ], + "liquidationFee": "0.040000", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.30", + "onboardDate": 1614754800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BTCSTUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "PENDING_TRADING", + "symbol": "BTCSTUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "COTI", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00328", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "500000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615273200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "COTIUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "COTIUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "CHR", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0031", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615532400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "CHRUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "CHRUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "NFT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "MANA", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0136", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "100000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615705200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "MANAUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "MANAUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "NFT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "ALICE", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.120", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615791600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ALICEUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ALICEUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "NFT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "HBAR", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00279", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "300000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615964400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "HBARUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "HBARUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "ONE", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00124", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615964400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ONEUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ONEUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "LINA", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00087", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615964400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "LINAUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "LINAUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "BSC" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "STMX", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00048", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615964400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "STMXUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "STMXUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "DENT", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.000070", + "tickSize": "0.000001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1616482800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "DENTUSDT", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "DENTUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "CELR", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00050", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1617001200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "CELRUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "CELRUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "HOT", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.000129", + "tickSize": "0.000001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1617087600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "HOTUSDT", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "HOTUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "MTL", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0390", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "50000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1617174000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "MTLUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "MTLUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "OGN", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0137", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "100000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1617174000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "OGNUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "OGNUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "NFT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "BTT", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.000067", + "tickSize": "0.000001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1617692400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BTTUSDT", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "BTTUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "NKN", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00602", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "150000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1617865200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "NKNUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "NKNUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "SC", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.000368", + "tickSize": "0.000001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1618210800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "SCUSDT", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "SCUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "DGB", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00131", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "1500000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1618815600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "DGBUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "DGBUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "1000SHIB", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.000157", "tickSize": "0.000001" }, { @@ -231208,22 +233594,24 @@ }, { "filterType": "MAX_NUM_ALGO_ORDERS", - "limit": 100 + "limit": 10 }, { "filterType": "MIN_NOTIONAL", - "notional": "1" + "notional": "5" }, { "filterType": "PERCENT_PRICE", "multiplierDecimal": "4", - "multiplierDown": "0.8500", - "multiplierUp": "1.1500" + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" } ], + "liquidationFee": "0.007500", "maintMarginPercent": "2.5000", "marginAsset": "USDT", - "onboardDate": 1611558000000, + "marketTakeBound": "0.10", + "onboardDate": 1620630000000, "orderTypes": [ "LIMIT", "MARKET", @@ -231233,7 +233621,7 @@ "TAKE_PROFIT_MARKET", "TRAILING_STOP_MARKET" ], - "pair": "ANKRUSDT", + "pair": "1000SHIBUSDT", "pricePrecision": 6, "quantityPrecision": 0, "quoteAsset": "USDT", @@ -231241,7 +233629,1388 @@ "requiredMarginPercent": "5.0000", "settlePlan": 0, "status": "TRADING", - "symbol": "ANKRUSDT", + "symbol": "1000SHIBUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "ICP", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "3", + "tickSize": "0.01" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "100000", + "minQty": "0.01", + "stepSize": "0.01" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "10000", + "minQty": "0.01", + "stepSize": "0.01" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1620716400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ICPUSDT", + "pricePrecision": 2, + "quantityPrecision": 2, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ICPUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BAKE", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0500", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "30000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1621321200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BAKEUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "BAKEUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "GTC", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.200", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1615791600000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "GTCUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "GTCUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "ETH", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "306468", + "minPrice": "41.10", + "tickSize": "0.01" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "150", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.005000", + "maintMarginPercent": "2.5000", + "marginAsset": "BUSD", + "marketTakeBound": "0.05", + "onboardDate": 1623744000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ETHBUSD", + "pricePrecision": 2, + "quantityPrecision": 3, + "quoteAsset": "BUSD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ETHBUSD", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BTC", + "baseAssetPrecision": 8, + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "4568209", + "minPrice": "576.3", + "tickSize": "0.1" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "500", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "15", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.012000", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1623830400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BTCUSDT", + "pricePrecision": 1, + "quantityPrecision": 3, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "BTCUSDT_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.0500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "ETH", + "baseAssetPrecision": 8, + "contractType": "CURRENT_QUARTER", + "deliveryDate": 1632470400000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "308847", + "minPrice": "41.10", + "tickSize": "0.01" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "150", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.005000", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1623830400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ETHUSDT", + "pricePrecision": 2, + "quantityPrecision": 3, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ETHUSDT_210924", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BTCDOM", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "10", + "tickSize": "0.1" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "200", + "minQty": "0.001", + "stepSize": "0.001" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1623913200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BTCDOMUSDT", + "pricePrecision": 1, + "quantityPrecision": 3, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "BTCDOMUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "DEFI" + ], + "underlyingType": "INDEX" + }, + { + "baseAsset": "KEEP", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0040", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "500000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9000", + "multiplierUp": "1.1000" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.10", + "onboardDate": 1624172400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "KEEPUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "KEEPUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "TLM", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0040", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "500000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1626332400000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "TLMUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "TLMUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "BNB", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "6.600", + "tickSize": "0.010" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000", + "minQty": "0.01", + "stepSize": "0.01" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "150", + "minQty": "0.01", + "stepSize": "0.01" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "BUSD", + "marketTakeBound": "0.05", + "onboardDate": 1627372800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "BNBBUSD", + "pricePrecision": 3, + "quantityPrecision": 2, + "quoteAsset": "BUSD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "BNBBUSD", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "BSC", + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "ADA", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.01740", + "tickSize": "0.00010" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "25000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "BUSD", + "marketTakeBound": "0.05", + "onboardDate": 1627372800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "ADABUSD", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "BUSD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "ADABUSD", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "XRP", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0143", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "50000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "BUSD", + "marketTakeBound": "0.05", + "onboardDate": 1627372800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "XRPBUSD", + "pricePrecision": 4, + "quantityPrecision": 1, + "quoteAsset": "BUSD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "XRPBUSD", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "IOTX", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.00050", + "tickSize": "0.00001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "500000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1628665200000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "IOTXUSDT", + "pricePrecision": 5, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "IOTXUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "DOGE", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.002440", + "tickSize": "0.000010" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "10000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "200000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "BUSD", + "marketTakeBound": "0.05", + "onboardDate": 1627372800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "DOGEBUSD", + "pricePrecision": 6, + "quantityPrecision": 0, + "quoteAsset": "BUSD", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "DOGEBUSD", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [ + "HOT" + ], + "underlyingType": "COIN" + }, + { + "baseAsset": "AUDIO", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0040", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "18000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1629270000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "AUDIOUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "AUDIOUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "RAY", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.010", + "tickSize": "0.001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "0.1", + "stepSize": "0.1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1629270000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "RAYUSDT", + "pricePrecision": 3, + "quantityPrecision": 1, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "RAYUSDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "C98", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0010", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "100000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1629702000000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "C98USDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "C98USDT", + "timeInForce": [ + "GTC", + "IOC", + "FOK", + "GTX" + ], + "triggerProtect": "0.1500", + "underlyingSubType": [], + "underlyingType": "COIN" + }, + { + "baseAsset": "MASK", + "baseAssetPrecision": 8, + "contractType": "PERPETUAL", + "deliveryDate": 4133404800000, + "filters": [ + { + "filterType": "PRICE_FILTER", + "maxPrice": "100000", + "minPrice": "0.0040", + "tickSize": "0.0001" + }, + { + "filterType": "LOT_SIZE", + "maxQty": "1000000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MARKET_LOT_SIZE", + "maxQty": "5000", + "minQty": "1", + "stepSize": "1" + }, + { + "filterType": "MAX_NUM_ORDERS", + "limit": 200 + }, + { + "filterType": "MAX_NUM_ALGO_ORDERS", + "limit": 10 + }, + { + "filterType": "MIN_NOTIONAL", + "notional": "5" + }, + { + "filterType": "PERCENT_PRICE", + "multiplierDecimal": "4", + "multiplierDown": "0.9500", + "multiplierUp": "1.0500" + } + ], + "liquidationFee": "0.007500", + "maintMarginPercent": "2.5000", + "marginAsset": "USDT", + "marketTakeBound": "0.05", + "onboardDate": 1626418800000, + "orderTypes": [ + "LIMIT", + "MARKET", + "STOP", + "STOP_MARKET", + "TAKE_PROFIT", + "TAKE_PROFIT_MARKET", + "TRAILING_STOP_MARKET" + ], + "pair": "MASKUSDT", + "pricePrecision": 4, + "quantityPrecision": 0, + "quoteAsset": "USDT", + "quotePrecision": 8, + "requiredMarginPercent": "5.0000", + "settlePlan": 0, + "status": "TRADING", + "symbol": "MASKUSDT", "timeInForce": [ "GTC", "IOC", @@ -253871,29 +257640,6 @@ }, "/fapi/v1/ticker/24hr": { "GET": [ - { - "data": { - "closeTime": 1602996791974, - "count": 438593, - "firstId": 229775818, - "highPrice": "11424.09", - "lastId": 230214414, - "lastPrice": "11367.04", - "lastQty": "0.001", - "lowPrice": "11250.00", - "openPrice": "11341.44", - "openTime": 1602910380000, - "priceChange": "25.60", - "priceChangePercent": "0.226", - "quoteVolume": "1046590505.00", - "symbol": "BTCUSDT", - "volume": "92260.968", - "weightedAvgPrice": "11343.81" - }, - "queryString": "symbol=BTCUSDT", - "bodyParams": "", - "headers": {} - }, { "data": { "code": -1121, @@ -255457,6 +259203,29 @@ "queryString": "", "bodyParams": "", "headers": {} + }, + { + "data": { + "closeTime": 1630042423017, + "count": 4084092, + "firstId": 1373117969, + "highPrice": "47688.88", + "lastId": 1377202095, + "lastPrice": "47028.59", + "lastQty": "0.023", + "lowPrice": "46280.00", + "openPrice": "47184.22", + "openTime": 1629955980000, + "priceChange": "-155.63", + "priceChangePercent": "-0.330", + "quoteVolume": "22175129357.20", + "symbol": "BTCUSDT", + "volume": "471823.103", + "weightedAvgPrice": "46998.82" + }, + "queryString": "symbol=BTCUSDT", + "bodyParams": "", + "headers": {} } ] }, @@ -310373,6 +314142,24040 @@ } ] }, + "/sapi/v1/capital/config/getall": { + "GET": [ + { + "data": [ + { + "coin": "STPT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "STPT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "370", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "740" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MXN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "MXN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UGX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "UGX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RENBTC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RENBTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0000051", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.00001" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RENBTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00048", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.00096" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GLM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GLM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "100" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RAY", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[0-9a-zA-Z]{32,44}$", + "coin": "RAY", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "SOL", + "resetAddressStatus": false, + "specialTips": "The Solana blockchain will retain 0.00203928 SOL for your first token deposit. The following deposits will not be charge for any fee.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.11", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.22" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "NEAR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "NEAR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.05", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NEAR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.05", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^[a-z0-9_-]{1}[a-z0-9_.-]{0,62}[a-z0-9_-]{1}$", + "coin": "NEAR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEAR", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AUDIO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AUDIO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "9.54", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "19" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(1)[0-9A-za-z]{50}$", + "coin": "HNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "HNT", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.05", + "withdrawIntegerMultiple": "0", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ADADOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "ADADOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "CDT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "895", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1790" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SPARTA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "SPARTA", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.49", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.98" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SPARTA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SUSD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FARM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FARM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0011", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.0022" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FARM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AION", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{64}$", + "coin": "AION", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 60, + "name": "", + "network": "AION", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.2" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AION", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "123", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "246" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NPXS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NPXS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3963", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "7926" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DGB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[DS][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(dgb1)[0-9A-Za-z]{39,59}$", + "coin": "DGB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "DGB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 50, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ZRX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ZRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "21", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "42" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BCD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$", + "coin": "BCD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 6, + "name": "", + "network": "BCD", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EASY", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EASY", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.017", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.034" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EASY", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.62", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "3.24" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WING", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "WING", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ONT", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0022", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0044" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AE", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^ak_[A-Za-z0-9]{47,52}$", + "coin": "AE", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1000, + "name": "", + "network": "AE", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 1100, + "withdrawEnable": false, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AE", + "depositDesc": "Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "237", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "474" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "WNXM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WNXM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.32", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.64" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BCH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[0-9A-Za-z]{42,42}$", + "coin": "BCH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 2, + "name": "", + "network": "BCH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 6, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.002" + }, + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BCH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BCH BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0004", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0008" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BCH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0004", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0008" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BCH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "This deposit address supports ERC20 BBCH tokens. Please ensure your destination address supports BBCH tokens under the contract address ending in 65f1b.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.037", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.074" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "JST", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "JST", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.56", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "7.12" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "JST", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "100" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ADAUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "ADAUP", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "HOT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "HOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Holo (HOT). Please ensure you are depositing Holo (HOT) tokens under the contract address ending in 526e2.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2238", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "4476" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[0-9a-z-A-Z\\-\\_]{43}$", + "coin": "AR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 20, + "name": "", + "network": "AR", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.03", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "9999999", + "withdrawMin": "0.1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IRIS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(iaa1)[0-9a-z]{38}$", + "coin": "IRIS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "IRIS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your IRIS to Binance", + "unLockConfirm": 15, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RAMP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RAMP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.81", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.62" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RAMP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "75", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "150" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BCX", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(X)[0-9A-za-z]{33}$", + "coin": "BCX", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 2, + "name": "", + "network": "BCX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.5" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SEK", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "SEK", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "TRIG", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$", + "coin": "TRIG", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 2, + "name": "", + "network": "TRIG", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "51" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "RCN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RCN", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Ripio Credit Network. Please ensure you are depositing Ripio Credit Network (RCN) tokens under the contract address ending in 375a6.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "580", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1160" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "COVER", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COVER", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Please ensure you are depositing ERC20 COVER tokens under the contract address ending in Bd8713", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.074", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.15" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FLM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "FLM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VITE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VITE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "5.6" + }, + { + "addressRegex": "^(vite_)[a-z0-9]{50}$", + "coin": "VITE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "\\w{0,120}", + "minConfirm": 150, + "name": "", + "network": "VITE", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your VITE to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BKRW", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BKRW", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-BKRW tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CFX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CFX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.6" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XPR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XPR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SFP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SFP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.3" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DIA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DIA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.12", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.24" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DIA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "11", + "withdrawIntegerMultiple": "0.0000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "22" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RDN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RDN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "45", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "90" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ARDR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(ARDOR-)[0-9A-Za-z]{4}(-)[0-9A-Za-z]{4}(-)[0-9A-Za-z]{4}(-)[0-9A-Za-z]{5}$", + "coin": "ARDR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "ARDR", + "resetAddressStatus": false, + "specialTips": "Both a MSG and an Address are required to successfully deposit your ARDR to Binance. When depositing, please send your message unencrypted", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CLOAK", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[C|B][A-Za-z0-9]{33}$", + "coin": "CLOAK", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 5, + "name": "", + "network": "CLOAK", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "LOOMOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LOOMOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "115", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "230" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "NEBL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^N[A-Za-z0-9]{33}$", + "coin": "NEBL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 24, + "name": "", + "network": "NEBL", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SLPOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SLPOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Small Love Potion. Please ensure you are depositing SLP (ERC20) tokens under the contract address ending in 3dcf1.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "10000000000", + "withdrawMin": "614" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BEL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BEL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.098", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BEL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.098", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BEL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "9.14", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "18" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "JUV", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "JUV", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "Only BSC network supported. Please ensure your deposit is made on the BSC network.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "JUV", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ACM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ACM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MINA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(B62)[A-Za-z0-9]{52}$", + "coin": "MINA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 20, + "name": "", + "network": "MINA", + "resetAddressStatus": false, + "specialTips": "We have assigned dedicated MINA deposit address for you. Mina blockchain will burn 1 MINA for your first deposit to activate the new address. The following deposits will not be charge for any fee.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.0000001", + "withdrawMax": "9999999", + "withdrawMin": "2.5" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GRTDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "GRTDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "VTHO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VTHO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "VET", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "200", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "400" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SALT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SALT", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10.4" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "STORM", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "STORM", + "depositDesc": "Network Swap, Deposit Closed", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "100", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "200" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "REN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "REN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "41", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "82" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "REP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "REP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Token has been upgraded to Augur v2, please do not deposit old Augur tokens into your Binance wallet", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.87", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.74" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ADA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(([0-9A-Za-z]{57,59})|([0-9A-Za-z]{100,104}))$", + "coin": "ADA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 300, + "name": "", + "network": "ADA", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "999998", + "withdrawMin": "8" + }, + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ADA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.094", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.19" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ADA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.094", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.19" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ELF", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ELF", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.72", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.44" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ELF", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.72", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.44" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ELF", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "66", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "132" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "REQ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "REQ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "96", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "192" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "STORJ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "STORJ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "16", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "32" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CHF", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "CHF", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BZRX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BZRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.67", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.34" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BZRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "62", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "124" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ADD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[1-5a-z\\.]{1,12}$", + "coin": "ADD", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_,]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "EOS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ADD to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "100", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "200" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SGT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SGT", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "200", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "400" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DF", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DF", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.33", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.66" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DF", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "123", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "246" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EOSDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "EOSDOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "PAXG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PAXG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.012", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.024" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "YOYO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "YOYO", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "1078", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2156" + }, + { + "addressRegex": "^[0-9]{5,20}$", + "coin": "YOYO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "YOYO", + "resetAddressStatus": false, + "specialTips": "The name of this asset is YOYOW (YOYO). Both a MEMO and an Address are required to successfully deposit your YOYO to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PAX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "PAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CHR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CHR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.63", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.26" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CHR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Token has been upgraded to New contract, please do not deposit old tokens into your Binance wallet", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "59", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "118" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "VND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BCHDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BCHDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "WAVES", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(3P)[0-9A-Za-z]{33}$", + "coin": "WAVES", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "WAVES", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.004" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CHZ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "CHZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your CHZ BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.68", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.36" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CHZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "63", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "126" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ADX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ADX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.43", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.86" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ADX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Token has been upgraded to New contract, please do not deposit old tokens into your Binance wallet", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "40", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "80" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XRP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "XRP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your XRP BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.22", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.44" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XRP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.22", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.44" + }, + { + "addressRegex": "^r[1-9A-HJ-NP-Za-km-z]{25,34}$", + "coin": "XRP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^((?!0)[0-9]{1,19})$", + "minConfirm": 1, + "name": "", + "network": "XRP", + "resetAddressStatus": false, + "specialTips": "Both a Tag and an Address are required to successfully deposit your XRP to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.25", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "20.25" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WPR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WPR", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1612", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "3224" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AED", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "AED", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SAND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SAND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "33", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "66" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DKK", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "DKK", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "OCEAN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OCEAN", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.58" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OCEAN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "27", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "54" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FOR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FOR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "6.4" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FOR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "298", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "596" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UMA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UMA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.86", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "3.72" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DREPOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DREPOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "661", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1322" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SCRT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SCRT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.3" + }, + { + "addressRegex": "^(secret1)[0-9a-z]{38}$", + "coin": "SCRT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "SCRT", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your SCRT to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TUSD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-TUSDB tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.24", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.48" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EZ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.04", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.08" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.69", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "7.38" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TKO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TKO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.088", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.18" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TKO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.088", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.18" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WABI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WABI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "93", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "186" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IDRT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "IDRT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your IDRT BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3489", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9900000000", + "withdrawMin": "6978" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IDRT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "325164", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9900000000", + "withdrawMin": "650328" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ENG", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ENG", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ENJ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ENJ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "12", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "24" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UNIDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "UNIDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "YFII", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "YFII", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your YFII BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00006", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.00012" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "YFII", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00006", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.00012" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "YFII", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0056", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.011" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KZT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "KZT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "OAX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.3", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.6" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "121", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "242" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GRT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GRT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "26", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "52" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GRS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "(F|3)[0-9A-za-z]{33}|grs1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39}", + "coin": "GRS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 5, + "name": "", + "network": "GRS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "UND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your UND BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UND", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "Swap to the BEP2 network, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HARD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "HARD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.21", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.42" + }, + { + "addressRegex": "^(kava1)[0-9a-z]{38}$", + "coin": "HARD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "KAVA", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your KAVA-HARD to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TFUEL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TFUEL", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.74", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "1.48" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TFUEL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "THETA", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.4", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4.8" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LEND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LEND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "You can deposit LEND and convert it to AAVE", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "DLT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DLT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "223", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "446" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TROY", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TROY", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your TROY BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "50" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TROY", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2401", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4802" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XLMUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "XLMUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "UNI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "UNI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0094", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.019" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UNI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0093", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.019" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UNI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.87", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.74" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BTCDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BTCDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "TLM", + "depositAllEnable": true, + "free": "0.00064461", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TLM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.82", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.64" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TLM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "126", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "252" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HUF", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "HUF", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SBTC", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$", + "coin": "SBTC", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 2, + "name": "", + "network": "SBTC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.001" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CKB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^ckb1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{8,}", + "coin": "CKB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 24, + "name": "", + "network": "CKB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "999999999", + "withdrawMin": "100" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WRX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "WRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.34" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.34" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XTZ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "XTZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.055", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.11" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XTZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^(tz[1,2,3]|KT1)[a-zA-Z0-9]{33}$", + "coin": "XTZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "XTZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LUNA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(terra1)[0-9a-z]{38}$", + "coin": "LUNA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "LUNA", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "5" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETHDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "ETHDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "AGI", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AGI", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "83", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "166" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "EON", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EON", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EOP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EOP", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EOS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "EOS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.051", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EOS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.051", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^[1-5a-z\\.]{1,12}$", + "coin": "EOS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_,]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "EOS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your EOS to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "GO", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NCASH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NCASH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "8275", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "16550" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RIF", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RIF", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "RSK", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 500, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "6" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EOSBULL", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "EOSBULL", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0032", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0064" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EOSBULL", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "NSBT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(3P)[0-9A-Za-z]{33}$", + "coin": "NSBT", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "WAVES", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0027", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0054" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SKL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SKL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "119", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "238" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GTC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "8.5" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PEN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "PEN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BLINK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BLINK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BLINK BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "100" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BLINK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "Swap to the BEP2 network, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "100" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SXPDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "SXPDOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "HC", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[H][a-km-zA-HJ-NP-Z1-9]{26,35}$", + "coin": "HC", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "HC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SKY", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[0-9A-Za-z]{26,35}$", + "coin": "SKY", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "SKY", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.04" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BURGER", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BURGER", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.046", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.092" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BURGER", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.046", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.092" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NAS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^n1[a-zA-Z0-9]{33}$", + "coin": "NAS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "NAS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NAV", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NAV", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1" + }, + { + "addressRegex": "^((N)[0-9A-za-z]{33})|((X|Y)[0-9A-za-z]{60})|((4)[0-9A-za-z]{88})$", + "coin": "NAV", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 20, + "name": "", + "network": "NAV", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GTO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "GTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your GTO BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.94", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "9.88" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "460", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "920" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WTC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "22", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "44" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "WTC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XVG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(D)[A-Za-z0-9]{33}$", + "coin": "XVG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "XVG", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 120, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EPS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "EPS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.58" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EPS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.58" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TNB", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TNB", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "7343", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "14686" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "DNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "440", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "880" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BULL", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BULL", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0000001" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BULL", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0000001" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "CLV", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CLV", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.16", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.32" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CLV", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FLOW", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{16}$", + "coin": "FLOW", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 20, + "name": "", + "network": "FLOW", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XTZDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "XTZDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "XVS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "XVS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.0076", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.015" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XVS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0076", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.015" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "STEEM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[a-z][a-z0-9-.]{0,14}[a-z0-9]$", + "coin": "STEEM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "STEEM", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your STEEM to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BVND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BVND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5707", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "11414" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SLP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SLP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.73", + "withdrawIntegerMultiple": "1", + "withdrawMax": "10000000000", + "withdrawMin": "3.46" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SLP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Smooth Love Potion. Please ensure you are depositing SLP (ERC20) tokens under the contract address ending in AAa25.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "161", + "withdrawIntegerMultiple": "1", + "withdrawMax": "10000000000", + "withdrawMin": "322" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SLP", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "RON", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VRT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VRT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "47", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "94" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NBS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[a-z]{1}[a-z0-9-\\.]{2,62}$", + "coin": "NBS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NBS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your NBX to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DON", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[A-Za-z0-9_]{5,11}$", + "coin": "DON", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 13, + "name": "", + "network": "IOST", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 80, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.012", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.024" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DOT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "DOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0099", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0099", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + }, + { + "addressRegex": "^(1)[0-9a-z-A-Z]{44,50}$", + "coin": "DOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 3, + "name": "", + "network": "DOT", + "resetAddressStatus": false, + "specialTips": "Please note that we currently do not support deposits for staking rewards.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.5" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "This deposit address supports ERC20 BDOT tokens. Please ensure your destination address supports BDOT tokens under the contract address ending in AeE0B.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.92", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.84" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IQ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[1-5a-z\\.]{1,12}$", + "coin": "IQ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_,]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "EOS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your IQ to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.001", + "withdrawMax": "10000000000", + "withdrawMin": "100" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CMT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CMT", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 5, + "name": "", + "network": "CMT", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "GRTUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "GRTUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "1INCH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "1INCH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.083", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.17" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "1INCH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "7.71", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "15" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KNCL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KNCL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "4", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "8" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "XRPBULL", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "XRPBULL", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0028" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XRPBULL", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.076", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.15" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "MITH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "MITH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your MITH BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.43", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "8.86" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MITH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "412", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "824" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ERD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ERD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ERD BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ERD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "You can deposit ERD and convert it to EGLD", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1000", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1500" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DEGO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DEGO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "Please note that DEGO will burn 0.2% of your transferred amount. For more information: https://docs.dego.finance/token", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.024", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.048" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DEGO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Please note that DEGO will burn 0.2% of your transferred amount. For more information: https://docs.dego.finance/token", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.19", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4.38" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1355", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2710" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GYEN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GYEN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1098", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "10010000000", + "withdrawMin": "2196" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UNFI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "UNFI", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.04" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UNFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Unifi Protocol DAO. Please ensure you are depositing Unifi Protocol DAO (UNFI) tokens under the contract address ending in 14d8b.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.04" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UNFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Unifi Protocol DAO. Please ensure you are depositing Unifi Protocol DAO (UNFI) tokens under the contract address ending in 822c2.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.88", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "3.76" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FTM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "FTM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your FTM BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.56", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.12" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FTM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.56", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.12" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FTM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "This deposit address supports ERC20 tokens, it does not support mainnet tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "51", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "102" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FTM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "FTM", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "POWR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POWR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "71", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "142" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ERN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ERN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.43", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "2.86" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GVT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GVT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.91", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "9.82" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WINGS", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WINGS", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "20", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "40" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FTT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FTT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.48", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.96" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PHA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PHA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.3", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.6" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PHA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "27", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "54" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RLC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RLC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5.04", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PHB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "PHB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your PHB BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "50" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PHB", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "50" + }, + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "PHB", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEO", + "resetAddressStatus": false, + "specialTips": "Deposit NEP5-PHX tokens. Tokens will be automatically converted to BEP2-PHB tokens.", + "unLockConfirm": 5, + "withdrawDesc": "Swap to the BEP2 network, NEP5 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "3", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "6" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TRXDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "TRXDOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ATOM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(cosmos1)[0-9a-z]{38}$", + "coin": "ATOM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 10, + "name": "", + "network": "ATOM", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ATOM to Binance", + "unLockConfirm": 15, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.005", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + }, + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ATOM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ATOM BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.028" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ATOM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.028" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XRPUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "XRPUP", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "QUICK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "QUICK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.037", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.074" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "QUICK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 128, + "name": "", + "network": "MATIC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00023", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.00046" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BLZ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BLZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Bluzelle. Please ensure you are depositing Bluzelle (BLZ) tokens under the contract address ending in acda2.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.09", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2.18" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BLZ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Bluzelle. Please ensure you are depositing Bluzelle (BLZ) tokens under the contract address ending in fd668.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "101", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "202" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SNM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.83", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.66" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "77", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "154" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MBL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "MBL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ONT", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5.46", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BNBUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BNBUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "MTLX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MTLX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "3" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "242", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "484" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PHP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "PHP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SNX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "SNX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.021", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.042" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.021", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.042" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.83", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "7.66" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LTCDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "LTCDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "FUN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FUN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "729", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1458" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SNMOLD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNMOLD", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "263", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "526" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "COS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "COS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your COS BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "9.98", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "19" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "9.98", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "19" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "930", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1860" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "USD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "USD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "QKC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "QKC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "11", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "22" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "QKC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "This address is for ERC20 token deposits only. Please do not deposit Mainnet tokens to this address.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1103", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2206" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SUSHIUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "SUSHIUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ROSE", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(oasis1)[0-9a-z]{40}$", + "coin": "ROSE", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ROSE", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "XYM", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[N]{1}[0-9A-Z]{38}$", + "coin": "XYM", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 20, + "name": "", + "network": "XYM", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SOL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SOL", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.003", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.006" + }, + { + "addressRegex": "^[0-9a-zA-Z]{32,44}$", + "coin": "SOL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "SOL", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "TRXUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "TRXUP", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ETC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ETC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.004", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.008" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.004", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.008" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 70, + "name": "", + "network": "ETC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 500, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETF", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETF", + "depositDesc": "Waiting for wallet development of ETF team", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Waiting for wallet development of ETF team", + "withdrawEnable": false, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BNB", + "depositAllEnable": true, + "free": "0.02506234", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BNB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BNB Mainnet tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BNB", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BNB", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.12" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CELR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CELR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5.72", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "11" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CELR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "533", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1066" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "OGN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OGN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "21", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "42" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ETH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ETH BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.000077", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00015" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.000077", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00015" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0035", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.007" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NEO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "NEO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TOMO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TOMO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your TOMO BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.079", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.16" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TOMO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "7.41", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "14" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TOMO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 60, + "name": "", + "network": "TOMO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CELO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CELO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "CELO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.002" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KLAY", + "depositAllEnable": true, + "free": "0.00000974", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KLAY", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "KLAY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.005", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AUCTION", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AUCTION", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0077", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.015" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AUCTION", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.72", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.44" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BADGER", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BADGER", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.07", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.14" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GXS", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[a-z]{1}[a-z0-9-.]{2,62}$", + "coin": "GXS", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "GXS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your GXS to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.3", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "10000000000", + "withdrawMin": "0.6" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TRB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TRB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.45", + "withdrawIntegerMultiple": "0", + "withdrawMax": "10000000000", + "withdrawMin": "0.9" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.057", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.11" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5.32", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "QLC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "QLC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LBA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "LBA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your LBA BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LBA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "Swap to the BEP2 network, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MDA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MDA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.28", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.56" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MDA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "50" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UTK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UTK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "53", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "106" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EOSBEAR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "EOSBEAR", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.00041", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00082" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EOSBEAR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.022", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.044" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "HEGIC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "HEGIC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "148", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "296" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AMB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AMB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "AMB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0", + "withdrawMax": "10000000000", + "withdrawMin": "2" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AMB", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "558", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1116" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TRU", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TRU", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.46", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.92" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TRU", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "42", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "84" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WBNB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WBNB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FUEL", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FUEL", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "564", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1128" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DREP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DREP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.32", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.64" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DREP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "58" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TRY", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "TRY", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TRX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-TRXB tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.91", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "5.82" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.91", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "5.82" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "271", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "542" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "TRX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9900000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MDT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5.85", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "11" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "545", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1090" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NFT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NFT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "44295", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999", + "withdrawMin": "88590" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "NFT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "16800", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999", + "withdrawMin": "33600" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MDX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MDX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.34" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MDX", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "XRPDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "XRPDOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "AERGO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "AERGO", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "1.09", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.18" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AERGO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "101", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "202" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EUR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "EUR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BOT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0002" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BOT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0094", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.019" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "NULS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NULS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.41", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.82" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NULS", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "38", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "76" + }, + { + "addressRegex": "^NULS[a-km-zA-HJ-NP-Z1-9]{33,33}$", + "coin": "NULS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "NULS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AUTO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AUTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00018", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00036" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NGN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "NGN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EGLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EGLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0018", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0036" + }, + { + "addressRegex": "^(erd)[a-z-A-Z0-9]{59}$", + "coin": "EGLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "EGLD", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ANTOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ANTOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "You can deposit ANTOLD and convert it to ANT", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "PUNDIX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PUNDIX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "13", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "26" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FXS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FXS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.039", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.078" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FXS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.6", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "7.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HNST", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "HNST", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your HNST BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "HNST", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "Swap to the BEP2 network, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EVX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EVX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.48", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.96" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EVX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "44", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "88" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CRV", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CRV", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BAKE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BAKE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.088", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.18" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAKE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.088", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.18" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ANT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ANT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.82", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "9.64" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NU", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NU", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "77", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "154" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LINKUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "LINKUP", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SRM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SRM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.3", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "6.6" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TORN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TORN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.32", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.64" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PLN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "PLN", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "QNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "QNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.12", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.24" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETHBEAR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ETHBEAR", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00001" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETHBEAR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0001" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ALICE", + "depositAllEnable": true, + "free": "0.00001193", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ALICE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.013", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.026" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ALICE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.22", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.44" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "OG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OG", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.04" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MFT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MFT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1895", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "3790" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "OM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.08", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2.16" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "100", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "200" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BETH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BETH", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00008", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.00016" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BETH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.0074", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.015" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BQX", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BQX", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "4.64", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "9.28" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "WETH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WETH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BRD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BRD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "125", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "250" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BUSD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BUSD BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BUSD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "16" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CTK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "CTK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.11", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.22" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CTK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.11", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.22" + }, + { + "addressRegex": "^(certik1)[0-9a-z]{38}$", + "coin": "CTK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "CTK", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ARPA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ARPA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.54", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "7.08" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ARPA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.53", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "7.06" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ARPA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "329", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "658" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DOTDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "DOTDOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BRL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BRL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CTR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CTR", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "35", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "70" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MATIC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "MATIC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your MATIC BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.34" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MATIC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.34" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MATIC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "16", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "32" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MATIC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 128, + "name": "", + "network": "MATIC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IOTX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "IOTX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.26", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "6.52" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IOTX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.26", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "6.52" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IOTX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + }, + { + "addressRegex": "io1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38}", + "coin": "IOTX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "IOTX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SHIB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SHIB", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "34859", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999", + "withdrawMin": "69718" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SHIB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3227314", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "50000000000", + "withdrawMin": "6454628" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TVK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TVK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "76", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "152" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FRONT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FRONT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.4" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FRONT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "18", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "36" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ZAR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "ZAR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "DOCK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(3)[0-9a-z-A-Z]{44,50}$", + "coin": "DOCK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 5, + "name": "", + "network": "DOCK", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DOCK", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "STX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(SP)([0123456789ABCDEFGHJKMNPQRSTVWXYZ]+)$", + "coin": "STX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[a-zA-Z0-9]{0,34}$", + "minConfirm": 6, + "name": "", + "network": "STX", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Stacks (STX). Both a MEMO and an Address are required to successfully deposit your STX to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "10000000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PNT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.46" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PNT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "21", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "42" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DENT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DENT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3883", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "7766" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "QI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[Q|M][A-Za-z0-9]{33}$", + "coin": "QI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 6, + "name": "", + "network": "QTUM", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.46" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MBOX", + "depositAllEnable": true, + "free": "0.00000511", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MBOX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.026", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.052" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BNBBEAR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BNBBEAR", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.011", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.022" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SUB", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUB", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "40", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "40" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "POA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POA", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "616", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1232" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "POA", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IOST", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IOST", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "515", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1030" + }, + { + "addressRegex": "^[A-Za-z0-9_]{5,11}$", + "coin": "IOST", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 13, + "name": "", + "network": "IOST", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your IOST to Binance", + "unLockConfirm": 80, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CAKE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "CAKE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0096", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.019" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CAKE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0096", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.019" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETHUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "ETHUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "POE", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POE", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "41615", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "83230" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "OMG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OMG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.79", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "7.58" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BAND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(band1)[0-9a-z]{38}$", + "coin": "BAND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 15, + "name": "", + "network": "BAND", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BAND to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + }, + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BAND", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.029", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.058" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAND", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.029", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.058" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAND", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.68", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "5.36" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SUN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUN", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "8.08", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "16" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "SUN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.78", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "5.56" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SUNOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "SUNOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "The name of this asset is SUN. Please ensure you are depositing under the contract address ending in RDMf9.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0027", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0058" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BTC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-BTCB tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0000051", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00001" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0000051", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00001" + }, + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(bc1)[0-9A-Za-z]{39,59}$", + "coin": "BTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "BTC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 2, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "750", + "withdrawMin": "0.001" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "This deposit address supports ERC20 BBTC tokens. Please ensure your destination address supports BBTC tokens under the contract address ending in 22541.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00047", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.00094" + }, + { + "addressRegex": "", + "coin": "BTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "SEGWITBTC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 2, + "withdrawEnable": false, + "withdrawFee": "0.0005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.001" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TWT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TWT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.58" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TWT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.58" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NKN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NKN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "55", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "110" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RSR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RSR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "465", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "930" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IOTA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IOTA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.25", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.5" + }, + { + "addressRegex": "^(iota)[0-9a-z]{60}$", + "coin": "IOTA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "IOTA", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.5", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.5" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CVC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CVC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "70", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "140" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "REEF", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "REEF", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "REEF", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "988", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1976" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BTG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[AG][a-km-zA-HJ-NP-Z1-9]{25,34}$", + "coin": "BTG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "BTG", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Bitcoin Gold. Please ensure you are depositing Bitcoin Gold (BTG) tokens.", + "unLockConfirm": 70, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.002" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MIR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MIR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.065", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "10000000000", + "withdrawMin": "0.13" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MIR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "10000000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KES", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "KES", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ARK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "ARK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 51, + "name": "", + "network": "ARK", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CVP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CVP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.3" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CVP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "14", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "28" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ARN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ARN", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ARN BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.26", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.52" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ARN", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "34" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KEY", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KEY", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Selfkey. Please ensure you are depositing Selfkey (KEY) tokens under the contract address ending in 296e7.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2440", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4880" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BTS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[a-z]{1}[a-z0-9-\\.]{2,62}$", + "coin": "BTS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "BTS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BTS to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SPARTAOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SPARTAOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ARS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "ARS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BTT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BTT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-BTTB tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "61", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "122" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BTT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "61", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "122" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "BTT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "21", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "42" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ONE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ONE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ONE BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, BEP2 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "8" + }, + { + "addressRegex": "^(one1)[a-z0-9]{38}$", + "coin": "ONE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ONE", + "resetAddressStatus": false, + "specialTips": "Sending and receiving addresses must both be using shard0 for you to successfully deposit ONE tokens to your Binance account", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "60" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LINKDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "LINKDOWN", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ONG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "ONG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ONT", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.049", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.098" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ANKR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ANKR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ANKR BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.37", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4.74" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ANKR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.37", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "4.74" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ANKR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "220", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "440" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SUSHI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "SUSHI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.021", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.042" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUSHI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.021", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.042" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUSHI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.94", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "3.88" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ALGO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[A-Z0-9]{58,58}$", + "coin": "ALGO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ALGO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[A-Za-z0-9]{76}$", + "coin": "SC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 6, + "name": "", + "network": "SC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WBTC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WBTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00047", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00094" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ONT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ONT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ONT BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.46" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ONT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.46" + }, + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "ONT", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEO", + "resetAddressStatus": false, + "specialTips": "Deposit NEP5 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 5, + "withdrawDesc": "Network Swapped, NEP5 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + }, + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "ONT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ONT", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "1", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PPT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PPT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "8.93", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "17" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ONX", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ONX", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.79", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "7.58" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RUB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "RUB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PIVX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(D)[0-9A-za-z]{33}$", + "coin": "PIVX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 60, + "name": "", + "network": "PIVX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ASR", + "depositAllEnable": true, + "free": "0.00000014", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ASR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.04" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ASR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FIRO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FIRO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.032", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.064" + }, + { + "addressRegex": "^[a|Z|3|4][0-9A-za-z]{33}$", + "coin": "FIRO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "FIRO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 25, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.04" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AXSOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AXSOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Axie Infinity. Please ensure you are depositing AXS (ERC20) tokens under the contract address ending in a5ada.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "15" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "AST", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AST", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "108", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "10000000000", + "withdrawMin": "216" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MANA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MANA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "50" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DOTUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "DOTUP", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ATA", + "depositAllEnable": true, + "free": "0.00018817", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ATA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Automata. Please ensure you are depositing Automata (ATA) tokens under the contract address ending in 41225.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.18", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.36" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ATA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "34" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MEETONE", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[1-5a-z\\.]{1,12}$", + "coin": "MEETONE", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_,]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "EOS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "300", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "600" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "QSP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "QSP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "504", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1008" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ATD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[1-5a-z\\.]{1,12}$", + "coin": "ATD", + "depositDesc": "Contract Frozen, Waiting for Upgrade", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_,]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "EOS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Contract Frozen, Waiting for Upgrade", + "withdrawEnable": false, + "withdrawFee": "100", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "200" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "NMR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "NMR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.54", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.08" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MKR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "MKR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.000066", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00013" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MKR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.000066", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00013" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MKR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0061", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.012" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DODO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DODO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.13", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "10000000000", + "withdrawMin": "0.26" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DODO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "12", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "24" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LIT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LIT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Litentry. Please ensure you are depositing Litentry (LIT) tokens under the contract address ending in f9723.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.05", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LIT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Litentry. Please ensure you are depositing Litentry (LIT) tokens under the contract address ending in f9723.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.62", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "9.24" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ICP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ICP", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0043", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.0086" + }, + { + "addressRegex": "^[0-9a-zA-Z]{64}$", + "coin": "ICP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ICP", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0003", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.001" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ZEC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ZEC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ZEC BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0017", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0034" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ZEC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0017", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0034" + }, + { + "addressRegex": "^(t)[A-Za-z0-9]{34}$", + "coin": "ZEC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "ZEC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 12, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ATM", + "depositAllEnable": true, + "free": "0.00000011", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ATM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.04" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ATM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "APPC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "APPC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "253", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "506" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "JEX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "JEX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "50", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "100" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ICX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(hx)[A-Za-z0-9]{40}$", + "coin": "ICX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 3, + "name": "", + "network": "ICX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.04" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LOOM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LOOM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.4", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4.8" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LOOM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "223", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "446" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ZEN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(z)[0-9A-za-z]{34}$", + "coin": "ZEN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ZEN", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 80, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.004" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KP3R", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KP3R", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.13", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.26" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DOGE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "DOGE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.89", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.78" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DOGE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.89", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.78" + }, + { + "addressRegex": "^(D|A|9)[a-km-zA-HJ-NP-Z1-9]{33,34}$", + "coin": "DOGE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 6, + "name": "", + "network": "DOGE", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 50, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "25" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DUSK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "DUSK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your DUSK BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.62", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "3.24" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DUSK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.62", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "3.24" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DUSK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "150", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "300" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ALPHA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ALPHA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.46" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ALPHA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "21", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "42" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BOLT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BOLT", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BOLT BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BOLT", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SXP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "SXP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.065", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.13" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SXP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.065", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.13" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SXP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "6.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "12" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HBAR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^0.0.\\d{1,6}$", + "coin": "HBAR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "HBAR", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your HBAR to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "RVN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[Rr]{1}[A-Za-z0-9]{33,34}$", + "coin": "RVN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "RVN", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 200, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MLN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MLN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AUD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "AUD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NANO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(xrb_|nano_)[13456789abcdefghijkmnopqrstuwxyz]{60}", + "coin": "NANO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NANO", + "resetAddressStatus": false, + "specialTips": "Minimum deposit amount: 0.001 NANO. Any deposits less than the minimum will not be credited or refunded.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IDR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "IDR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "CTSI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CTSI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.33", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.66" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CTSI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "30", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "60" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KAVA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "KAVA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your KAVA to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.032", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.064" + }, + { + "addressRegex": "^(kava1)[0-9a-z]{38}$", + "coin": "KAVA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "KAVA", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your KAVA to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "C98", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "C98", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.05", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "C98", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.67", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "9.34" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PSG", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PSG", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "Only BSC network supported. Please ensure your deposit is made on the BSC network.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PSG", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HCC", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(H)[A-Za-z0-9]{33}$", + "coin": "HCC", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 2, + "name": "", + "network": "HCC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.0005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0005" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "VIDT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VIDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.47", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.94" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VIDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "43", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "86" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NOK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "NOK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "AVA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "AVA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your AVA tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.081", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.16" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AVA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "This deposit address supports BEP20 tokens, it does not support mainnet tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.081", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.16" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SYS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "(S)[A-Za-z0-9]{32,33}|sys1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39}", + "coin": "SYS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 20, + "name": "", + "network": "SYS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 2880, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "COCOS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "COCOS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.34", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.68" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COCOS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.34", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.68" + }, + { + "addressRegex": "^[a-z]{1}[a-z0-9-]{3,61}[a-z0-9]{1}$", + "coin": "COCOS", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^\\w{1,90}$", + "minConfirm": 10, + "name": "", + "network": "COCOS", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your COCOS to Binance.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "0.2" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COCOS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "31", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "62" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "STRAX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(X)[0-9A-Za-z]{33}$", + "coin": "STRAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 25, + "name": "", + "network": "STRAX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EOSUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "EOSUP", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "CZK", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "CZK", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "GAS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(A)[A-Za-z0-9]{33}$", + "coin": "GAS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "NEO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 5, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.005", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "COVEROLD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COVEROLD", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.055", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.11" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "THETA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "THETA", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.037", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.074" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "THETA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 10, + "name": "", + "network": "THETA", + "resetAddressStatus": false, + "specialTips": "This address is for Mainnet token deposits only. Please do not deposit ERC20 tokens to this address.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.12", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.24" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AAVEDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "AAVEDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BCHUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BCHUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "WAN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WAN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "WAN", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ORN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ORN", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.031", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.062" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ORN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.86", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "5.72" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PERL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PERL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.58", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "5.16" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PERL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Token has been upgraded to New contract, please do not deposit old tokens into your Binance wallet", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "240", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "480" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XLMDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "XLMDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "MASK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MASK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.018", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "10000000000", + "withdrawMin": "0.036" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MASK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.68", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999", + "withdrawMin": "3.36" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AAVE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "AAVE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00068", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0014" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AAVE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00068", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0014" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AAVE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.14", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.28" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XRPBEAR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "XRPBEAR", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.000022", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.000044" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XRPBEAR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.0012", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0024" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "GBP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "GBP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PERP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PERP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.028" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PERP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4.34" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "1INCHUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "1INCHUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SXPUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "SXPUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "YFIDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "YFIDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BOND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BOND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.4", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.8" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "YFI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "YFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0000067", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.000013" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "YFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0000067", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.000013" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "YFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00063", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0013" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PERLOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PERLOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "You can deposit PERLOLD and convert it to PERL", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "MOD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MOD", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "5", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "OST", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OST", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2825", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "5650" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XEC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[0-9A-Za-z]{42,42}$", + "coin": "XEC", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 11, + "name": "", + "network": "BCHA", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 11, + "withdrawEnable": false, + "withdrawFee": "894", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "1788" + }, + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[0-9A-Za-z]{42,42}$", + "coin": "XEC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 11, + "name": "", + "network": "XEC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 11, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10000", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "10000000000", + "withdrawMin": "20000" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AXS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AXS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0034", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.0068" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AXS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Axie Infinity. Please ensure you are depositing AXS (ERC20) tokens under the contract address ending in 7b28b.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.32", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.64" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AXS", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "RON", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.00000001" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ZIL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ZIL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.29", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4.58" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ZIL", + "depositDesc": "Network Swapped, ERC20 Deposit Closed", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to Mainnet.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1" + }, + { + "addressRegex": "zil1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{38}", + "coin": "ZIL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "ZIL", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.4" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VAI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VAI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XEM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(NA|NB|NC|ND)[a-zA-z0-9]{38}$", + "coin": "XEM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "XEM", + "resetAddressStatus": false, + "specialTips": "Both a Message and an Address are required to successfully deposit your XEM to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "8" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CTXC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CTXC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "CTXC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 257, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CTXC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Please note that only Mainnet CTXC withdrawal is supported. But for deposit, both Mainnet and ERC20 CTXC are supported. If you deposit ERC20 CTXC tokens, they will be automatically converted to Mainnet tokens.", + "unLockConfirm": 0, + "withdrawDesc": "Network Swapped, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "115", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "230" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KEYFI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KEYFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "17", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "34" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XTZUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "XTZUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BIDR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BIDR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BIDR BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3506", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9900000000", + "withdrawMin": "7012" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BIDR", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3505", + "withdrawIntegerMultiple": "0.01", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "7010" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BCHSV", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[0-9A-Za-z]{42,42}$", + "coin": "BCHSV", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 100, + "name": "", + "network": "BCHSV", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 150, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AAVEUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "AAVEUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SUSHIDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "SUSHIDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "COMP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "COMP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0006", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0012" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COMP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0006", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0012" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COMP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.056", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.11" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETHBNT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETHBNT", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "5" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "OMOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OMOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "41", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "82" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "RUNE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "RUNE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your RUNE tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.025", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.05" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "RUNE", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.025", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.05" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FORTH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FORTH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.19", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "6.38" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KMD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KMD", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.46" + }, + { + "addressRegex": "^(R)[A-Za-z0-9]{33}$", + "coin": "KMD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "KMD", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 50, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.004" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GHST", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "GHST", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "IDEX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IDEX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "3.83", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "7.66" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "IDEX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "356", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "712" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BNBDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BNBDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "DEXE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DEXE", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.012", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.024" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DEXE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.3" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AVAX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(X-avax)[0-9A-za-z]{39}$", + "coin": "AVAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "AVAX", + "resetAddressStatus": false, + "specialTips": "Please note that we do not support C-Chain deposits for AVAX token. Deposits on C-Chain will not be recognized.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.1" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AVAX", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "This deposit address supports BEP20 tokens, it does not support mainnet tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0057", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.011" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UAH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "UAH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KNC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KNC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.13", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.26" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KNC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "8" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PROS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PROS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.4" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PROS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "18", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "36" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "PROM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PROM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.028" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "PROM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.28", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.56" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BTCUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "BTCUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "CHAT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CHAT", + "depositDesc": "Delisted, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "100", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "200" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BGBP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BGBP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.81", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "5.62" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LPT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LPT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.24", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "2.48" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HIVE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[a-z][a-z0-9-.]{0,14}[a-z0-9]$", + "coin": "HIVE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "HIVE", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your HIVE to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BIFI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BIFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00023", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00046" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BIFI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00023", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00046" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SNGLS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SNGLS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "3386", + "withdrawIntegerMultiple": "1", + "withdrawMax": "10000000000", + "withdrawMin": "6772" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "WAXP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[1-5a-z\\.]{1,12}$", + "coin": "WAXP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_,]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "WAX", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your asset to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "3" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DAI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "DAI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DAI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DAI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "YFIUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "YFIUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "FET", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FET", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.47", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.94" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FET", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "43", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "86" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ETHBULL", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ETHBULL", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ETHBULL", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "LRC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LRC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "45", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "90" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "REPV1", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "REPV1", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "You can deposit REPV1 and convert it to REP", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "ADXOLD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ADXOLD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "You can deposit ADXOLD and convert it to ADX", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.0001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "MTH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MTH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "847", + "withdrawIntegerMultiple": "0.00001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1694" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "MTL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "MTL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "8.47", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "16" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VET", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VET", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "VET", + "resetAddressStatus": false, + "specialTips": "VEN has been swapped to VET. Please DO NOT send VEN to your VET address, otherwise your funds will be lost forever.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "20", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "40" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ALPACA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ALPACA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "0.4" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ALPACA", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "USDT", + "depositAllEnable": true, + "free": "877.73034115", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "USDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your USDT BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "USDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "USDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "30" + }, + { + "addressRegex": "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^(bc1)[0-9A-Za-z]{39}$", + "coin": "USDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "OMNI", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 2, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "1" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "USDT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "USDS", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "USDS", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-USDSB tokens to Binance.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "USDS", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "2", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "OXT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "OXT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "58", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "116" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DASH", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[X|7][0-9A-Za-z]{33}$", + "coin": "DASH", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "DASH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 25, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.004" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NVT", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^NULS[a-km-zA-HJ-NP-Z1-9]{33,33}$", + "coin": "NVT", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 30, + "name": "", + "network": "NULS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "SWRV", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SWRV", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "50" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "EDO", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "EDO", + "depositDesc": "Network Swap, Deposit Closed", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.23", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4.46" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "GHS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "GHS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BTCST", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BTCST", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.011", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.022" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BTCST", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.011", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.022" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "HKD", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "HKD", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "You can't deposit via the app, please try using browser.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "LSK", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[0-9]{12,22}[L]$", + "coin": "LSK", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 3, + "name": "", + "network": "LSK", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "KEEP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KEEP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "57", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "114" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CAD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "CAD", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BEAR", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BEAR", + "depositEnable": false, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0001" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BEAR", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.00001" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "BEAM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[A-Za-z0-9]{65,67}$|^(beam:)[A-Za-z0-9]{65,67}$", + "coin": "BEAM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 35, + "name": "", + "network": "BEAM", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 70, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.2" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CAN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "CAN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "The name of this asset is CanYaCoin (CAN). Both a MEMO and an Address are required to successfully deposit your CAN BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CAN", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is CanYaCoin (CAN). Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DCR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(Ds|Dc)[0-9A-Za-z]{33}$", + "coin": "DCR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 2, + "name": "", + "network": "DCR", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CREAM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CREAM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0028" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CREAM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.13", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.26" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "DATA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "DATA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "152", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "304" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "ENTRP", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "ENTRP", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your ENTRP BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "ENTRP", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "Swap to the BEP2 network, ERC20 Withdrawal Closed", + "withdrawEnable": false, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FILUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "FILUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "UNIUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "UNIUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "LTC", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "LTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your LTC BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0028" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0014", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0028" + }, + { + "addressRegex": "^(L|M|3)[A-Za-z0-9]{33}$|^(ltc1)[0-9A-Za-z]{39}$", + "coin": "LTC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 3, + "name": "", + "network": "LTC", + "resetAddressStatus": false, + "specialTips": "Minimum deposit amount: 0.001 LTC. Any deposits less than or equal to the minimum amount will not be credited or refunded.", + "unLockConfirm": 4, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.002" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "USDC", + "depositAllEnable": true, + "free": "19.99000041", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "USDC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "1", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "USDC", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.8", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "USDC", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "15", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "30" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "WIN", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "WIN", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2-WINB tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "409", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "818" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "WIN", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "409", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "818" + }, + { + "addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{33}$", + "coin": "WIN", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 1, + "name": "", + "network": "TRX", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "140", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "280" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BNBBULL", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BNBBULL", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.012", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.024" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "LTCUP", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "LTCUP", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "INJ", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "INJ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.022", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.044" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "INJ", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.022", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.044" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "INJ", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.05", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "4.1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TCT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "TCT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "7.71", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "15" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TCT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "7.71", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "15" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TCT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "718", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1436" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LTO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "LTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your LTO BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.93", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.86" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.93", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.86" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "86", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "172" + }, + { + "addressRegex": "^(3J)[0-9A-Za-z]{33}$", + "coin": "LTO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 50, + "name": "", + "network": "LTO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VGX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VGX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "6.38", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "12" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "TRIBE", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "TRIBE", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "25", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999", + "withdrawMin": "50" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NXS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(2|8)[A-Za-z0-9]{50}$", + "coin": "NXS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 6, + "name": "", + "network": "NXS", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.04" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AGIX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AGIX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "80", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "160" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "INR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "INR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CBK", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CBK", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "1.2", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "2.4" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "CBM", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "CBM", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your CBM BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "200", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "400" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "CBM", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "Deposit ERC20 tokens. Tokens will be automatically converted to BEP2 tokens.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "200", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "400" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "INS", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "INS", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "The withdrawal has been permanently suspended as the contract had been frozen. Please reach out to project team for assistance.", + "withdrawEnable": false, + "withdrawFee": "52", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "104" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "POND", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POND", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "2.84", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "5.68" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POND", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "265", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "530" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "JPY", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "JPY", + "depositDesc": "", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "LINA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LINA", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Linear. Please ensure you are depositing Linear (LINA) tokens under the contract address ending in 4b878.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "4.63", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "9.26" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LINA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Linear. Please ensure you are depositing Linear (LINA) tokens under the contract address ending in 11937.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "718", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1436" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "XLM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "XLM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.72", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.44" + }, + { + "addressRegex": "^G[A-D]{1}[A-Z2-7]{54}$", + "coin": "XLM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z]{1,28}$", + "minConfirm": 1, + "name": "", + "network": "XLM", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your XLM to Binance", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.02", + "withdrawIntegerMultiple": "0.0000001", + "withdrawMax": "10000000000", + "withdrawMin": "38" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LINK", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "LINK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your LINK BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.002", + "withdrawIntegerMultiple": "0", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LINK", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0097", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.019" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LINK", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.91", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.82" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "QTUM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[Q|M][A-Za-z0-9]{33}$", + "coin": "QTUM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 6, + "name": "", + "network": "QTUM", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FILDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "FILDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "SUPER", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUPER", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.28", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.56" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "SUPER", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "43", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "86" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "UFT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UFT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.22", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.44" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "UFT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "20", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "40" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "POLS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POLS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.14", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.28" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POLS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "12", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "24" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "KSM", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "KSM", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.00088", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0018" + }, + { + "addressRegex": "^[0-9a-z-A-Z]{44,50}$", + "coin": "KSM", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 3, + "name": "", + "network": "KSM", + "resetAddressStatus": false, + "specialTips": "Please note that we currently do not support deposits for staking rewards.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "50000", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "LUN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "LUN", + "depositDesc": "Wallet Maintenance, Deposit Suspended", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "1.54", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "3.08" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "FIL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "FIL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0033", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0066" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FIL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0033", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.0066" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FIL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "This deposit address supports ERC20 BFIL tokens. Please ensure you are depositing ERC20 BFIL tokens under the contract address ending in 822B7.", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0.31", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.62" + }, + { + "addressRegex": "^[a-z0-9]{41}$|[a-z0-9]{86}$", + "coin": "FIL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 60, + "name": "", + "network": "FIL", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 910, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.01" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "POLY", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "POLY", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "66", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "132" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "STMX", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "STMX", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "777", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1554" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BAL", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAL", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0094", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.019" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAL", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.88", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "1.76" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "FIO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(FIO)[a-z-A-Z0-9]{50}$", + "coin": "FIO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 50, + "name": "", + "network": "FIO", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "5", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "10" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VIB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VIB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "465", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "930" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VIA", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "((V|E)[A-Za-z0-9]{33})|(via1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{39})", + "coin": "VIA", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "VIA", + "resetAddressStatus": false, + "unLockConfirm": 50, + "withdrawDesc": "Wallet Maintenance, Withdrawal Suspended", + "withdrawEnable": false, + "withdrawFee": "0.01", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.02" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "FIS", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FIS", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.11", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0.22" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "FIS", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "10", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9900000000", + "withdrawMin": "20" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BAR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "CHZ", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 30, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0", + "withdrawIntegerMultiple": "1", + "withdrawMax": "9999999", + "withdrawMin": "1" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "BAT", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "BAT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Basic Attention Token (BAT). Both a MEMO and an Address are required to successfully deposit your BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.31", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.62" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAT", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Basic Attention Token. Please ensure you are depositing Basic Attention Token (BAT) tokens under the contract address ending in 9766e.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.31", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.62" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "BAT", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "The name of this asset is Basic Attention Token. Please ensure you are depositing Basic Attention Token (BAT) tokens under the contract address ending in 887ef.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "28", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "56" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "VRAB", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "VRAB", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your VRAB BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "100", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "200" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "VRAB", + "depositEnable": false, + "isDefault": false, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "300", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "600" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "AKRO", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "AKRO", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "687", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1374" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "NZD", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": true, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "NZD", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "FIAT_MONEY", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": false, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "XMR", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^[48][a-zA-Z|\\d]{94}([a-zA-Z|\\d]{11})?$", + "coin": "XMR", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 3, + "name": "", + "network": "XMR", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.0001", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "0.0002" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + }, + { + "coin": "1INCHDOWN", + "depositAllEnable": false, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "", + "coin": "1INCHDOWN", + "depositDesc": "Not support deposit", + "depositEnable": false, + "isDefault": true, + "memoRegex": "", + "minConfirm": 0, + "name": "", + "network": "ETF", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "Not support withdrawal", + "withdrawEnable": false, + "withdrawFee": "0", + "withdrawIntegerMultiple": "0", + "withdrawMax": "9999999999.99999999", + "withdrawMin": "0" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": false, + "withdrawing": "0" + }, + { + "coin": "COTI", + "depositAllEnable": true, + "free": "0", + "freeze": "0", + "ipoable": "0", + "ipoing": "0", + "isLegalMoney": false, + "locked": "0", + "name": "", + "networkList": [ + { + "addressRegex": "^(bnb1)[0-9a-z]{38}$", + "coin": "COTI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "^[0-9A-Za-z\\-_]{1,120}$", + "minConfirm": 1, + "name": "", + "network": "BNB", + "resetAddressStatus": false, + "specialTips": "Both a MEMO and an Address are required to successfully deposit your COTI BEP2 tokens to Binance.", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.64", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.28" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COTI", + "depositDesc": "", + "depositEnable": true, + "isDefault": false, + "memoRegex": "", + "minConfirm": 15, + "name": "", + "network": "BSC", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "0.64", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "1.28" + }, + { + "addressRegex": "^(0x)[0-9A-Fa-f]{40}$", + "coin": "COTI", + "depositDesc": "", + "depositEnable": true, + "isDefault": true, + "memoRegex": "", + "minConfirm": 12, + "name": "", + "network": "ETH", + "resetAddressStatus": false, + "specialTips": "", + "unLockConfirm": 0, + "withdrawDesc": "", + "withdrawEnable": true, + "withdrawFee": "59", + "withdrawIntegerMultiple": "0.00000001", + "withdrawMax": "10000000000", + "withdrawMin": "118" + } + ], + "storage": "0", + "trading": true, + "withdrawAllEnable": true, + "withdrawing": "0" + } + ], + "queryString": "recvWindow=5000\u0026signature=901f28b052658981cb09ef7d78a94215190cae72e55fd0dd5eeb9a1ce0cf5809\u0026timestamp=1630042821000", + "bodyParams": "", + "headers": { + "X-Mbx-Apikey": [ + "" + ] + } + } + ] + }, + "/sapi/v1/capital/deposit/address": { + "GET": [ + { + "data": { + "address": "bnb136ns6lfw4zs5hg4n85vdthaad7hq5m4gtkgf23", + "coin": "USDT", + "tag": "109248373", + "url": "https://explorer.binance.org/address/bnb136ns6lfw4zs5hg4n85vdthaad7hq5m4gtkgf23" + }, + "queryString": "coin=USDT\u0026network=BNB\u0026recvWindow=10000\u0026signature=3640fde52671a3ceaa6385e8513c73d48acd929fd4ab0979fdecc4778f24f177\u0026timestamp=1630043276000", + "bodyParams": "", + "headers": { + "X-Mbx-Apikey": [ + "" + ] + } + } + ] + }, + "/sapi/v1/capital/withdraw/apply": { + "POST": [ + { + "data": { + "id": "b5f55090431d4f64900bb8fdaf95eab0" + }, + "queryString": "address=TJ6Piuaw35M4PM54CzWFqzEPP998yXydc6\u0026amount=10\u0026coin=USDT\u0026name=WITHDRAW%2BIT%2BALL\u0026network=TRX\u0026recvWindow=5000\u0026signature=595c087b07e37529c9a9907dc76caaca14a9bce37649e58239c4e4b20849d9d5\u0026timestamp=1630043429000", + "bodyParams": "", + "headers": { + "X-Mbx-Apikey": [ + "" + ] + } + } + ] + }, "/wapi/v3/depositAddress.html": { "GET": [ { @@ -310458,4 +338261,4 @@ ] } } -} +} \ No newline at end of file diff --git a/testdata/http_mock/bitstamp/bitstamp.json b/testdata/http_mock/bitstamp/bitstamp.json index bd1f39b4..6e802c4f 100644 --- a/testdata/http_mock/bitstamp/bitstamp.json +++ b/testdata/http_mock/bitstamp/bitstamp.json @@ -68201,6 +68201,23 @@ } ] }, + "/api/v2/xrp_address/": { + "POST": [ + { + "data": { + "address": "rDsbeomae4FXwgQTJp9Rs64Qg9vDiTCdBv", + "destination_tag": 40687762 + }, + "queryString": "", + "bodyParams": "key=\u0026nonce=1630130772019126700\u0026signature=4867C3278797DE9AC555D3F3A69076FED19AB28C7CEFBE18A056DAFF2EE7E2EF", + "headers": { + "Content-Type": [ + "application/x-www-form-urlencoded" + ] + } + } + ] + }, "/api/withdrawal_requests/": { "POST": [ { diff --git a/testdata/http_mock/poloniex/poloniex.json b/testdata/http_mock/poloniex/poloniex.json index 519af8a4..81d3d9b6 100644 --- a/testdata/http_mock/poloniex/poloniex.json +++ b/testdata/http_mock/poloniex/poloniex.json @@ -9722,6 +9722,10224 @@ "queryString": "command=returnTradeHistory\u0026currencyPair=BTC_XMR\u0026end=1591405200\u0026start=1591401643", "bodyParams": "", "headers": {} + }, + { + "data": { + "1CR": { + "blockchain": "1CR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 1, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AAVE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "8179a9", + "humanType": "Sweep to Main Account", + "id": 446, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.21564059" + }, + "ABY": { + "blockchain": "ABY", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 2, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AC": { + "blockchain": "AC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 3, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ACH": { + "blockchain": "ACH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 4, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "ACH1": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "01033E", + "humanType": "Sweep to Main Account", + "id": 560, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "173.83602719" + }, + "ADABEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 488, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1230972137.50000000" + }, + "ADABULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 489, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00382974" + }, + "ADD": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3ca6f4", + "humanType": "Sweep to Main Account", + "id": 503, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "130.74635607" + }, + "ADEL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3d30d6", + "humanType": "Sweep to Main Account", + "id": 430, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "418.19144667" + }, + "ADN": { + "blockchain": "ADN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 5, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AEON": { + "blockchain": "AEON", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "WmrzAb4yy6i4otzaTZznsmaeBn8UKoBqS14XdW2DDzXr3DQnwz4o1XPJAJuo7QTqSoD9WVrdEQfn15udzhsJWmNR1jAEETQ2N", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 6, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AERO": { + "blockchain": "AERO", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 7, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AIR": { + "blockchain": "AIR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 8, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AKITA": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F8A628", + "humanType": "Sweep to Main Account", + "id": 510, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "16232599.61538462" + }, + "AKRO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "c764fd", + "humanType": "Sweep to Main Account", + "id": 429, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "850.05919505" + }, + "ALICE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EA8397", + "humanType": "Sweep to Main Account", + "id": 565, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.97960252" + }, + "ALPACA": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "64C385", + "humanType": "Sweep to Main Account", + "id": 556, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "2.08000000" + }, + "ALPHA": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "57B3F9", + "humanType": "Sweep to Main Account", + "id": 463, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "18.25722519" + }, + "AMP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "C53F79", + "humanType": "Sweep to Main Account", + "id": 275, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "886.44951612" + }, + "APH": { + "blockchain": "APH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 9, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "API3": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "BDBDBD", + "humanType": "Sweep to Main Account", + "id": 464, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.58250285" + }, + "ARCH": { + "blockchain": "ARCH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 258, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ARDR": { + "blockchain": "ARDR", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3A86C7", + "humanType": "Sweep to Main Account", + "id": 285, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 20, + "name": "", + "parentChain": null, + "txFee": "2.00000000" + }, + "ATOM": { + "blockchain": "ATOM", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "707390", + "humanType": "Sweep to Main Account", + "id": 313, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.35000000" + }, + "AUDIO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5C0EBA", + "humanType": "Sweep to Main Account", + "id": 567, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "12.32480950" + }, + "AUR": { + "blockchain": "AUR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 10, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AUTO": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3A41BA", + "humanType": "Sweep to Main Account", + "id": 548, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "0.00200000" + }, + "AVA": { + "blockchain": "BNB", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1E2E5E", + "humanType": "Sweep to Main Account", + "id": 344, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.09666653" + }, + "AXIS": { + "blockchain": "AXIS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 11, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "AXS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "0051DD", + "humanType": "Sweep to Main Account", + "id": 553, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.28008359" + }, + "B20": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "262725", + "humanType": "Sweep to Main Account", + "id": 506, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "15.24378214" + }, + "BABYDOGE": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E9AC5A", + "humanType": "Sweep to Main Account", + "id": 555, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "1000000000.00000000" + }, + "BAC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5855AF", + "humanType": "Sweep to Main Account", + "id": 477, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "311.74014706" + }, + "BADGER": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E8A847", + "humanType": "Sweep to Main Account", + "id": 468, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2.15734027" + }, + "BAL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "919191", + "humanType": "Sweep to Main Account", + "id": 369, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.69292827" + }, + "BALLS": { + "blockchain": "BALLS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 12, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "6.40000000" + }, + "BAND": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "556DF6", + "humanType": "Sweep to Main Account", + "id": 390, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.60815861" + }, + "BANK": { + "blockchain": "BANK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 13, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BAS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "E28F7C", + "humanType": "Sweep to Main Account", + "id": 476, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.30000000" + }, + "BAT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "9E1F63", + "humanType": "Sweep to Main Account", + "id": 302, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "23.95365871" + }, + "BBL": { + "blockchain": "BBL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 14, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BBR": { + "blockchain": "BBR", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "1D9hJ1nEjwuhxZMk6fupoTjKLtS2KzkfCQ7kF25k5B6Sc4UJjt9FrvDNYomVd4ZVHv36FskVRJGZa1JZAnZ35GiuAHf7gBy", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 15, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00500000" + }, + "BCC": { + "blockchain": "BCC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 16, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BCH": { + "blockchain": "BCH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "32C939", + "humanType": "BTC Clone", + "id": 292, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 11, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "BCHA": { + "blockchain": "BCHA", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "32C939", + "humanType": "BTC Clone", + "id": 447, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 99999999, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "BCHABC": { + "blockchain": "BCHABC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "32C939", + "humanType": "BTC Clone", + "id": 308, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 11, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "BCHBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 339, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "133895.91967151" + }, + "BCHBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 340, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "351.37768647" + }, + "BCHC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B72B2D", + "humanType": "Sweep to Main Account", + "id": 360, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2637.79743750" + }, + "BCHSV": { + "blockchain": "BCHSV", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "C8102E", + "humanType": "BTC Clone", + "id": 309, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1008, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "BCN": { + "blockchain": "BCN", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "25cZNQYVAi3issDCoa6fWA2Aogd4FgPhYdpX3p8KLfhKC6sN8s6Q9WpcW4778TPwcUS5jEM25JrQvjD3XjsvXuNHSWhYUsu", + "disabled": 0, + "frozen": 0, + "hexColor": "F04086", + "humanType": "Payment ID", + "id": 17, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "BCY": { + "blockchain": "BCY", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 269, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "4.00000000" + }, + "BDC": { + "blockchain": "BDC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 18, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BDG": { + "blockchain": "BDG", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 19, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BDP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2596be", + "humanType": "Sweep to Main Account", + "id": 502, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "99.79892784" + }, + "BEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 322, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "96843.06014476" + }, + "BELA": { + "blockchain": "BELA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 20, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BID": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5BC3EC", + "humanType": "Sweep to Main Account", + "id": 449, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1164.97237505" + }, + "BITCNY": { + "blockchain": "BITCNY", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "poloniexwallet", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 273, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "BITS": { + "blockchain": "BITS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 21, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BITUSD": { + "blockchain": "BITUSD", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "poloniexwallet", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 272, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.15000000" + }, + "BLK": { + "blockchain": "BLK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 22, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BLOCK": { + "blockchain": "BLOCK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 23, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 100000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BLU": { + "blockchain": "BLU", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 24, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BLY": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "50B2AB", + "humanType": "Sweep to Main Account", + "id": 406, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "584.91363241" + }, + "BNB": { + "blockchain": "BNB", + "childChains": [ + "BSC" + ], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F0B90B", + "humanType": "Sweep to Main Account", + "id": 343, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.05000000" + }, + "BNS": { + "blockchain": "BNS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 25, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BNT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "102644", + "humanType": "Sweep to Main Account", + "id": 305, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.75229433" + }, + "BOND": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EC5443", + "humanType": "Sweep to Main Account", + "id": 481, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.74069426" + }, + "BONES": { + "blockchain": "BONES", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 26, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BOST": { + "blockchain": "BOST", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 27, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BREE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "6CAECD", + "humanType": "Sweep to Main Account", + "id": 441, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2.33100000" + }, + "BRG": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "EDBB47", + "humanType": "Sweep to Main Account", + "id": 500, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "BSC": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "f8d12f", + "humanType": "Sweep to Main Account", + "id": 538, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 15, + "name": "", + "parentChain": "BNB", + "txFee": "0.00050000" + }, + "BSVBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 341, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "668824.85058408" + }, + "BSVBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 342, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "173181.22362127" + }, + "BTC": { + "blockchain": "BTC", + "childChains": [ + "BTCTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F59C3D", + "humanType": "BTC Clone", + "id": 28, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 2, + "name": "", + "parentChain": null, + "txFee": "0.00050000" + }, + "BTCD": { + "blockchain": "BTCD", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 29, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BTCS": { + "blockchain": "BTCS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 30, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BTCST": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 505, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "BTCTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F59C3D", + "humanType": "Sweep to Main Account", + "id": 445, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "BTC", + "txFee": "0.00000000" + }, + "BTM": { + "blockchain": "BTM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 31, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BTS": { + "blockchain": "BTS", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "poloniexwallet", + "disabled": 0, + "frozen": 0, + "hexColor": "00A9E0", + "humanType": "Payment ID", + "id": 32, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 50, + "name": "", + "parentChain": null, + "txFee": "5.00000000" + }, + "BTT": { + "blockchain": "TRX", + "childChains": [ + "BTTETH" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "603893", + "humanType": "Sweep to Main Account", + "id": 320, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "250.00000000" + }, + "BTTETH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3D3E44", + "humanType": "Sweep to Main Account", + "id": 535, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": "BTT", + "txFee": "4620.00000000" + }, + "BULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 323, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00202970" + }, + "BURGER": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EEBA5A", + "humanType": "Sweep to Main Account", + "id": 547, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "0.50000000" + }, + "BURN": { + "blockchain": "BURN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 33, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "BURST": { + "blockchain": "BURST", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "262626", + "humanType": "Sweep to Main Account", + "id": 34, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "BUSD": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E8B941", + "humanType": "Sweep to Main Account", + "id": 324, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "24.61944275" + }, + "BVOL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 346, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.03056392" + }, + "BZRX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "0C41D1", + "humanType": "Sweep to Main Account", + "id": 372, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "124.76536112" + }, + "C2": { + "blockchain": "C2", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 35, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "C98": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "D4B460", + "humanType": "Sweep to Main Account", + "id": 557, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "2.53000000" + }, + "CACH": { + "blockchain": "CACH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 36, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CAI": { + "blockchain": "CAI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 37, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CAKE": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5fc4d3", + "humanType": "Sweep to Main Account", + "id": 544, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "0.03800000" + }, + "CC": { + "blockchain": "CC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 38, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CCN": { + "blockchain": "CCN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 39, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CGA": { + "blockchain": "CGA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 40, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "CHA": { + "blockchain": "CHA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 41, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CHR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F4B4C3", + "humanType": "Sweep to Main Account", + "id": 358, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "50.88006192" + }, + "CINNI": { + "blockchain": "CINNI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 42, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CLAM": { + "blockchain": "CLAM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "1A9193", + "humanType": "BTC Clone", + "id": 43, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 6, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "CLV": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "53AA81", + "humanType": "Sweep to Main Account", + "id": 561, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "13.92379961" + }, + "CNL": { + "blockchain": "CNL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 44, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CNMT": { + "blockchain": "CNMT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 45, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "CNOTE": { + "blockchain": "CNOTE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 46, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "COMBO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B0B0B0", + "humanType": "Sweep to Main Account", + "id": 483, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "31.49614851" + }, + "COMM": { + "blockchain": "COMM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 47, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "COMP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5FCF99", + "humanType": "Sweep to Main Account", + "id": 361, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.07483315" + }, + "CON": { + "blockchain": "CON", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 48, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "CORG": { + "blockchain": "CORG", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 49, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CORN": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F7DD14", + "humanType": "Sweep to Main Account", + "id": 424, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.03468000" + }, + "COVER": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "BDBDBD", + "humanType": "Sweep to Main Account", + "id": 465, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.02760000" + }, + "CREAM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "69e2db", + "humanType": "Sweep to Main Account", + "id": 427, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.11527827" + }, + "CRT": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "ff790a", + "humanType": "Sweep to Main Account", + "id": 422, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.17880000" + }, + "CRV": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B2FB76", + "humanType": "Sweep to Main Account", + "id": 401, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "8.83143748" + }, + "CRYPT": { + "blockchain": "CRYPT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 50, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CTSI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 530, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "27.33085826" + }, + "CUDOS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "70B5F2", + "humanType": "Sweep to Main Account", + "id": 480, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "529.14692828" + }, + "CURE": { + "blockchain": "CURE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 51, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "CUSDT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5FCF99", + "humanType": "Sweep to Main Account", + "id": 364, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "3460.94971809" + }, + "CVC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3AB03E", + "humanType": "Sweep to Main Account", + "id": 294, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "56.83803512" + }, + "CVP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1836CC", + "humanType": "Sweep to Main Account", + "id": 435, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "20.09750428" + }, + "CVT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4150F5", + "humanType": "Sweep to Main Account", + "id": 451, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1371.64979814" + }, + "CYC": { + "blockchain": "CYC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 52, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DAI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F0B246", + "humanType": "Sweep to Main Account", + "id": 325, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "21.10237950" + }, + "DAO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 279, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00875000" + }, + "DASH": { + "blockchain": "DASH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "008DE4", + "humanType": "BTC Clone", + "id": 60, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 50, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DCR": { + "blockchain": "DCR", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2970FF", + "humanType": "BTC Clone", + "id": 277, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 4, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "DEC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "80BAED", + "humanType": "Sweep to Main Account", + "id": 379, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "192.88900709" + }, + "DEGO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2D6B6A", + "humanType": "Sweep to Main Account", + "id": 518, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "3.19685193" + }, + "DEXT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "4298B7", + "humanType": "Sweep to Main Account", + "id": 397, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "516.45513631" + }, + "DGB": { + "blockchain": "DGB", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "012351", + "humanType": "BTC Clone", + "id": 53, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 40, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "DHT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2C67CD", + "humanType": "Sweep to Main Account", + "id": 432, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "16.68908208" + }, + "DIA": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "ADCFC3", + "humanType": "Sweep to Main Account", + "id": 391, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "9.53675717" + }, + "DICE": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "9FDC87", + "humanType": "Sweep to Main Account", + "id": 54, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "7.00000000" + }, + "DIEM": { + "blockchain": "DIEM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 55, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DIME": { + "blockchain": "DIME", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 56, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DIS": { + "blockchain": "DIS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 57, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DMG": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "447CC5", + "humanType": "Sweep to Main Account", + "id": 404, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "208.00000000" + }, + "DNS": { + "blockchain": "DNS", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 58, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.50000000" + }, + "DOGE": { + "blockchain": "DOGE", + "childChains": [ + "DOGETRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B88D3F", + "humanType": "BTC Clone", + "id": 59, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 6, + "name": "", + "parentChain": null, + "txFee": "20.00000000" + }, + "DOGETRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B88D34", + "humanType": "Sweep to Main Account", + "id": 524, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "DOGE", + "txFee": "20.00000000" + }, + "DOS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "A3A7A8", + "humanType": "Sweep to Main Account", + "id": 392, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "639.58665322" + }, + "DOT": { + "blockchain": "DOT", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E6007A", + "humanType": "Sweep to Main Account", + "id": 400, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "DRKC": { + "blockchain": "DRKC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 61, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DRM": { + "blockchain": "DRM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 62, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "DSH": { + "blockchain": "DSH", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "D8PDwmpq4KMhTy6u8RvWt5PLTMwEayGN3jeYoS3pkJQJMULNt2CyYKXG7KhqSahe9DPppRKqzkWGoMjf8C4L2mzFAgsJZXs", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 63, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "DVK": { + "blockchain": "DVK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 64, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "EAC": { + "blockchain": "EAC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 65, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "EBT": { + "blockchain": "EBT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 66, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ECC": { + "blockchain": "ECC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 67, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "EFL": { + "blockchain": "EFL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 68, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ELON": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FFCB83", + "humanType": "Sweep to Main Account", + "id": 520, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "301462564.28571429" + }, + "EMC2": { + "blockchain": "EMC2", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 69, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "EMO": { + "blockchain": "EMO", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 70, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ENC": { + "blockchain": "ENC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 71, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "EOS": { + "blockchain": "EOS", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "poloniexeos1", + "disabled": 0, + "frozen": 0, + "hexColor": "717F99", + "humanType": "Payment ID", + "id": 298, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 350, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "EOSBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 355, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "923459.96811703" + }, + "EOSBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 354, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "9393.22037940" + }, + "EPS": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "313131", + "humanType": "Sweep to Main Account", + "id": 546, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "4.50000000" + }, + "ESD": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "8C8C89", + "humanType": "Sweep to Main Account", + "id": 472, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "458.74498698" + }, + "ETC": { + "blockchain": "ETC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "698F74", + "humanType": "Sweep to Main Account", + "id": 283, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 7000, + "name": "", + "parentChain": null, + "txFee": "0.04375000" + }, + "ETH": { + "blockchain": "ETH", + "childChains": [ + "ETHTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1C1CE1", + "humanType": "Sweep to Main Account", + "id": 267, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00739257" + }, + "ETHBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 333, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "68387340.97222222" + }, + "ETHBNT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "102644", + "humanType": "Sweep to Main Account", + "id": 319, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "6.30596246" + }, + "ETHBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 334, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.01440226" + }, + "ETHTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1C1CE1", + "humanType": "Sweep to Main Account", + "id": 458, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "ETH", + "txFee": "0.00000000" + }, + "EXE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "9F61F6", + "humanType": "Sweep to Main Account", + "id": 73, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "5242.37134659" + }, + "EXP": { + "blockchain": "EXP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 270, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 8000, + "name": "", + "parentChain": null, + "txFee": "0.00875000" + }, + "FAC": { + "blockchain": "FAC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 74, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FARM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E9B544", + "humanType": "Sweep to Main Account", + "id": 469, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.07665968" + }, + "FCN": { + "blockchain": "FCN", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "6mkbrPdSAjeaQKCCx8Nus1JiKb4HdeTDXC4bEWunDzTMXMPESd7aFNYPAG1U4MUpnhHfJfzVyTqnRFRW2REKN6efBVRMoSY", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 75, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FCT": { + "blockchain": "FCT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "417CA5", + "humanType": "BTC Clone", + "id": 271, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 3, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FCT2": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "646665", + "humanType": "Sweep to Main Account", + "id": 413, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "139.28377731" + }, + "FIBRE": { + "blockchain": "FIBRE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 76, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FIL": { + "blockchain": "FIL", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "67BEC8", + "humanType": "Sweep to Main Account", + "id": 362, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 120, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FLAP": { + "blockchain": "FLAP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 77, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FLDC": { + "blockchain": "FLDC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 78, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "750.00000000" + }, + "FLO": { + "blockchain": "FLO", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 254, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FLT": { + "blockchain": "FLT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 79, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FOAM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "CB8271", + "humanType": "Sweep to Main Account", + "id": 307, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "580.26445173" + }, + "FORTH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 519, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.21216642" + }, + "FOX": { + "blockchain": "FOX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 80, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FRAC": { + "blockchain": "FRAC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 81, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FRK": { + "blockchain": "FRK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 82, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FRONT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "372521", + "humanType": "Sweep to Main Account", + "id": 462, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "15.03739164" + }, + "FRQ": { + "blockchain": "FRQ", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 83, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FSW": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2a6def", + "humanType": "Sweep to Main Account", + "id": 426, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "334.95840476" + }, + "FTT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7ECEE2", + "humanType": "Sweep to Main Account", + "id": 484, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.41970240" + }, + "FUND": { + "blockchain": "FUND", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "921D43", + "humanType": "Sweep to Main Account", + "id": 410, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "5.00000000" + }, + "FVZ": { + "blockchain": "FVZ", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 84, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "FXC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "842CF6", + "humanType": "Sweep to Main Account", + "id": 351, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "705.32600000" + }, + "FZ": { + "blockchain": "FZ", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 85, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "FZN": { + "blockchain": "FZN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 86, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "GAME": { + "blockchain": "GAME", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "28546D", + "humanType": "BTC Clone", + "id": 93, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 80, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GAP": { + "blockchain": "GAP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 87, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GAS": { + "blockchain": "GAS", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3E8700", + "humanType": "BTC Clone", + "id": 296, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 18, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "GDN": { + "blockchain": "GDN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 88, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GEEQ": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "30416F", + "humanType": "Sweep to Main Account", + "id": 388, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "28.28738260" + }, + "GEMZ": { + "blockchain": "GEMZ", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 89, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "500.00000000" + }, + "GEO": { + "blockchain": "GEO", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 90, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GHST": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E641EC", + "humanType": "Sweep to Main Account", + "id": 436, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "25.63205006" + }, + "GIAR": { + "blockchain": "GIAR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 91, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GLB": { + "blockchain": "GLB", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 92, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GLM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "181EA9", + "humanType": "Sweep to Main Account", + "id": 457, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "42.28018939" + }, + "GML": { + "blockchain": "GML", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 94, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GNO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 291, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01312500" + }, + "GNS": { + "blockchain": "GNS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 95, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GNT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "181EA9", + "humanType": "Sweep to Main Account", + "id": 290, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "58.27591860" + }, + "GOLD": { + "blockchain": "GOLD", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 96, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GPC": { + "blockchain": "GPC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 97, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GPUC": { + "blockchain": "GPUC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 98, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GRC": { + "blockchain": "GRC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 261, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GRCX": { + "blockchain": "GRCX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 99, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GRIN": { + "blockchain": "GRIN", + "childChains": [], + "currencyType": "mimblewimble", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "FEDC00", + "humanType": "MimbleWimble", + "id": 314, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15000, + "name": "", + "parentChain": null, + "txFee": "0.25000000" + }, + "GRS": { + "blockchain": "GRS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 100, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 100000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "GRT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4C37B3", + "humanType": "Sweep to Main Account", + "id": 470, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "20.39985698" + }, + "GTC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "02E4AE", + "humanType": "Sweep to Main Account", + "id": 537, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.30080101" + }, + "GUE": { + "blockchain": "GUE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 101, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "H2O": { + "blockchain": "H2O", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 102, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HEGIC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "A8F1F8", + "humanType": "Sweep to Main Account", + "id": 459, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "120.14178491" + }, + "HGET": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "fccc4c", + "humanType": "Sweep to Main Account", + "id": 428, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.69273778" + }, + "HIRO": { + "blockchain": "HIRO", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 103, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HOT": { + "blockchain": "HOT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 104, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HT": { + "blockchain": "ETH", + "childChains": [ + "HTTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "53A7DB", + "humanType": "Sweep to Main Account", + "id": 326, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.49958886" + }, + "HTTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2a3165", + "humanType": "Sweep to Main Account", + "id": 528, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "HT", + "txFee": "0.10000000" + }, + "HUC": { + "blockchain": "HUC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "8D4B1D", + "humanType": "BTC Clone", + "id": 105, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HUGE": { + "blockchain": "HUGE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 260, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HVC": { + "blockchain": "HVC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 106, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HYP": { + "blockchain": "HYP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 107, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "HZ": { + "blockchain": "HZ", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 108, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "IBVOL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 347, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00776931" + }, + "IFC": { + "blockchain": "IFC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 109, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "2000.00000000" + }, + "INDEX": { + "blockchain": "INDEX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 265, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "INJ": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "61CEE7", + "humanType": "Sweep to Main Account", + "id": 452, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.65390189" + }, + "IOC": { + "blockchain": "IOC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 263, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ITC": { + "blockchain": "ITC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 110, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "IXC": { + "blockchain": "IXC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 111, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "JFI": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "808080", + "humanType": "Sweep to Main Account", + "id": 421, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00840000" + }, + "JLH": { + "blockchain": "JLH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 112, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "JPC": { + "blockchain": "JPC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 113, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "JST": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "A52A21", + "humanType": "Sweep to Main Account", + "id": 345, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "15.00000000" + }, + "JUG": { + "blockchain": "JUG", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 114, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "KCS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "23AF91", + "humanType": "Sweep to Main Account", + "id": 504, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.74460715" + }, + "KDC": { + "blockchain": "KDC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 115, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "KEY": { + "blockchain": "KEY", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 116, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "KISHU": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F5EEDC", + "humanType": "Sweep to Main Account", + "id": 529, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "318403655.00000000" + }, + "KLV": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E943C6", + "humanType": "Sweep to Main Account", + "id": 511, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "100.00000000" + }, + "KNC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "23A781", + "humanType": "Sweep to Main Account", + "id": 301, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "9.70565966" + }, + "KP3R": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "467FC1", + "humanType": "Sweep to Main Account", + "id": 455, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.13690394" + }, + "KTON": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5A9D51", + "humanType": "Sweep to Main Account", + "id": 382, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.25276858" + }, + "LBC": { + "blockchain": "LBC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "2F9176", + "humanType": "BTC Clone", + "id": 280, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 30, + "name": "", + "parentChain": null, + "txFee": "0.05000000" + }, + "LC": { + "blockchain": "LC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 117, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "LCL": { + "blockchain": "LCL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 118, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "LEAF": { + "blockchain": "LEAF", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 119, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "LEND": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "4390C3", + "humanType": "Sweep to Main Account", + "id": 366, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "11.63200000" + }, + "LGC": { + "blockchain": "LGC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 120, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "LINK": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3663D4", + "humanType": "Sweep to Main Account", + "id": 327, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.74299275" + }, + "LINKBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 357, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "820648091.66666667" + }, + "LINKBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 356, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "7.81857250" + }, + "LIVE": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B64A45", + "humanType": "Sweep to Main Account", + "id": 508, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "10.00000000" + }, + "LOL": { + "blockchain": "LOL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 121, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "LON": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "706896", + "humanType": "Sweep to Main Account", + "id": 478, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "8.23638548" + }, + "LOOM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5756E6", + "humanType": "Sweep to Main Account", + "id": 303, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "209.37540339" + }, + "LOVE": { + "blockchain": "LOVE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 122, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "LPT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "283845", + "humanType": "Sweep to Main Account", + "id": 312, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.95170497" + }, + "LQD": { + "blockchain": "LQD", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 123, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "LQTY": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3925C2", + "humanType": "Sweep to Main Account", + "id": 512, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "3.24303079" + }, + "LRC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2862F6", + "humanType": "Sweep to Main Account", + "id": 368, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "35.85297436" + }, + "LSK": { + "blockchain": "LSK", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "003075", + "humanType": "Sweep to Main Account", + "id": 278, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 303, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "LTBC": { + "blockchain": "LTBC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 124, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "15000.00000000" + }, + "LTC": { + "blockchain": "LTC", + "childChains": [ + "LTCTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "509BCA", + "humanType": "BTC Clone", + "id": 125, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 4, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "LTCBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 490, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "7272.34783700" + }, + "LTCBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 491, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "110.04588709" + }, + "LTCTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "509BCA", + "humanType": "Sweep to Main Account", + "id": 494, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "LTC", + "txFee": "0.00010000" + }, + "LTCX": { + "blockchain": "LTCX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 126, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "LUSD": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "6F62D7", + "humanType": "Sweep to Main Account", + "id": 513, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "20.95280622" + }, + "MAID": { + "blockchain": "MAID", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "5592D7", + "humanType": "Sweep to Main Account", + "id": 127, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1, + "name": "", + "parentChain": null, + "txFee": "80.00000000" + }, + "MANA": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "DB6C27", + "humanType": "Sweep to Main Account", + "id": 306, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "23.30030984" + }, + "MAST": { + "blockchain": "MAST", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 128, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MATIC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4791F2", + "humanType": "Sweep to Main Account", + "id": 338, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "12.78704412" + }, + "MAX": { + "blockchain": "MAX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 129, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MCB": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "DA7F43", + "humanType": "Sweep to Main Account", + "id": 398, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.87926581" + }, + "MCN": { + "blockchain": "MCN", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "VdttvavdPJNGD4NzPQf8Hn4tWUGyy9mQ58ScwXxKbx9ve4Kp8xXZ1kD1KmXUMp5qtX8GmRgMk16aNVBhENEHNQAb3488Ha7Vv", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 130, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "MDT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "6B9CE6", + "humanType": "Sweep to Main Account", + "id": 359, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "505.99778345" + }, + "MEC": { + "blockchain": "MEC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 131, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MEME": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "ECB754", + "humanType": "Sweep to Main Account", + "id": 433, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.03030478" + }, + "METH": { + "blockchain": "METH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 132, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MEXP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "B1D968", + "humanType": "Sweep to Main Account", + "id": 439, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2.26300000" + }, + "MIL": { + "blockchain": "MIL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 133, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MIN": { + "blockchain": "MIN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 134, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MINT": { + "blockchain": "MINT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 135, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "MIR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "232C45", + "humanType": "Sweep to Main Account", + "id": 516, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.91011129" + }, + "MIST": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "8A1FE3", + "humanType": "Sweep to Main Account", + "id": 521, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.30922828" + }, + "MKR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7EC5B6", + "humanType": "Sweep to Main Account", + "id": 328, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00540104" + }, + "MMC": { + "blockchain": "MMC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 136, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MMNXT": { + "blockchain": "MMNXT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 137, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "MMXIV": { + "blockchain": "MMXIV", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 138, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "MNTA": { + "blockchain": "MNTA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 139, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MON": { + "blockchain": "MON", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 140, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MPH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "AD45AB", + "humanType": "Sweep to Main Account", + "id": 456, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.44898680" + }, + "MRC": { + "blockchain": "MRC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 141, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MRS": { + "blockchain": "MRS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 142, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MTA": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "95989C", + "humanType": "Sweep to Main Account", + "id": 374, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "20.07023896" + }, + "MTS": { + "blockchain": "MTS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 144, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MUN": { + "blockchain": "MUN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 145, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MVL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 525, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1409.64378205" + }, + "MYR": { + "blockchain": "MYR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 146, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "MZC": { + "blockchain": "MZC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 147, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "N5X": { + "blockchain": "N5X", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 148, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NAS": { + "blockchain": "NAS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 149, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "NAUT": { + "blockchain": "NAUT", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 150, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "NAV": { + "blockchain": "NAV", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "7243BF", + "humanType": "BTC Clone", + "id": 151, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 480, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NBT": { + "blockchain": "NBT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 152, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NEO": { + "blockchain": "NEO", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3E8700", + "humanType": "BTC Clone", + "id": 348, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 18, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "NEOS": { + "blockchain": "NEOS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 153, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.00010000" + }, + "NFT": { + "blockchain": "TRX", + "childChains": [ + "NFTETH" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 526, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "1587301.58730159" + }, + "NFTETH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 527, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": "NFT", + "txFee": "7500000.00000000" + }, + "NFTX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EB34D2", + "humanType": "Sweep to Main Account", + "id": 515, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.32440509" + }, + "NL": { + "blockchain": "NL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 154, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NMC": { + "blockchain": "NMC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "6687B7", + "humanType": "BTC Clone", + "id": 155, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 24, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NMR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "171717", + "humanType": "Sweep to Main Account", + "id": 310, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.46258847" + }, + "NOBL": { + "blockchain": "NOBL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 156, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NOTE": { + "blockchain": "NOTE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 157, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NOXT": { + "blockchain": "NOXT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 158, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "NRS": { + "blockchain": "NRS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 159, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "NRV": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "161A2D", + "humanType": "Sweep to Main Account", + "id": 549, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "2.89000000" + }, + "NSR": { + "blockchain": "NSR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 160, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "2.00000000" + }, + "NTX": { + "blockchain": "NTX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 161, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "NU": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3665CA", + "humanType": "Sweep to Main Account", + "id": 461, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "66.40527181" + }, + "NXC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 288, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "8.75000000" + }, + "NXT": { + "blockchain": "NXT", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "008FBB", + "humanType": "Sweep to Main Account", + "id": 162, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 24, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "NXTI": { + "blockchain": "NXTI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 163, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "OCEAN": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B7BDB9", + "humanType": "Sweep to Main Account", + "id": 403, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "39.79558738" + }, + "OKB": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "005CEE", + "humanType": "Sweep to Main Account", + "id": 539, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.21160048" + }, + "OM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "DA386E", + "humanType": "Sweep to Main Account", + "id": 405, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "131.72388327" + }, + "OMG": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1A53F0", + "humanType": "Sweep to Main Account", + "id": 295, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "3.33345257" + }, + "OMNI": { + "blockchain": "OMNI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "1C347A", + "humanType": "Sweep to Main Account", + "id": 143, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1, + "name": "", + "parentChain": null, + "txFee": "4.00000000" + }, + "ONEINCH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "23344F", + "humanType": "Sweep to Main Account", + "id": 473, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "6.42542030" + }, + "OPAL": { + "blockchain": "OPAL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 164, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "OPT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "202D47", + "humanType": "Sweep to Main Account", + "id": 407, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "10.04723372" + }, + "PAND": { + "blockchain": "PAND", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 165, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PASC": { + "blockchain": "PASC", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "86646-64", + "disabled": 1, + "frozen": 0, + "hexColor": "D48200", + "humanType": "Payment ID", + "id": 289, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 300, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PAWN": { + "blockchain": "PAWN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 166, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PAX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "87B360", + "humanType": "Sweep to Main Account", + "id": 329, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "24.61944275" + }, + "PBTC35A": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4D70EE", + "humanType": "Sweep to Main Account", + "id": 482, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.48273417" + }, + "PEARL": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "8a66ac", + "humanType": "Sweep to Main Account", + "id": 419, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00390000" + }, + "PERP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1F2840", + "humanType": "Sweep to Main Account", + "id": 558, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.19781713" + }, + "PERX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EBCED2", + "humanType": "Sweep to Main Account", + "id": 399, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "11260.12736916" + }, + "PIGGY": { + "blockchain": "PIGGY", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 167, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PINK": { + "blockchain": "PINK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 168, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PLT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "578FCB", + "humanType": "Sweep to Main Account", + "id": 380, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "525.70578630" + }, + "PLX": { + "blockchain": "PLX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 169, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PMC": { + "blockchain": "PMC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 170, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "POL": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "00E2DF", + "humanType": "Sweep to Main Account", + "id": 540, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "10.00000000" + }, + "POLS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "D84D8C", + "humanType": "Sweep to Main Account", + "id": 444, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "10.58164685" + }, + "POLY": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3F4B80", + "humanType": "Sweep to Main Account", + "id": 311, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "63.57608696" + }, + "POT": { + "blockchain": "POT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 171, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PPC": { + "blockchain": "PPC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "34AA4C", + "humanType": "BTC Clone", + "id": 172, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PRC": { + "blockchain": "PRC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 173, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PRQ": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "225FC0", + "humanType": "Sweep to Main Account", + "id": 408, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "22.93311667" + }, + "PRT": { + "blockchain": "PRT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 174, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "PTS": { + "blockchain": "PTS", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "poloniexwallet", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 175, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "25.00000000" + }, + "Q2C": { + "blockchain": "Q2C", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 176, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "QBK": { + "blockchain": "QBK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 177, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "QCN": { + "blockchain": "QCN", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "1VQpANF1pcKHPRAsZpeyG4jLDd1kbPn32YMeXkr9n8jNFvf8aaJdecB3FyAvo7X1DWJDQt3nii9eUTP5kJSfRpL5AwT72FM", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 178, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "QORA": { + "blockchain": "QORA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 179, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "QTL": { + "blockchain": "QTL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 180, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "QTUM": { + "blockchain": "QTUM", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1297D7", + "humanType": "BTC Clone", + "id": 304, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 6, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "QUICK": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5278C0", + "humanType": "Sweep to Main Account", + "id": 523, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.02848646" + }, + "RADS": { + "blockchain": "RADS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 274, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "RARI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "6F9AF7", + "humanType": "Sweep to Main Account", + "id": 438, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.82292333" + }, + "RBY": { + "blockchain": "RBY", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 181, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "RD": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E46260", + "humanType": "Sweep to Main Account", + "id": 566, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.50000000" + }, + "RDD": { + "blockchain": "RDD", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 182, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "REEF": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4F37A4", + "humanType": "Sweep to Main Account", + "id": 475, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "806.48399252" + }, + "REN": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "C2C2C5", + "humanType": "Sweep to Main Account", + "id": 367, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "33.49173907" + }, + "REPV2": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "553580", + "humanType": "Sweep to Main Account", + "id": 437, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.94270579" + }, + "RFUEL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5786EB", + "humanType": "Sweep to Main Account", + "id": 440, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "382.11635453" + }, + "RIC": { + "blockchain": "RIC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 183, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "RING": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "9D40B2", + "humanType": "Sweep to Main Account", + "id": 383, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "292.47729181" + }, + "RLC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F0D04A", + "humanType": "Sweep to Main Account", + "id": 531, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.15124960" + }, + "ROOK": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "BDBDBD", + "humanType": "Sweep to Main Account", + "id": 466, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.10400690" + }, + "RSR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "646665", + "humanType": "Sweep to Main Account", + "id": 411, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "413.46942258" + }, + "RUNE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 1, + "hexColor": "66DCD8", + "humanType": "Sweep to Main Account", + "id": 534, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.95771795" + }, + "RZR": { + "blockchain": "RZR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 184, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SAL": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "EB4034", + "humanType": "Sweep to Main Account", + "id": 423, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.06573000" + }, + "SAND": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4BAFF2", + "humanType": "Sweep to Main Account", + "id": 434, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "30.27667841" + }, + "SBD": { + "blockchain": "SBD", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "poloniex", + "disabled": 1, + "frozen": 0, + "hexColor": "171FC9", + "humanType": "Payment ID", + "id": 282, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SBREE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "57AEC9", + "humanType": "Sweep to Main Account", + "id": 396, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.58300000" + }, + "SC": { + "blockchain": "SC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1ED660", + "humanType": "BTC Clone", + "id": 268, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 8, + "name": "", + "parentChain": null, + "txFee": "10.00000000" + }, + "SDC": { + "blockchain": "SDC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 185, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SENSO": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "848484", + "humanType": "Sweep to Main Account", + "id": 454, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "35.54201037" + }, + "SFI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B54F3D", + "humanType": "Sweep to Main Account", + "id": 467, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.02473439" + }, + "SHIB": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FA931E", + "humanType": "Sweep to Main Account", + "id": 509, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2586075.91911765" + }, + "SHIBE": { + "blockchain": "SHIBE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 186, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SHOPX": { + "blockchain": "SHOPX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 187, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SILK": { + "blockchain": "SILK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 188, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SJCX": { + "blockchain": "SJCX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 189, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "3.00000000" + }, + "SLR": { + "blockchain": "SLR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 190, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SMC": { + "blockchain": "SMC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 191, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SNT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "4360DF", + "humanType": "Sweep to Main Account", + "id": 300, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "420.98027860" + }, + "SNX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1D1B30", + "humanType": "Sweep to Main Account", + "id": 335, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "3.33191724" + }, + "SOC": { + "blockchain": "SOC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 192, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SPA": { + "blockchain": "SPA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 193, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SQL": { + "blockchain": "SQL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 194, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SRCC": { + "blockchain": "SRCC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 195, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SRG": { + "blockchain": "SRG", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 196, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SRM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "AFE4EF", + "humanType": "Sweep to Main Account", + "id": 487, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2.82173789" + }, + "SSD": { + "blockchain": "SSD", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 197, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "STAKE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "61A8A7", + "humanType": "Sweep to Main Account", + "id": 371, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.95571916" + }, + "STEEM": { + "blockchain": "STEEM", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "poloniex", + "disabled": 0, + "frozen": 0, + "hexColor": "5F00DE", + "humanType": "Payment ID", + "id": 281, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 50, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "STORJ": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2683FF", + "humanType": "Sweep to Main Account", + "id": 297, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "15.55983875" + }, + "STPT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "75A7D9", + "humanType": "Sweep to Main Account", + "id": 350, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "323.72702948" + }, + "STR": { + "blockchain": "STR", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "GCF7F72LNF3ODSJIIWPJWEVWX33VT2SVZSUQ5NMDKDLK3N2NFCUAUHPT", + "disabled": 0, + "frozen": 0, + "hexColor": "404040", + "humanType": "Payment ID", + "id": 198, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 2, + "name": "", + "parentChain": null, + "txFee": "0.00001000" + }, + "STRAT": { + "blockchain": "STRAT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "199FC5", + "humanType": "BTC Clone", + "id": 287, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 24, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SUM": { + "blockchain": "SUM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 199, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SUN": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "ffd60a", + "humanType": "Sweep to Main Account", + "id": 200, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "SUNX": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FFD60A", + "humanType": "Sweep to Main Account", + "id": 542, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "SUSHI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FF485A", + "humanType": "Sweep to Main Account", + "id": 414, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.55013125" + }, + "SWAP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "479CF7", + "humanType": "Sweep to Main Account", + "id": 384, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "13.75062849" + }, + "SWARM": { + "blockchain": "SWARM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 201, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1000.00000000" + }, + "SWFTC": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "BA8934", + "humanType": "Sweep to Main Account", + "id": 349, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "8341.19115380" + }, + "SWINGBY": { + "blockchain": "BNB", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2A358B", + "humanType": "Sweep to Main Account", + "id": 409, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "2.55059336" + }, + "SWRV": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "202427", + "humanType": "Sweep to Main Account", + "id": 425, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "28.13568631" + }, + "SXC": { + "blockchain": "SXC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 202, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "SXP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EC6B47", + "humanType": "Sweep to Main Account", + "id": 373, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "5.63971216" + }, + "SYNC": { + "blockchain": "SYNC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 203, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00010000" + }, + "SYS": { + "blockchain": "SYS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "2A448C", + "humanType": "BTC Clone", + "id": 204, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "TAC": { + "blockchain": "TAC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 205, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "TAI": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "1062F7", + "humanType": "Sweep to Main Account", + "id": 418, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "TEND": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FF9E03", + "humanType": "Sweep to Main Account", + "id": 385, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "306.38343236" + }, + "TOR": { + "blockchain": "TOR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 206, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "TORN": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "ADFAC4", + "humanType": "Sweep to Main Account", + "id": 496, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.40568519" + }, + "TRADE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "B6E6FC", + "humanType": "Sweep to Main Account", + "id": 386, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "105.72327003" + }, + "TRB": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "82F8B1", + "humanType": "Sweep to Main Account", + "id": 394, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.69955220" + }, + "TRU": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3166F6", + "humanType": "Sweep to Main Account", + "id": 479, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "38.41619571" + }, + "TRUMPWIN": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "D7352C", + "humanType": "Sweep to Main Account", + "id": 377, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "TRUST": { + "blockchain": "TRUST", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 207, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "TRX": { + "blockchain": "TRX", + "childChains": [ + "TRXETH" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "DC062B", + "humanType": "Sweep to Main Account", + "id": 315, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "TRXBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 330, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "28298210.05747126" + }, + "TRXBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 331, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "46.86556725" + }, + "TRXETH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EB332A", + "humanType": "Sweep to Main Account", + "id": 536, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": "TRX", + "txFee": "235.00000000" + }, + "TUSD": { + "blockchain": "ETH", + "childChains": [ + "TUSDTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "0A2A64", + "humanType": "Sweep to Main Account", + "id": 332, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "28.13650599" + }, + "TUSDTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "0A2A64", + "humanType": "Sweep to Main Account", + "id": 507, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "TUSD", + "txFee": "0.01000000" + }, + "TWE": { + "blockchain": "TWE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 208, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "UIS": { + "blockchain": "UIS", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 209, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ULTC": { + "blockchain": "ULTC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 210, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "UMA": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "ED5A52", + "humanType": "Sweep to Main Account", + "id": 381, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.76676704" + }, + "UNI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "ff007a", + "humanType": "Sweep to Main Account", + "id": 431, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.12338181" + }, + "UNITY": { + "blockchain": "UNITY", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 211, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "URO": { + "blockchain": "URO", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 212, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "USDC": { + "blockchain": "ETH", + "childChains": [ + "USDCTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2775CA", + "humanType": "Sweep to Main Account", + "id": 299, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "24.61944275" + }, + "USDCTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2876C9", + "humanType": "Sweep to Main Account", + "id": 543, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "USDC", + "txFee": "0.01000000" + }, + "USDE": { + "blockchain": "USDE", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 213, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "USDJ": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "A52A21", + "humanType": "Sweep to Main Account", + "id": 337, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.05000000" + }, + "USDT": { + "blockchain": "OMNI", + "childChains": [ + "USDTTRON", + "USDTETH" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "44A58B", + "humanType": "Sweep to Main Account", + "id": 214, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 2, + "name": "", + "parentChain": null, + "txFee": "100.00000000" + }, + "USDTETH": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 318, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": "USDT", + "txFee": "24.61944275" + }, + "USDTTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 316, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "USDT", + "txFee": "0.00000000" + }, + "UST": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5493F7", + "humanType": "Sweep to Main Account", + "id": 517, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "21.13065781" + }, + "UTC": { + "blockchain": "UTC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 215, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "UTIL": { + "blockchain": "UTIL", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 216, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "UVC": { + "blockchain": "UVC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 217, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "VALUE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3A71BD", + "humanType": "Sweep to Main Account", + "id": 442, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "10.08172751" + }, + "VIA": { + "blockchain": "VIA", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "231F20", + "humanType": "BTC Clone", + "id": 218, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 60, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "VOOT": { + "blockchain": "VOOT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 219, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "VOX": { + "blockchain": "VOX", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 276, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "VRC": { + "blockchain": "VRC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 220, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "VSP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3C3EA4", + "humanType": "Sweep to Main Account", + "id": 499, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "2.74111095" + }, + "VTC": { + "blockchain": "VTC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "048652", + "humanType": "BTC Clone", + "id": 221, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1200, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "WBTC": { + "blockchain": "ETH", + "childChains": [ + "WBTCTRON" + ], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F59C3D", + "humanType": "Sweep to Main Account", + "id": 453, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00030000" + }, + "WBTCTRON": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "F59C3D", + "humanType": "Sweep to Main Account", + "id": 474, + "isChildChain": 1, + "isGeofenced": 0, + "isMultiChain": 1, + "minConf": 0, + "name": "", + "parentChain": "WBTC", + "txFee": "0.00000000" + }, + "WC": { + "blockchain": "WC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 222, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "WDC": { + "blockchain": "WDC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 223, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "WETH": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 495, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.00370000" + }, + "WHALE": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "000000", + "humanType": "Sweep to Main Account", + "id": 514, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "1.45292053" + }, + "WIKI": { + "blockchain": "WIKI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 224, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "WIN": { + "blockchain": "TRX", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FAC50A", + "humanType": "Sweep to Main Account", + "id": 321, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "3500.00000000" + }, + "WNXM": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "646665", + "humanType": "Sweep to Main Account", + "id": 412, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.29304018" + }, + "WOLF": { + "blockchain": "WOLF", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 225, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.02000000" + }, + "WRX": { + "blockchain": "BNB", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "3B69E8", + "humanType": "Sweep to Main Account", + "id": 363, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "0.19855175" + }, + "X13": { + "blockchain": "X13", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 226, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XAI": { + "blockchain": "XAI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 227, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XAP": { + "blockchain": "XAP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 228, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "100.00000000" + }, + "XBC": { + "blockchain": "XBC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 229, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.00010000" + }, + "XC": { + "blockchain": "XC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 230, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XCH": { + "blockchain": "XCH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 231, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "XCN": { + "blockchain": "XCN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 232, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.02000000" + }, + "XCP": { + "blockchain": "XCP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "ED1650", + "humanType": "Sweep to Main Account", + "id": 233, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "16.00000000" + }, + "XCR": { + "blockchain": "XCR", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 234, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00017818" + }, + "XDN": { + "blockchain": "XDN", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "ddddecTXF5B9PDwqZXP4Bs1FwttZbhF2YTRstruKctMoFJTE3VgD5uKd4RzmTHdzkv52wWWK2NYmfJeaiTuut2Pe2RVimGCvZ", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 235, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "XDOT": { + "blockchain": "XDOT", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "D84D8C", + "humanType": "Sweep to Main Account", + "id": 402, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "XDP": { + "blockchain": "XDP", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 236, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "XEM": { + "blockchain": "XEM", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "NBZMQO7ZPBYNBDUR7F75MAKA2S3DHDCIFG775N3D", + "disabled": 0, + "frozen": 0, + "hexColor": "2CBAAD", + "humanType": "Payment ID", + "id": 256, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 18, + "name": "", + "parentChain": null, + "txFee": "15.00000000" + }, + "XFLR": { + "blockchain": null, + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "D78F9B", + "humanType": "Sweep to Main Account", + "id": 471, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 0, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "XHC": { + "blockchain": "XHC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 237, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XLB": { + "blockchain": "XLB", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 238, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XLMBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 492, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "247.76089576" + }, + "XLMBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 493, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "5.15891748" + }, + "XMG": { + "blockchain": "XMG", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 239, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XMR": { + "blockchain": "XMR", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EB5E00", + "humanType": "BTC Clone", + "id": 240, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 8, + "name": "", + "parentChain": null, + "txFee": "0.00010000" + }, + "XOR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "CD352D", + "humanType": "Sweep to Main Account", + "id": 522, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.08747702" + }, + "XPB": { + "blockchain": "XPB", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 1, + "depositAddress": "PByFtxkMuoFRwrhXU19PBXLgHssTtcvTDSGzNf7Rvt5uKEf5PnRL4ccK4pWN4dpwvGhggGq12gH4bMqbxLyQGhkf3RLfzurMdK", + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Payment ID", + "id": 241, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "XPM": { + "blockchain": "XPM", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "AC771B", + "humanType": "BTC Clone", + "id": 242, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 2880, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XRP": { + "blockchain": "XRP", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "rwU8rAiE2eyEPz3sikfbHuqCuiAtdXqa2v", + "disabled": 0, + "frozen": 0, + "hexColor": "0085C0", + "humanType": "Payment ID", + "id": 243, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 2, + "name": "", + "parentChain": null, + "txFee": "0.05000000" + }, + "XRPBEAR": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 353, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "87926581.25000000" + }, + "XRPBULL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "7BC8DB", + "humanType": "Sweep to Main Account", + "id": 352, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "834.54832863" + }, + "XSI": { + "blockchain": "XSI", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 244, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XST": { + "blockchain": "XST", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 245, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XSV": { + "blockchain": "XSV", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 246, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XTZ": { + "blockchain": "XTZ", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "4180EE", + "humanType": "Sweep to Main Account", + "id": 336, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 30, + "name": "", + "parentChain": null, + "txFee": "0.25000000" + }, + "XUSD": { + "blockchain": "XUSD", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "Sweep to Main Account", + "id": 247, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00000000" + }, + "XVC": { + "blockchain": "XVC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 253, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 1000000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XVS": { + "blockchain": "BSC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "EEC271", + "humanType": "Sweep to Main Account", + "id": 545, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 15, + "name": "", + "parentChain": null, + "txFee": "0.10000000" + }, + "XXC": { + "blockchain": "XXC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 248, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "XYM": { + "blockchain": "XYM", + "childChains": [], + "currencyType": "address-payment-id", + "delisted": 0, + "depositAddress": "ND4D3TWGBR6WEMLBIYZ3O2Q4V7BCEUMZMLTTPEQ", + "disabled": 0, + "frozen": 0, + "hexColor": "440074", + "humanType": "Payment ID", + "id": 501, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 41, + "name": "", + "parentChain": null, + "txFee": "1.00000000" + }, + "YACC": { + "blockchain": "YACC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 249, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "YANG": { + "blockchain": "YANG", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 250, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "YC": { + "blockchain": "YC", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 251, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "YFI": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "95989C", + "humanType": "Sweep to Main Account", + "id": 375, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00053784" + }, + "YFII": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "E81F63", + "humanType": "Sweep to Main Account", + "id": 415, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.00511966" + }, + "YFL": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "2B5ADB", + "humanType": "Sweep to Main Account", + "id": 417, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.12867659" + }, + "YFV": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 1, + "hexColor": "2f81e4", + "humanType": "Sweep to Main Account", + "id": 416, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.53492856" + }, + "YFX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "FFB219", + "humanType": "Sweep to Main Account", + "id": 554, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "89.55628549" + }, + "YGG": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "AA8B55", + "humanType": "Sweep to Main Account", + "id": 564, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "4.60044706" + }, + "YIN": { + "blockchain": "YIN", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 252, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.01000000" + }, + "ZAP": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "46A2F8", + "humanType": "Sweep to Main Account", + "id": 393, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "399.83833005" + }, + "ZEC": { + "blockchain": "ZEC", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "D99F00", + "humanType": "BTC Clone", + "id": 286, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 8, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + }, + "ZKS": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "5A22A3", + "humanType": "Sweep to Main Account", + "id": 497, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "24.45693247" + }, + "ZLOT": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "DAE2E3", + "humanType": "Sweep to Main Account", + "id": 460, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "0.26454333" + }, + "ZRX": { + "blockchain": "ETH", + "childChains": [], + "currencyType": "address", + "delisted": 0, + "depositAddress": null, + "disabled": 0, + "frozen": 0, + "hexColor": "003831", + "humanType": "Sweep to Main Account", + "id": 293, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 12, + "name": "", + "parentChain": null, + "txFee": "18.83724034" + }, + "eTOK": { + "blockchain": "eTOK", + "childChains": [], + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "hexColor": "068485", + "humanType": "BTC Clone", + "id": 72, + "isChildChain": 0, + "isGeofenced": 0, + "isMultiChain": 0, + "minConf": 10000, + "name": "", + "parentChain": null, + "txFee": "0.00100000" + } + }, + "queryString": "command=returnCurrencies\u0026includeMultiChainCurrencies=true", + "bodyParams": "", + "headers": {} } ] }, @@ -9901,26 +20119,6 @@ ] } }, - { - "data": { - "DASH": "XdtARx7FhLAqz4aXx6A9zpVXHzAcMjTyvi", - "LTC": "LaqbMc97SWBHpL7PeXNDDkgjWXC637ybGi", - "MAID": "1DonoYTRh83D9z8GLSMK65Czrcecb7R3VF" - }, - "queryString": "", - "bodyParams": "command=returnDepositAddresses\u0026nonce=1594157624217368005", - "headers": { - "Content-Type": [ - "application/x-www-form-urlencoded" - ], - "Key": [ - "" - ], - "Sign": [ - "9fd9a91c0fb9fd1ebd487146932d215461c3bbe72976d64767d3315934ffbfdac982de1c41d52a77f8fc06933b8e365e5189d9e23ffaa5bc2f2c33e77916b22c" - ] - } - }, { "data": { "currencyPair": "BTC_LTC", @@ -12569,6 +22767,72 @@ "7673324ee69afb1ac1b9b55c4fa22a097624353e2a975977e09e8958cae1b17bcccf8beffd7791a197a9ce3f7059eb727d50c86031f43f921034263cd6ba2439" ] } + }, + { + "data": { + "response": "Please use the following previously generated deposit address: LeFFAYmkSaU7ZhR3Ucq4Fvg4z1QTd9mmMN", + "success": 0 + }, + "queryString": "", + "bodyParams": "command=generateNewAddress\u0026currency=LTC\u0026nonce=1629687075227014300", + "headers": { + "Content-Type": [ + "application/x-www-form-urlencoded" + ], + "Key": [ + "" + ], + "Sign": [ + "ac25fc0b6c0b5d8c4784776a1ebb4a4ce97f6201fab8bdfae47589cdb1b4ab5e18875b14d4cac2412109e36ded103f9dc05a888f482e2d47132955099410f216" + ] + } + }, + { + "data": { + "response": "Please use the following previously generated deposit address: 1083644748", + "success": 0 + }, + "queryString": "", + "bodyParams": "command=generateNewAddress\u0026currency=XRP\u0026nonce=1629687130881488000", + "headers": { + "Content-Type": [ + "application/x-www-form-urlencoded" + ], + "Key": [ + "" + ], + "Sign": [ + "0d30720d6cf1cc5db3742c89001d562e097c6aa8df0f0c1395a97c1105a4006e96d503b99b337e76e4ac86f93d2c3e89a74d0c48a60fd99dd11a4c5b4110f094" + ] + } + }, + { + "data": { + "BCH": "1FNVZjj3cJLpBtSmrBmun5KzC8XVmKH6LF", + "BCHABC": "1FNVZjj3cJLpBtSmrBmun5KzC8XVmKH6LF", + "BCHSV": "1FNVZjj3cJLpBtSmrBmun5KzC8XVmKH6LF", + "BNB": "bnb1fp33lzp8m0vqk75x6ny658qfwd9s5nwjlqkqdj", + "BSC": "0x3d20500b96e03e338e24991f5e623cb4fcf839be", + "BTC": "1KX2MNB1u2K1TU5md5BT2kn3rpHCNibpta", + "ETH": "0x7d28c2eee6ff17c50be3846d82bf179cb0edf69b", + "LTC": "LeFFAYmkSaU7ZhR3Ucq4Fvg4z1QTd9mmMN", + "USDTETH": "0x7d28c2eee6ff17c50be3846d82bf179cb0edf69b", + "USDTTRON": "TAULWokojh69qPmfEyf85L9iCsc8X8F4sE", + "XRP": "1083644748" + }, + "queryString": "", + "bodyParams": "command=returnDepositAddresses\u0026nonce=1629694262195654800", + "headers": { + "Content-Type": [ + "application/x-www-form-urlencoded" + ], + "Key": [ + "" + ], + "Sign": [ + "d3e3ccba0991f7891a788d5737880ef2cd634962669a4d90b4c46b4047d45fd9348489ad849477fd56fecdfd9189a2029c3cc92e68a3caa9597db0632edeced9" + ] + } } ] } diff --git a/testdata/http_mock/zb/zb.json b/testdata/http_mock/zb/zb.json index ad73d651..78a11dbf 100644 --- a/testdata/http_mock/zb/zb.json +++ b/testdata/http_mock/zb/zb.json @@ -1,5 +1,53 @@ { "routes": { + "/api/getPayinAddress": { + "GET": [ + { + "data": { + "code": 1001, + "message": "暂无地址,请先前往APP或WEB获取地址" + }, + "queryString": "accesskey=\u0026currency=btc\u0026method=getPayinAddress\u0026reqTime=1631162511742\u0026sign=b223f64c54af7f040455d5ee15ff2242", + "bodyParams": "", + "headers": {} + }, + { + "data": { + "code": 1000, + "message": { + "datas": [ + { + "address": "0x7425dd3bf8dd3ec40522988a4431fe7e812b2011", + "blockChain": "eth", + "canDeposit": true, + "canWithdraw": true, + "isUseMemo": false + }, + { + "address": "TULhiu4Ffng27BABRJAkAUzqLpiLjNgwfC", + "blockChain": "trx", + "canDeposit": true, + "canWithdraw": true, + "isUseMemo": false + }, + { + "address": "1DoWTZHg4kF1DnR2kZ7J9wezVVReigrMjZ", + "blockChain": "btc", + "canDeposit": true, + "canWithdraw": true, + "isUseMemo": false + } + ], + "des": "success", + "isSuc": true + } + }, + "queryString": "accesskey=\u0026currency=usdt\u0026method=getPayinAddress\u0026reqTime=1631162512275\u0026sign=25ba302f911b23ad2364394906d6033f", + "bodyParams": "", + "headers": {} + } + ] + }, "/data/v1/allTicker": { "GET": [ {