diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6b9c58279..0cbbdeed1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,40 @@
+## [1.2.1](https://github.com/ExchangeUnion/xud/compare/v1.0.0...v1.2.1) (2020-11-19)
+
+This maintenance release includes a number of features, most significantly it switches xud to use lnd's new `sendpaymentv2` call to prepare for multi-channel trades. It also improves xud's shutdown behavior and fixes several bugs.
+
+### Bug Fixes
+
+* added swap success log entry ([#1649](https://github.com/ExchangeUnion/xud/issues/1649)) ([e914ec0](https://github.com/ExchangeUnion/xud/commit/e914ec028f6420bbf2d973b92626f6284a9a8ba5))
+* graceful shutdown ([#1994](https://github.com/ExchangeUnion/xud/issues/1994)) ([cde3203](https://github.com/ExchangeUnion/xud/commit/cde320312dcd08f70123b5949d038205748d6148))
+* **cli:** typo in unlock.ts ([#1944](https://github.com/ExchangeUnion/xud/issues/1944)) ([7f61b32](https://github.com/ExchangeUnion/xud/commit/7f61b321c7e5c77585650ef7ff8415bdc29f6c15))
+* **lnd:** don't calculate negative capacities ([b1020c1](https://github.com/ExchangeUnion/xud/commit/b1020c1a5cf2b386b9948efad9b5868232323945))
+* addpair should prevent adding same base and quote assets ([#1559](https://github.com/ExchangeUnion/xud/issues/1559)) ([69f502f](https://github.com/ExchangeUnion/xud/commit/69f502f12b9fab12a558cc304eb5b58e19836561))
+* tls certificate check on startup ([#1510](https://github.com/ExchangeUnion/xud/issues/1510)) ([9633678](https://github.com/ExchangeUnion/xud/commit/9633678de77fcd1728118998b896e60ec1261f90))
+* use regtest instead of regnet arg ([7c6a226](https://github.com/ExchangeUnion/xud/commit/7c6a22640c414003ec3a88adc623d622065677df))
+* **lnd:** handling hold invoice check errors ([#1969](https://github.com/ExchangeUnion/xud/issues/1969)) ([5746516](https://github.com/ExchangeUnion/xud/commit/57465168e24ed467427265af446c27a31427912a)), closes [#1968](https://github.com/ExchangeUnion/xud/issues/1968)
+* alias missing in streamorders ([#1725](https://github.com/ExchangeUnion/xud/issues/1725)) ([#1962](https://github.com/ExchangeUnion/xud/issues/1962)) ([d537206](https://github.com/ExchangeUnion/xud/commit/d537206abec4835f96807853c66b23acaeb62e88))
+* **cli:** openchannel assertion error for string amount ([#1950](https://github.com/ExchangeUnion/xud/issues/1950)) ([a0cc6d7](https://github.com/ExchangeUnion/xud/commit/a0cc6d74dc73176cb43ba496a73f32be31adb8cd)), closes [#1643](https://github.com/ExchangeUnion/xud/issues/1643)
+* **connext:** not enough balance for closechannel ([#1963](https://github.com/ExchangeUnion/xud/issues/1963)) ([6599d88](https://github.com/ExchangeUnion/xud/commit/6599d885cfce3361715b99037013aca89220a658))
+* **p2p:** don't reconnect peers when pool closed ([#1965](https://github.com/ExchangeUnion/xud/issues/1965)) ([8483e1e](https://github.com/ExchangeUnion/xud/commit/8483e1e35d7fdc80404cac59768ddc61a773b465)), closes [#1668](https://github.com/ExchangeUnion/xud/issues/1668) [/github.com/ExchangeUnion/xud/issues/1668#issuecomment-684828808](https://github.com//github.com/ExchangeUnion/xud/issues/1668/issues/issuecomment-684828808)
+* **rpc:** no success if no channels to close ([#1689](https://github.com/ExchangeUnion/xud/issues/1689)) ([#1942](https://github.com/ExchangeUnion/xud/issues/1942)) ([17e40de](https://github.com/ExchangeUnion/xud/commit/17e40deda3ced6de23030094b6ada5f11dd383df))
+* getinfo output for lnd channels ([#1940](https://github.com/ExchangeUnion/xud/issues/1940)) ([#1948](https://github.com/ExchangeUnion/xud/issues/1948)) ([962daa4](https://github.com/ExchangeUnion/xud/commit/962daa46081bc3122a04afa82bbe88eb53ec0026))
+* manual ban causes an undefined log entry ([#1779](https://github.com/ExchangeUnion/xud/issues/1779)) ([e7f8178](https://github.com/ExchangeUnion/xud/commit/e7f817841fccee30415f754816644f161fe6cc2c))
+* rename tradinglimits reserved_inbound json_name ([7e56011](https://github.com/ExchangeUnion/xud/commit/7e560111dbb10079a6e9c488d46fb0ecc8bb1cb6))
+
+
+### Features
+
+* **lnd:** SendPaymentV2 ([51c60dc](https://github.com/ExchangeUnion/xud/commit/51c60dcdc09df38a641dcc6142bee2539b8c85f6)), closes [#1590](https://github.com/ExchangeUnion/xud/issues/1590)
+* **rpc:** runtime addcurrency for lnd & connext ([#1746](https://github.com/ExchangeUnion/xud/issues/1746)) ([fc83823](https://github.com/ExchangeUnion/xud/commit/fc8382313854b259ca97256004c8ddbb35dcffca))
+* **swapclient:** auto init wallets on xud unlock ([#1973](https://github.com/ExchangeUnion/xud/issues/1973)) ([a1287dd](https://github.com/ExchangeUnion/xud/commit/a1287dda7740a92e92d8799bf4f2a8a0279d21a8)), closes [#1929](https://github.com/ExchangeUnion/xud/issues/1929)
+* reserved capacity checks on PlaceOrder ([#1949](https://github.com/ExchangeUnion/xud/issues/1949)) ([d458745](https://github.com/ExchangeUnion/xud/commit/d4587458ab15a43bb6f4cfea18ee13cbd2653075)), closes [#1947](https://github.com/ExchangeUnion/xud/issues/1947)
+* **lnd:** change gRPC client options ([aefdce8](https://github.com/ExchangeUnion/xud/commit/aefdce84e2c6cae35bf243f21a5224427fe2bfcc))
+* removeorder output changed to a more meaningful message ([#1526](https://github.com/ExchangeUnion/xud/issues/1526)) ([ba04193](https://github.com/ExchangeUnion/xud/commit/ba041938cdcddb3aedec0db8fe4f571e2608b9d1))
+* **rpc:** SetLogLevel ([#1955](https://github.com/ExchangeUnion/xud/issues/1955)) ([8d10df0](https://github.com/ExchangeUnion/xud/commit/8d10df00f7442ea58286726f0348d0f43eae7622)), closes [#835](https://github.com/ExchangeUnion/xud/issues/835)
+* added new grpc method to easily cancel all orders ([#1910](https://github.com/ExchangeUnion/xud/issues/1910)) ([c958e86](https://github.com/ExchangeUnion/xud/commit/c958e862542fb52fdeb6532cbe2d92dd4b52cedf))
+
+
+
# [1.2.0](https://github.com/ExchangeUnion/xud/compare/v1.0.0...v1.2.0) (2020-10-16)
This release includes a number of fixes and features, most significantly related to Connext integration.
@@ -866,4 +903,3 @@ command line arguments.
* **p2p/orderbook:** update supported pairs ([1014cbd](https://github.com/ExchangeUnion/xud/commit/1014cbd))
* **rpc:** add GetNodeInfo call ([#570](https://github.com/ExchangeUnion/xud/issues/570)) ([1a038a2](https://github.com/ExchangeUnion/xud/commit/1a038a2)), closes [#529](https://github.com/ExchangeUnion/xud/issues/529)
* **swaps:** store swapdeals in database ([#569](https://github.com/ExchangeUnion/xud/pull/569)) ([9a7a629a](https://github.com/ExchangeUnion/xud/commit/9a7a629a9b2c9b8d28d035dc32543aed5e30be47)), closes [#562](https://github.com/ExchangeUnion/xud/issues/562)
-
diff --git a/docs/api.md b/docs/api.md
index 17fe89f47..ec9fbb2c6 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -34,6 +34,8 @@
- [GetInfoRequest](#xudrpc.GetInfoRequest)
- [GetInfoResponse](#xudrpc.GetInfoResponse)
- [GetInfoResponse.LndEntry](#xudrpc.GetInfoResponse.LndEntry)
+ - [GetMnemonicRequest](#xudrpc.GetMnemonicRequest)
+ - [GetMnemonicResponse](#xudrpc.GetMnemonicResponse)
- [GetNodeInfoRequest](#xudrpc.GetNodeInfoRequest)
- [GetNodeInfoResponse](#xudrpc.GetNodeInfoResponse)
- [ListCurrenciesRequest](#xudrpc.ListCurrenciesRequest)
@@ -593,6 +595,31 @@
+
+
+### GetMnemonicRequest
+
+
+
+
+
+
+
+
+
+### GetMnemonicResponse
+
+
+
+| Field | Type | Label | Description |
+| ----- | ---- | ----- | ----------- |
+| seed_mnemonic | [string](#string) | repeated | |
+
+
+
+
+
+
### GetNodeInfoRequest
@@ -1666,6 +1693,7 @@ The primary service for interacting with a running xud node.
| DiscoverNodes | [DiscoverNodesRequest](#xudrpc.DiscoverNodesRequest) | [DiscoverNodesResponse](#xudrpc.DiscoverNodesResponse) | Discover nodes from a specific peer and apply new connections |
| GetBalance | [GetBalanceRequest](#xudrpc.GetBalanceRequest) | [GetBalanceResponse](#xudrpc.GetBalanceResponse) | Gets the total balance available across all payment channels and wallets for one or all currencies. shell: xucli getbalance [currency] |
| GetInfo | [GetInfoRequest](#xudrpc.GetInfoRequest) | [GetInfoResponse](#xudrpc.GetInfoResponse) | Gets general information about this node. shell: xucli getinfo |
+| GetMnemonic | [GetMnemonicRequest](#xudrpc.GetMnemonicRequest) | [GetMnemonicResponse](#xudrpc.GetMnemonicResponse) | Gets the master seed mnemonic . shell: xucli getnemonic |
| GetNodeInfo | [GetNodeInfoRequest](#xudrpc.GetNodeInfoRequest) | [GetNodeInfoResponse](#xudrpc.GetNodeInfoResponse) | Gets general information about a node. shell: xucli getnodeinfo <node_identifier> |
| ListOrders | [ListOrdersRequest](#xudrpc.ListOrdersRequest) | [ListOrdersResponse](#xudrpc.ListOrdersResponse) | Gets orders from the order book. This call returns the state of the order book at a given point in time, although it is not guaranteed to still be vaild by the time a response is received and processed by a client. It accepts an optional trading pair id parameter. If specified, only orders for that particular trading pair are returned. Otherwise, all orders are returned. Orders are separated into buys and sells for each trading pair, but unsorted. shell: xucli listorders [pair_id] [include_own_orders] [limit] |
| ListCurrencies | [ListCurrenciesRequest](#xudrpc.ListCurrenciesRequest) | [ListCurrenciesResponse](#xudrpc.ListCurrenciesResponse) | Gets a list of this node's supported currencies. shell: xucli listcurrencies |
diff --git a/lib/Xud.ts b/lib/Xud.ts
index aeec157f9..9a206ce3e 100644
--- a/lib/Xud.ts
+++ b/lib/Xud.ts
@@ -205,6 +205,7 @@ class Xud extends EventEmitter {
this.service = new Service({
version,
+ nodeKey,
orderBook: this.orderBook,
swapClientManager: this.swapClientManager,
pool: this.pool,
diff --git a/lib/cli/commands/create.ts b/lib/cli/commands/create.ts
index 1f02d7a72..f07c5c84f 100644
--- a/lib/cli/commands/create.ts
+++ b/lib/cli/commands/create.ts
@@ -2,7 +2,7 @@ import readline from 'readline';
import { Arguments } from 'yargs';
import { CreateNodeRequest, CreateNodeResponse } from '../../proto/xudrpc_pb';
import { callback, loadXudInitClient } from '../command';
-import { getDefaultCertPath, waitForCert } from '../utils';
+import { getDefaultCertPath, waitForCert, showSeed } from '../utils';
export const command = 'create';
@@ -11,37 +11,18 @@ export const describe = 'create a new xud instance and set a password';
export const builder = {};
const formatOutput = (response: CreateNodeResponse.AsObject) => {
- if (response.seedMnemonicList.length === 24) {
- const WORDS_PER_ROW = 4;
- const numberedMnemonic = response.seedMnemonicList.map((value, index) => {
- return `${index >= 9 ? '' : ' '}${index + 1}. ${value.padEnd(10)}`;
- });
- console.log('----------------------BEGIN XUD SEED---------------------');
- for (let n = 0; n < response.seedMnemonicList.length / WORDS_PER_ROW; n += 1) {
- console.log(numberedMnemonic.slice(n * WORDS_PER_ROW, (n + 1) * WORDS_PER_ROW).join(' '));
- }
- console.log('-----------------------END XUD SEED----------------------\n');
-
- let walletInitializedMessage = 'The following wallets were initialized: ';
-
- if (response.initializedLndsList.length) {
- walletInitializedMessage += response.initializedLndsList.join(', ') + (response.initializedConnext ? ', ETH' : '');
- } else if (response.initializedConnext) {
- walletInitializedMessage += 'ETH';
- }
+ const { seedMnemonicList } = response;
+ showSeed(seedMnemonicList);
- console.log(walletInitializedMessage);
+ let walletInitializedMessage = 'The following wallets were initialized: ';
- console.log(`
-Please write down your 24 word mnemonic. It will allow you to recover your xud \
-node key and on-chain funds for the initialized wallets listed above should you \
-forget your password or lose your device. Off-chain funds in channels can NOT \
-be recovered with it and must be backed up and recovered separately. Keep it \
-somewhere safe, it is your ONLY backup in case of data loss.
-`);
- } else {
- console.log('xud was initialized without a seed because no wallets could be initialized.');
+ if (response.initializedLndsList.length) {
+ walletInitializedMessage += response.initializedLndsList.join(', ') + (response.initializedConnext ? ', ETH' : '');
+ } else if (response.initializedConnext) {
+ walletInitializedMessage += 'ETH';
}
+
+ console.log(walletInitializedMessage);
};
export const handler = (argv: Arguments) => {
diff --git a/lib/cli/commands/getmnemonic.ts b/lib/cli/commands/getmnemonic.ts
new file mode 100644
index 000000000..16d7aa2c4
--- /dev/null
+++ b/lib/cli/commands/getmnemonic.ts
@@ -0,0 +1,27 @@
+import { Arguments } from 'yargs';
+import { GetMnemonicRequest, GetMnemonicResponse } from '../../proto/xudrpc_pb';
+import { callback, loadXudClient } from '../command';
+import { showSeed } from '../utils';
+
+const formatOutput = (response: GetMnemonicResponse.AsObject) => {
+ const { seedMnemonicList } = response;
+
+ showSeed(seedMnemonicList);
+
+ // The mnemonic won't be the same as was returned for the `xucli create` call.
+ // xud uses aezeed which is salted with random bytes, xud does not store the
+ // salt or the mnemonic words. Each time xud regenerates the mnemonic, it
+ // uses a new salt so that the mnemonic is different.
+ console.log(`
+Note that this mnemonic changes each time it is regenerated by xud, but it \
+still restores the same xud node key and underlying wallets.
+`);
+};
+
+export const command = 'getmnemonic';
+
+export const describe = 'show the master xud seed mnemonic';
+
+export const handler = async (argv: Arguments) => {
+ (await loadXudClient(argv)).getMnemonic(new GetMnemonicRequest(), callback(argv, formatOutput));
+};
diff --git a/lib/cli/utils.ts b/lib/cli/utils.ts
index 09e045502..8294678b1 100644
--- a/lib/cli/utils.ts
+++ b/lib/cli/utils.ts
@@ -85,6 +85,26 @@ export const waitForCert = (certPath: string) => {
});
};
+export function showSeed(seedMnemonicList: string[]) {
+ const WORDS_PER_ROW = 4;
+ const numberedMnemonic = seedMnemonicList.map((value, index) => {
+ return `${index >= 9 ? '' : ' '}${index + 1}. ${value.padEnd(10)}`;
+ });
+ console.log('----------------------BEGIN XUD SEED---------------------');
+ for (let n = 0; n < seedMnemonicList.length / WORDS_PER_ROW; n += 1) {
+ console.log(numberedMnemonic.slice(n * WORDS_PER_ROW, (n + 1) * WORDS_PER_ROW).join(' '));
+ }
+ console.log('-----------------------END XUD SEED----------------------\n');
+
+ console.log(`
+Please write down your 24 word mnemonic. It will allow you to recover your xud \
+node key and on-chain funds for the initialized wallets listed above should you \
+forget your password or lose your device. Off-chain funds in channels can NOT \
+be recovered with it and must be backed up and recovered separately. Keep it \
+somewhere safe, it is your ONLY backup in case of data loss.
+`);
+}
+
export const waitForClient = (client: XudClient, argv: Arguments, ensureConnection: Function, successCallback: Function, printError?: boolean) => {
client.waitForReady(Date.now() + 3000, (error: Error | null) => {
if (error) {
diff --git a/lib/connextclient/ConnextClient.ts b/lib/connextclient/ConnextClient.ts
index 0b8c0bc41..3df2b6b95 100644
--- a/lib/connextclient/ConnextClient.ts
+++ b/lib/connextclient/ConnextClient.ts
@@ -120,6 +120,9 @@ class ConnextClient extends SwapClient {
private outboundAmounts = new Map();
private inboundAmounts = new Map();
+ private pendingRequests = new Set();
+ private criticalRequestPaths = ['/hashlock-resolve', '/hashlock-transfer'];
+
/** The minimum incremental quantity that we may use for collateral requests. */
private static MIN_COLLATERAL_REQUEST_SIZES: { [key: string]: number | undefined } = {
ETH: 0.1 * 10 ** 8,
@@ -888,6 +891,16 @@ class ConnextClient extends SwapClient {
/** Connext client specific cleanup. */
protected disconnect = async () => {
this.setStatus(ClientStatus.Disconnected);
+
+ for (const req of this.pendingRequests) {
+ if (this.criticalRequestPaths.includes(req.path)) {
+ this.logger.warn(`critical request is pending: ${req.path}`);
+ continue;
+ }
+
+ this.logger.info(`aborting pending request: ${req.path}`);
+ req.destroy();
+ }
}
/**
@@ -915,7 +928,11 @@ class ConnextClient extends SwapClient {
}
this.logger.trace(`sending request to ${endpoint}${payloadStr ? `: ${payloadStr}` : ''}`);
- const req = http.request(options, async (res) => {
+
+ let req: http.ClientRequest;
+ req = http.request(options, async (res) => {
+ this.pendingRequests.delete(req);
+
let err: XudError | undefined;
let body;
switch (res.statusCode) {
@@ -957,6 +974,7 @@ class ConnextClient extends SwapClient {
});
req.on('error', async (err: any) => {
+ this.pendingRequests.delete(req);
if (err.code === 'ECONNREFUSED') {
await this.disconnect();
}
@@ -967,7 +985,9 @@ class ConnextClient extends SwapClient {
if (payloadStr) {
req.write(payloadStr);
}
+
req.end();
+ this.pendingRequests.add(req);
});
}
}
diff --git a/lib/grpc/GrpcService.ts b/lib/grpc/GrpcService.ts
index e1e606227..562fac6a0 100644
--- a/lib/grpc/GrpcService.ts
+++ b/lib/grpc/GrpcService.ts
@@ -582,6 +582,23 @@ class GrpcService {
}
}
+ /**
+ * See [[Service.getMnemonic]]
+ */
+ public getMnemonic: grpc.handleUnaryCall = async (_, callback) => {
+ if (!this.isReady(this.service, callback)) {
+ return;
+ }
+ try {
+ const mnemonic = await this.service.getMnemonic();
+ const response = new xudrpc.GetMnemonicResponse();
+ response.setSeedMnemonicList(mnemonic);
+ callback(null, response);
+ } catch (err) {
+ callback(getGrpcError(err), null);
+ }
+ }
+
/**
* See [[Service.getNodeInfo]]
*/
diff --git a/lib/nodekey/NodeKey.ts b/lib/nodekey/NodeKey.ts
index 1f571d0a9..3731dbdf6 100644
--- a/lib/nodekey/NodeKey.ts
+++ b/lib/nodekey/NodeKey.ts
@@ -4,6 +4,7 @@ import { promises as fs } from 'fs';
import { createCipheriv, createDecipheriv, createHash } from 'crypto';
import { entropyToMnemonic } from 'bip39';
import { SwapClientType } from '../constants/enums';
+import { encipher } from '../utils/seedutil';
/**
* A class representing an ECDSA public/private key pair that identifies an XU node on the network
@@ -128,6 +129,13 @@ class NodeKey {
return entropyToMnemonic(childSeedEntropy);
}
+ public getMnemonic = async () => {
+ const decipheredSeed = this.privKey.slice(0, 19);
+ const decipheredSeedHex = decipheredSeed.toString('hex');
+ const seedMnemonic = await encipher(decipheredSeedHex);
+
+ return seedMnemonic;
+ }
}
export default NodeKey;
diff --git a/lib/orderbook/OrderBook.ts b/lib/orderbook/OrderBook.ts
index 423c8472a..c8e6b27a5 100644
--- a/lib/orderbook/OrderBook.ts
+++ b/lib/orderbook/OrderBook.ts
@@ -35,7 +35,7 @@ interface OrderBook {
on(event: 'ownOrder.filled', listener: (order: OwnOrder) => void): this;
/** Adds a listener to be called when a local order was added */
on(event: 'ownOrder.added', listener: (order: OwnOrder) => void): this;
- /** Adds a listener to be called when a local order was removed */
+ /** Adds a listener to be called when a local order was removed either manually or due to a swap initiated by a peer */
on(event: 'ownOrder.removed', listener: (order: OwnOrder) => void): this;
/** Notifies listeners that a remote order was added */
@@ -44,13 +44,13 @@ interface OrderBook {
emit(event: 'peerOrder.invalidation', order: OrderPortion): boolean;
/** Notifies listeners that all or part of a remote order was filled by an own order and removed */
emit(event: 'peerOrder.filled', order: OrderPortion): boolean;
- /** Notifies listeners that all or part of a local order was swapped and removed, after it was filled and executed remotely */
+ /** Notifies listeners that all or part of a local order was swapped after being filled and executed remotely */
emit(event: 'ownOrder.swapped', order: OrderPortion): boolean;
/** Notifies listeners that all or part of a local order was filled by an own order and removed */
emit(event: 'ownOrder.filled', order: OwnOrder): boolean;
/** Notifies listeners that a local order was added */
emit(event: 'ownOrder.added', order: OwnOrder): boolean;
- /** Notifies listeners that a local order was removed */
+ /** Notifies listeners that a local order was removed either manually or due to a swap initiated by a peer */
emit(event: 'ownOrder.removed', order: OwnOrder): boolean;
}
@@ -489,16 +489,6 @@ class OrderBook extends EventEmitter {
const tp = this.getTradingPair(order.pairId);
- if (!this.nobalancechecks) {
- // for limit orders, we use the price of our order to calculate inbound/outbound amounts
- // for market orders, we use the price of the best matching order in the order book
- const price = (order.price === 0 || order.price === Number.POSITIVE_INFINITY) ?
- (order.isBuy ? tp.quoteAsk() : tp.quoteBid()) :
- order.price;
-
- await this.swaps.swapClientManager.checkSwapCapacities({ ...order, price });
- }
-
let replacedOrderIdentifier: OrderIdentifier | undefined;
if (replaceOrderId) {
assert(!discardRemaining, 'can not replace order and discard remaining order');
@@ -509,6 +499,29 @@ class OrderBook extends EventEmitter {
throw errors.ORDER_NOT_FOUND(replaceOrderId);
}
assert(replacedOrderIdentifier.pairId === order.pairId);
+ }
+
+ if (!this.nobalancechecks) {
+ // for limit orders, we use the price of our order to calculate inbound/outbound amounts
+ // for market orders, we use the price of the best matching order in the order book
+ const price = (order.price === 0 || order.price === Number.POSITIVE_INFINITY) ?
+ (order.isBuy ? tp.quoteAsk() : tp.quoteBid()) :
+ order.price;
+
+ const quantityBeingReplaced =
+ replacedOrderIdentifier ?
+ this.getOwnOrder(replacedOrderIdentifier.id, replacedOrderIdentifier.pairId).quantity :
+ 0;
+
+ /** The quantity that's being added to the replaced order. */
+ const quantityDelta = order.quantity - quantityBeingReplaced;
+
+ if (quantityDelta > 0) {
+ await this.swaps.swapClientManager.checkSwapCapacities({ ...order, price, quantity: quantityDelta });
+ }
+ }
+
+ if (replacedOrderIdentifier) {
this.addOrderHold(replacedOrderIdentifier.id, replacedOrderIdentifier.pairId);
}
diff --git a/lib/p2p/Peer.ts b/lib/p2p/Peer.ts
index 3f35f379f..21c9d5c6a 100644
--- a/lib/p2p/Peer.ts
+++ b/lib/p2p/Peer.ts
@@ -331,6 +331,7 @@ class Peer extends EventEmitter {
}
this.status = PeerStatus.Closed;
+ this.revokeConnectionRetries();
if (this.socket) {
if (!this.socket.destroyed) {
@@ -521,6 +522,8 @@ class Peer extends EventEmitter {
this.connectionRetriesRevoked = false;
const connectViaProxy = () => {
+ this.socket = net.connect(torport, 'localhost');
+
const proxyOptions: SocksClientOptions = {
proxy: {
host: 'localhost',
@@ -532,11 +535,11 @@ class Peer extends EventEmitter {
host: this.address.host,
port: this.address.port,
},
+ existing_socket: this.socket,
};
SocksClient.createConnection(proxyOptions)
.then((info) => {
- // a raw net.Socket that is established to the destination host through the given proxy server
- this.socket = info.socket;
+ assert(this.socket === info.socket);
onConnect();
})
.catch(onError);
@@ -614,7 +617,9 @@ class Peer extends EventEmitter {
}
private initStall = (): void => {
- assert(this.status !== PeerStatus.Closed);
+ if (this.status !== PeerStatus.Closed) {
+ return;
+ }
assert(!this.stallTimer);
this.stallTimer = setInterval(this.checkTimeout, Peer.STALL_INTERVAL);
diff --git a/lib/p2p/Pool.ts b/lib/p2p/Pool.ts
index 9e4a6adcd..e45f780a2 100644
--- a/lib/p2p/Pool.ts
+++ b/lib/p2p/Pool.ts
@@ -279,7 +279,11 @@ class Pool extends EventEmitter {
if (this.loadingNodesPromise) {
await this.loadingNodesPromise;
}
- await Promise.all([this.unlisten(), this.closePendingConnections(), this.closePeers()]);
+ await Promise.all([
+ this.unlisten(),
+ this.closePendingConnections(DisconnectionReason.Shutdown),
+ this.closePeers(DisconnectionReason.Shutdown)],
+ );
this.connected = false;
this.disconnecting = false;
}
@@ -303,6 +307,8 @@ class Pool extends EventEmitter {
this.logger.debug(`Verifying reachability of advertised address: ${externalAddress}`);
try {
const peer = new Peer(Logger.DISABLED_LOGGER, address, this.network);
+
+ this.pendingOutboundPeers.set(this.nodePubKey, peer);
await peer.beginOpen({
ownNodeState: this.nodeState,
ownNodeKey: this.nodeKey,
@@ -310,6 +316,8 @@ class Pool extends EventEmitter {
expectedNodePubKey: this.nodePubKey,
torport: this.config.torport,
});
+ this.pendingOutboundPeers.delete(this.nodePubKey);
+
await peer.close();
assert.fail();
} catch (err) {
@@ -1002,21 +1010,21 @@ class Pool extends EventEmitter {
}
}
- private closePeers = () => {
+ private closePeers = (reason?: DisconnectionReason) => {
const closePromises = [];
for (const peer of this.peers.values()) {
- closePromises.push(peer.close(DisconnectionReason.Shutdown));
+ closePromises.push(peer.close(reason));
}
return Promise.all(closePromises);
}
- private closePendingConnections = () => {
+ private closePendingConnections = (reason?: DisconnectionReason) => {
const closePromises = [];
for (const peer of this.pendingOutboundPeers.values()) {
- closePromises.push(peer.close());
+ closePromises.push(peer.close(reason));
}
for (const peer of this.pendingInboundPeers) {
- closePromises.push(peer.close());
+ closePromises.push(peer.close(reason));
}
return Promise.all(closePromises);
}
diff --git a/lib/proto/xudrpc.swagger.json b/lib/proto/xudrpc.swagger.json
index 02088beb5..8095ab3d6 100644
--- a/lib/proto/xudrpc.swagger.json
+++ b/lib/proto/xudrpc.swagger.json
@@ -254,6 +254,23 @@
]
}
},
+ "/v1/mnemonic": {
+ "get": {
+ "summary": "Gets the master seed mnemonic .\nshell: xucli getnemonic",
+ "operationId": "GetMnemonic",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/xudrpcGetMnemonicResponse"
+ }
+ }
+ },
+ "tags": [
+ "Xud"
+ ]
+ }
+ },
"/v1/nodeinfo": {
"get": {
"summary": "Gets general information about a node.\nshell: xucli getnodeinfo \u003cnode_identifier\u003e",
@@ -1328,6 +1345,17 @@
}
}
},
+ "xudrpcGetMnemonicResponse": {
+ "type": "object",
+ "properties": {
+ "seed_mnemonic": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
"xudrpcGetNodeInfoResponse": {
"type": "object",
"properties": {
diff --git a/lib/proto/xudrpc_grpc_pb.d.ts b/lib/proto/xudrpc_grpc_pb.d.ts
index 728b430fe..3cfe4dfa8 100644
--- a/lib/proto/xudrpc_grpc_pb.d.ts
+++ b/lib/proto/xudrpc_grpc_pb.d.ts
@@ -84,6 +84,7 @@ interface IXudService extends grpc.ServiceDefinition;
responseDeserialize: grpc.deserialize;
}
+interface IXudService_IGetMnemonic extends grpc.MethodDefinition {
+ path: string; // "/xudrpc.Xud/GetMnemonic"
+ requestStream: boolean; // false
+ responseStream: boolean; // false
+ requestSerialize: grpc.serialize;
+ requestDeserialize: grpc.deserialize;
+ responseSerialize: grpc.serialize;
+ responseDeserialize: grpc.deserialize;
+}
interface IXudService_IGetNodeInfo extends grpc.MethodDefinition {
path: string; // "/xudrpc.Xud/GetNodeInfo"
requestStream: boolean; // false
@@ -420,6 +430,7 @@ export interface IXudServer {
discoverNodes: grpc.handleUnaryCall;
getBalance: grpc.handleUnaryCall;
getInfo: grpc.handleUnaryCall;
+ getMnemonic: grpc.handleUnaryCall;
getNodeInfo: grpc.handleUnaryCall;
listOrders: grpc.handleUnaryCall;
listCurrencies: grpc.handleUnaryCall;
@@ -474,6 +485,9 @@ export interface IXudClient {
getInfo(request: xudrpc_pb.GetInfoRequest, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetInfoResponse) => void): grpc.ClientUnaryCall;
getInfo(request: xudrpc_pb.GetInfoRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetInfoResponse) => void): grpc.ClientUnaryCall;
getInfo(request: xudrpc_pb.GetInfoRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetInfoResponse) => void): grpc.ClientUnaryCall;
+ getMnemonic(request: xudrpc_pb.GetMnemonicRequest, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetMnemonicResponse) => void): grpc.ClientUnaryCall;
+ getMnemonic(request: xudrpc_pb.GetMnemonicRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetMnemonicResponse) => void): grpc.ClientUnaryCall;
+ getMnemonic(request: xudrpc_pb.GetMnemonicRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetMnemonicResponse) => void): grpc.ClientUnaryCall;
getNodeInfo(request: xudrpc_pb.GetNodeInfoRequest, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetNodeInfoResponse) => void): grpc.ClientUnaryCall;
getNodeInfo(request: xudrpc_pb.GetNodeInfoRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetNodeInfoResponse) => void): grpc.ClientUnaryCall;
getNodeInfo(request: xudrpc_pb.GetNodeInfoRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetNodeInfoResponse) => void): grpc.ClientUnaryCall;
@@ -571,6 +585,9 @@ export class XudClient extends grpc.Client implements IXudClient {
public getInfo(request: xudrpc_pb.GetInfoRequest, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetInfoResponse) => void): grpc.ClientUnaryCall;
public getInfo(request: xudrpc_pb.GetInfoRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetInfoResponse) => void): grpc.ClientUnaryCall;
public getInfo(request: xudrpc_pb.GetInfoRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetInfoResponse) => void): grpc.ClientUnaryCall;
+ public getMnemonic(request: xudrpc_pb.GetMnemonicRequest, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetMnemonicResponse) => void): grpc.ClientUnaryCall;
+ public getMnemonic(request: xudrpc_pb.GetMnemonicRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetMnemonicResponse) => void): grpc.ClientUnaryCall;
+ public getMnemonic(request: xudrpc_pb.GetMnemonicRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetMnemonicResponse) => void): grpc.ClientUnaryCall;
public getNodeInfo(request: xudrpc_pb.GetNodeInfoRequest, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetNodeInfoResponse) => void): grpc.ClientUnaryCall;
public getNodeInfo(request: xudrpc_pb.GetNodeInfoRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetNodeInfoResponse) => void): grpc.ClientUnaryCall;
public getNodeInfo(request: xudrpc_pb.GetNodeInfoRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: xudrpc_pb.GetNodeInfoResponse) => void): grpc.ClientUnaryCall;
diff --git a/lib/proto/xudrpc_grpc_pb.js b/lib/proto/xudrpc_grpc_pb.js
index 7c04fe4fb..47b82fa43 100644
--- a/lib/proto/xudrpc_grpc_pb.js
+++ b/lib/proto/xudrpc_grpc_pb.js
@@ -268,6 +268,28 @@ function deserialize_xudrpc_GetInfoResponse(buffer_arg) {
return xudrpc_pb.GetInfoResponse.deserializeBinary(new Uint8Array(buffer_arg));
}
+function serialize_xudrpc_GetMnemonicRequest(arg) {
+ if (!(arg instanceof xudrpc_pb.GetMnemonicRequest)) {
+ throw new Error('Expected argument of type xudrpc.GetMnemonicRequest');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_xudrpc_GetMnemonicRequest(buffer_arg) {
+ return xudrpc_pb.GetMnemonicRequest.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
+function serialize_xudrpc_GetMnemonicResponse(arg) {
+ if (!(arg instanceof xudrpc_pb.GetMnemonicResponse)) {
+ throw new Error('Expected argument of type xudrpc.GetMnemonicResponse');
+ }
+ return Buffer.from(arg.serializeBinary());
+}
+
+function deserialize_xudrpc_GetMnemonicResponse(buffer_arg) {
+ return xudrpc_pb.GetMnemonicResponse.deserializeBinary(new Uint8Array(buffer_arg));
+}
+
function serialize_xudrpc_GetNodeInfoRequest(arg) {
if (!(arg instanceof xudrpc_pb.GetNodeInfoRequest)) {
throw new Error('Expected argument of type xudrpc.GetNodeInfoRequest');
@@ -956,6 +978,19 @@ var XudService = exports.XudService = {
responseSerialize: serialize_xudrpc_GetInfoResponse,
responseDeserialize: deserialize_xudrpc_GetInfoResponse,
},
+ // Gets the master seed mnemonic .
+ // shell: xucli getnemonic
+ getMnemonic: {
+ path: '/xudrpc.Xud/GetMnemonic',
+ requestStream: false,
+ responseStream: false,
+ requestType: xudrpc_pb.GetMnemonicRequest,
+ responseType: xudrpc_pb.GetMnemonicResponse,
+ requestSerialize: serialize_xudrpc_GetMnemonicRequest,
+ requestDeserialize: deserialize_xudrpc_GetMnemonicRequest,
+ responseSerialize: serialize_xudrpc_GetMnemonicResponse,
+ responseDeserialize: deserialize_xudrpc_GetMnemonicResponse,
+ },
// Gets general information about a node.
// shell: xucli getnodeinfo
getNodeInfo: {
diff --git a/lib/proto/xudrpc_pb.d.ts b/lib/proto/xudrpc_pb.d.ts
index 8cc4d5bdb..1bedcbb1d 100644
--- a/lib/proto/xudrpc_pb.d.ts
+++ b/lib/proto/xudrpc_pb.d.ts
@@ -795,6 +795,46 @@ export namespace GetInfoResponse {
}
}
+export class GetMnemonicRequest extends jspb.Message {
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): GetMnemonicRequest.AsObject;
+ static toObject(includeInstance: boolean, msg: GetMnemonicRequest): GetMnemonicRequest.AsObject;
+ static extensions: {[key: number]: jspb.ExtensionFieldInfo};
+ static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo};
+ static serializeBinaryToWriter(message: GetMnemonicRequest, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): GetMnemonicRequest;
+ static deserializeBinaryFromReader(message: GetMnemonicRequest, reader: jspb.BinaryReader): GetMnemonicRequest;
+}
+
+export namespace GetMnemonicRequest {
+ export type AsObject = {
+ }
+}
+
+export class GetMnemonicResponse extends jspb.Message {
+ clearSeedMnemonicList(): void;
+ getSeedMnemonicList(): Array;
+ setSeedMnemonicList(value: Array): void;
+ addSeedMnemonic(value: string, index?: number): string;
+
+
+ serializeBinary(): Uint8Array;
+ toObject(includeInstance?: boolean): GetMnemonicResponse.AsObject;
+ static toObject(includeInstance: boolean, msg: GetMnemonicResponse): GetMnemonicResponse.AsObject;
+ static extensions: {[key: number]: jspb.ExtensionFieldInfo};
+ static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo};
+ static serializeBinaryToWriter(message: GetMnemonicResponse, writer: jspb.BinaryWriter): void;
+ static deserializeBinary(bytes: Uint8Array): GetMnemonicResponse;
+ static deserializeBinaryFromReader(message: GetMnemonicResponse, reader: jspb.BinaryReader): GetMnemonicResponse;
+}
+
+export namespace GetMnemonicResponse {
+ export type AsObject = {
+ seedMnemonicList: Array,
+ }
+}
+
export class GetNodeInfoRequest extends jspb.Message {
getNodeIdentifier(): string;
setNodeIdentifier(value: string): void;
diff --git a/lib/proto/xudrpc_pb.js b/lib/proto/xudrpc_pb.js
index 9820aa5aa..d55830e83 100644
--- a/lib/proto/xudrpc_pb.js
+++ b/lib/proto/xudrpc_pb.js
@@ -45,6 +45,8 @@ goog.exportSymbol('proto.xudrpc.GetBalanceRequest', null, global);
goog.exportSymbol('proto.xudrpc.GetBalanceResponse', null, global);
goog.exportSymbol('proto.xudrpc.GetInfoRequest', null, global);
goog.exportSymbol('proto.xudrpc.GetInfoResponse', null, global);
+goog.exportSymbol('proto.xudrpc.GetMnemonicRequest', null, global);
+goog.exportSymbol('proto.xudrpc.GetMnemonicResponse', null, global);
goog.exportSymbol('proto.xudrpc.GetNodeInfoRequest', null, global);
goog.exportSymbol('proto.xudrpc.GetNodeInfoResponse', null, global);
goog.exportSymbol('proto.xudrpc.ListCurrenciesRequest', null, global);
@@ -5250,6 +5252,285 @@ proto.xudrpc.GetInfoResponse.prototype.hasConnext = function() {
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.xudrpc.GetMnemonicRequest = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
+};
+goog.inherits(proto.xudrpc.GetMnemonicRequest, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.xudrpc.GetMnemonicRequest.displayName = 'proto.xudrpc.GetMnemonicRequest';
+}
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.xudrpc.GetMnemonicRequest.prototype.toObject = function(opt_includeInstance) {
+ return proto.xudrpc.GetMnemonicRequest.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.xudrpc.GetMnemonicRequest} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.xudrpc.GetMnemonicRequest.toObject = function(includeInstance, msg) {
+ var f, obj = {
+
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.xudrpc.GetMnemonicRequest}
+ */
+proto.xudrpc.GetMnemonicRequest.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.xudrpc.GetMnemonicRequest;
+ return proto.xudrpc.GetMnemonicRequest.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.xudrpc.GetMnemonicRequest} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.xudrpc.GetMnemonicRequest}
+ */
+proto.xudrpc.GetMnemonicRequest.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.xudrpc.GetMnemonicRequest.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.xudrpc.GetMnemonicRequest.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.xudrpc.GetMnemonicRequest} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.xudrpc.GetMnemonicRequest.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+};
+
+
+
+/**
+ * Generated by JsPbCodeGenerator.
+ * @param {Array=} opt_data Optional initial data array, typically from a
+ * server response, or constructed directly in Javascript. The array is used
+ * in place and becomes part of the constructed object. It is not cloned.
+ * If no data is provided, the constructed object will be empty, but still
+ * valid.
+ * @extends {jspb.Message}
+ * @constructor
+ */
+proto.xudrpc.GetMnemonicResponse = function(opt_data) {
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.xudrpc.GetMnemonicResponse.repeatedFields_, null);
+};
+goog.inherits(proto.xudrpc.GetMnemonicResponse, jspb.Message);
+if (goog.DEBUG && !COMPILED) {
+ proto.xudrpc.GetMnemonicResponse.displayName = 'proto.xudrpc.GetMnemonicResponse';
+}
+/**
+ * List of repeated fields within this message type.
+ * @private {!Array}
+ * @const
+ */
+proto.xudrpc.GetMnemonicResponse.repeatedFields_ = [1];
+
+
+
+if (jspb.Message.GENERATE_TO_OBJECT) {
+/**
+ * Creates an object representation of this proto suitable for use in Soy templates.
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
+ * To access a reserved field use, foo.pb_, eg, foo.pb_default.
+ * For the list of reserved names please see:
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
+ * for transitional soy proto support: http://goto/soy-param-migration
+ * @return {!Object}
+ */
+proto.xudrpc.GetMnemonicResponse.prototype.toObject = function(opt_includeInstance) {
+ return proto.xudrpc.GetMnemonicResponse.toObject(opt_includeInstance, this);
+};
+
+
+/**
+ * Static version of the {@see toObject} method.
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
+ * instance for transitional soy proto support:
+ * http://goto/soy-param-migration
+ * @param {!proto.xudrpc.GetMnemonicResponse} msg The msg instance to transform.
+ * @return {!Object}
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.xudrpc.GetMnemonicResponse.toObject = function(includeInstance, msg) {
+ var f, obj = {
+ seedMnemonicList: jspb.Message.getRepeatedField(msg, 1)
+ };
+
+ if (includeInstance) {
+ obj.$jspbMessageInstance = msg;
+ }
+ return obj;
+};
+}
+
+
+/**
+ * Deserializes binary data (in protobuf wire format).
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
+ * @return {!proto.xudrpc.GetMnemonicResponse}
+ */
+proto.xudrpc.GetMnemonicResponse.deserializeBinary = function(bytes) {
+ var reader = new jspb.BinaryReader(bytes);
+ var msg = new proto.xudrpc.GetMnemonicResponse;
+ return proto.xudrpc.GetMnemonicResponse.deserializeBinaryFromReader(msg, reader);
+};
+
+
+/**
+ * Deserializes binary data (in protobuf wire format) from the
+ * given reader into the given message object.
+ * @param {!proto.xudrpc.GetMnemonicResponse} msg The message object to deserialize into.
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
+ * @return {!proto.xudrpc.GetMnemonicResponse}
+ */
+proto.xudrpc.GetMnemonicResponse.deserializeBinaryFromReader = function(msg, reader) {
+ while (reader.nextField()) {
+ if (reader.isEndGroup()) {
+ break;
+ }
+ var field = reader.getFieldNumber();
+ switch (field) {
+ case 1:
+ var value = /** @type {string} */ (reader.readString());
+ msg.addSeedMnemonic(value);
+ break;
+ default:
+ reader.skipField();
+ break;
+ }
+ }
+ return msg;
+};
+
+
+/**
+ * Serializes the message to binary data (in protobuf wire format).
+ * @return {!Uint8Array}
+ */
+proto.xudrpc.GetMnemonicResponse.prototype.serializeBinary = function() {
+ var writer = new jspb.BinaryWriter();
+ proto.xudrpc.GetMnemonicResponse.serializeBinaryToWriter(this, writer);
+ return writer.getResultBuffer();
+};
+
+
+/**
+ * Serializes the given message to binary data (in protobuf wire
+ * format), writing to the given BinaryWriter.
+ * @param {!proto.xudrpc.GetMnemonicResponse} message
+ * @param {!jspb.BinaryWriter} writer
+ * @suppress {unusedLocalVariables} f is only used for nested messages
+ */
+proto.xudrpc.GetMnemonicResponse.serializeBinaryToWriter = function(message, writer) {
+ var f = undefined;
+ f = message.getSeedMnemonicList();
+ if (f.length > 0) {
+ writer.writeRepeatedString(
+ 1,
+ f
+ );
+ }
+};
+
+
+/**
+ * repeated string seed_mnemonic = 1;
+ * @return {!Array}
+ */
+proto.xudrpc.GetMnemonicResponse.prototype.getSeedMnemonicList = function() {
+ return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));
+};
+
+
+/** @param {!Array} value */
+proto.xudrpc.GetMnemonicResponse.prototype.setSeedMnemonicList = function(value) {
+ jspb.Message.setField(this, 1, value || []);
+};
+
+
+/**
+ * @param {string} value
+ * @param {number=} opt_index
+ */
+proto.xudrpc.GetMnemonicResponse.prototype.addSeedMnemonic = function(value, opt_index) {
+ jspb.Message.addToRepeatedField(this, 1, value, opt_index);
+};
+
+
+proto.xudrpc.GetMnemonicResponse.prototype.clearSeedMnemonicList = function() {
+ this.setSeedMnemonicList([]);
+};
+
+
+
/**
* Generated by JsPbCodeGenerator.
* @param {Array=} opt_data Optional initial data array, typically from a
diff --git a/lib/service/Service.ts b/lib/service/Service.ts
index a9d55fe00..5c9d9f27a 100644
--- a/lib/service/Service.ts
+++ b/lib/service/Service.ts
@@ -19,6 +19,7 @@ import { checkDecimalPlaces, sortOrders, toEip55Address } from '../utils/utils';
import commitHash from '../Version';
import errors from './errors';
import { NodeIdentifier, ServiceComponents, ServiceOrder, ServiceOrderSidesArrays, ServicePlaceOrderEvent, ServiceTrade, XudInfo } from './types';
+import NodeKey from 'lib/nodekey/NodeKey';
import { satsToCoinsStr } from '../cli/utils';
/** Functions to check argument validity and throw [[INVALID_ARGUMENT]] when invalid. */
@@ -70,6 +71,7 @@ class Service extends EventEmitter {
private version: string;
private swaps: Swaps;
private logger: Logger;
+ private nodekey: NodeKey;
/** Create an instance of available RPC methods and bind all exposed functions. */
constructor(components: ServiceComponents) {
@@ -81,6 +83,7 @@ class Service extends EventEmitter {
this.pool = components.pool;
this.swaps = components.swaps;
this.logger = components.logger;
+ this.nodekey = components.nodeKey;
this.version = components.version;
}
@@ -362,6 +365,14 @@ class Service extends EventEmitter {
return swapSuccess;
}
+ /**
+ * Gets information about a specified node.
+ */
+ public getMnemonic = async () => {
+ const mnemonic = await this.nodekey.getMnemonic();
+ return mnemonic;
+ }
+
/**
* Gets information about a specified node.
*/
@@ -744,8 +755,8 @@ class Service extends EventEmitter {
}
/*
- * Subscribe to orders being added to the order book.
- */
+ * Subscribe to orders being added to the order book.
+ */
public subscribeOrders = (
args: { existing: boolean },
callback: (order?: ServiceOrder, orderRemoval?: OrderPortion) => void,
diff --git a/lib/service/types.ts b/lib/service/types.ts
index 5b049df7a..816e00865 100644
--- a/lib/service/types.ts
+++ b/lib/service/types.ts
@@ -7,6 +7,7 @@ import { Order, PlaceOrderEvent } from '../orderbook/types';
import Pool from '../p2p/Pool';
import SwapClientManager from '../swaps/SwapClientManager';
import Swaps from '../swaps/Swaps';
+import NodeKey from '../nodekey/NodeKey';
/**
* The components required by the API service layer.
@@ -19,6 +20,7 @@ export type ServiceComponents = {
version: string;
swaps: Swaps;
logger: Logger;
+ nodeKey: NodeKey;
/** The function to be called to shutdown the parent process */
shutdown: () => void;
};
diff --git a/lib/swaps/SwapClientManager.ts b/lib/swaps/SwapClientManager.ts
index 3a8bd7288..a8f1cd85c 100644
--- a/lib/swaps/SwapClientManager.ts
+++ b/lib/swaps/SwapClientManager.ts
@@ -11,7 +11,6 @@ import { Level, Loggers } from '../Logger';
import NodeKey from '../nodekey/NodeKey';
import { Currency, OwnLimitOrder } from '../orderbook/types';
import Peer from '../p2p/Peer';
-import { encipher } from '../utils/seedutil';
import { UnitConverter } from '../utils/UnitConverter';
import errors from './errors';
import SwapClient, { ClientStatus } from './SwapClient';
@@ -353,10 +352,7 @@ class SwapClientManager extends EventEmitter {
let walletCreated = false;
if (err.details === 'wallet not found') {
// this wallet hasn't been initialized, so we will try to initialize it now
- const decipheredSeed = nodeKey.privKey.slice(0, 19);
- const decipheredSeedHex = decipheredSeed.toString('hex');
- const seedMnemonic = await encipher(decipheredSeedHex);
-
+ const seedMnemonic = await nodeKey.getMnemonic();
try {
await swapClient.initWallet(this.walletPassword ?? '', seedMnemonic);
walletCreated = true;
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index b01104a82..46695d70f 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -1,6 +1,6 @@
{
"name": "xud",
- "version": "1.2.0",
+ "version": "1.2.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 637c326f9..fd9ad9a94 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "xud",
"minCompatibleVersion": "1.0.0-rc.1",
- "version": "1.2.0",
+ "version": "1.2.1",
"description": "Exchange Union Daemon",
"main": "lib/Xud.js",
"bin": {
diff --git a/proto/xudrpc.proto b/proto/xudrpc.proto
index 6c7544d1e..25efb9340 100644
--- a/proto/xudrpc.proto
+++ b/proto/xudrpc.proto
@@ -126,6 +126,14 @@ service Xud {
};
}
+ /* Gets the master seed mnemonic .
+ * shell: xucli getnemonic */
+ rpc GetMnemonic(GetMnemonicRequest) returns (GetMnemonicResponse) {
+ option (google.api.http) = {
+ get: "/v1/mnemonic"
+ };
+ }
+
/* Gets general information about a node.
* shell: xucli getnodeinfo */
rpc GetNodeInfo(GetNodeInfoRequest) returns (GetNodeInfoResponse) {
@@ -598,6 +606,11 @@ message GetInfoResponse {
ConnextInfo connext = 12 [json_name = "connext"];
}
+message GetMnemonicRequest {}
+message GetMnemonicResponse {
+ repeated string seed_mnemonic = 1 [json_name = "seed_mnemonic"];
+}
+
message GetNodeInfoRequest {
// The node pub key or alias of the node for which to get information.
string node_identifier = 1 [json_name = "node_identifier"];
diff --git a/test/jest/Connext.spec.ts b/test/jest/Connext.spec.ts
index bb7a1a182..e6a84048c 100644
--- a/test/jest/Connext.spec.ts
+++ b/test/jest/Connext.spec.ts
@@ -27,10 +27,20 @@ jest.mock('http', () => {
statusCode: 404,
});
}
+
+ let errorCb: any;
return {
+ path: options.path,
write: jest.fn(),
- on: jest.fn(),
end: jest.fn(),
+ on: jest.fn().mockImplementation((event, cb) => {
+ if (event === 'error') {
+ errorCb = cb;
+ }
+ }),
+ destroy: jest.fn().mockImplementation(() => {
+ errorCb();
+ }),
};
}),
};
@@ -55,6 +65,8 @@ describe('ConnextClient', () => {
logger.trace = jest.fn();
logger.error = jest.fn();
logger.debug = jest.fn();
+ logger.warn = jest.fn();
+ logger.info = jest.fn();
const currencyInstances = [
{
id: 'ETH',
@@ -427,4 +439,20 @@ describe('ConnextClient', () => {
expect(connext['sendRequest']).toHaveBeenCalledTimes(0);
});
});
+
+ describe('disconnect', () => {
+ it('aborts pending requests, except critical ones', async () => {
+ expect(connext['pendingRequests'].size).toEqual(0);
+
+ connext['sendRequest'](connext['criticalRequestPaths'][0], '', {});
+ connext['sendRequest']('/path1', '', {});
+ connext['sendRequest']('/path1', '', {});
+ connext['sendRequest']('/path2', '', {});
+ connext['sendRequest'](connext['criticalRequestPaths'][1], '', {});
+ expect(connext['pendingRequests'].size).toEqual(5);
+
+ connext['disconnect']();
+ expect(connext['pendingRequests'].size).toEqual(2);
+ });
+ });
});
diff --git a/test/jest/Service.spec.ts b/test/jest/Service.spec.ts
index d4f5e80b0..298ee3a65 100644
--- a/test/jest/Service.spec.ts
+++ b/test/jest/Service.spec.ts
@@ -8,7 +8,10 @@ import { ServiceComponents } from '../../lib/service/types';
import SwapClient from '../../lib/swaps/SwapClient';
import SwapClientManager from '../../lib/swaps/SwapClientManager';
import Swaps from '../../lib/swaps/Swaps';
+import NodeKey from '../../lib/nodekey/NodeKey';
+jest.mock('../../lib/nodekey/NodeKey');
+const mockedNodeKey = >NodeKey;
jest.mock('../../lib/orderbook/OrderBook');
const mockedOrderbook = >Orderbook;
jest.mock('../../lib/swaps/Swaps');
@@ -62,6 +65,7 @@ describe('Service', () => {
swaps: new mockedSwaps(),
version: '1.0.0',
shutdown: jest.fn(),
+ nodeKey: new mockedNodeKey(),
logger: new mockedLogger(),
};
peer = new mockedPeer();
diff --git a/test/simulation/xudrpc/xudrpc.pb.go b/test/simulation/xudrpc/xudrpc.pb.go
index 00650346a..a8ee4e01d 100644
--- a/test/simulation/xudrpc/xudrpc.pb.go
+++ b/test/simulation/xudrpc/xudrpc.pb.go
@@ -247,7 +247,7 @@ func (x ListOrdersRequest_Owner) String() string {
}
func (ListOrdersRequest_Owner) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{31, 0}
+ return fileDescriptor_6960a02cc0a63cf6, []int{33, 0}
}
type AddCurrencyResponse struct {
@@ -1725,6 +1725,76 @@ func (m *GetInfoResponse) GetConnext() *ConnextInfo {
return nil
}
+type GetMnemonicRequest struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetMnemonicRequest) Reset() { *m = GetMnemonicRequest{} }
+func (m *GetMnemonicRequest) String() string { return proto.CompactTextString(m) }
+func (*GetMnemonicRequest) ProtoMessage() {}
+func (*GetMnemonicRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_6960a02cc0a63cf6, []int{27}
+}
+
+func (m *GetMnemonicRequest) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_GetMnemonicRequest.Unmarshal(m, b)
+}
+func (m *GetMnemonicRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_GetMnemonicRequest.Marshal(b, m, deterministic)
+}
+func (m *GetMnemonicRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetMnemonicRequest.Merge(m, src)
+}
+func (m *GetMnemonicRequest) XXX_Size() int {
+ return xxx_messageInfo_GetMnemonicRequest.Size(m)
+}
+func (m *GetMnemonicRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetMnemonicRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetMnemonicRequest proto.InternalMessageInfo
+
+type GetMnemonicResponse struct {
+ SeedMnemonic []string `protobuf:"bytes,1,rep,name=seed_mnemonic,proto3" json:"seed_mnemonic,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetMnemonicResponse) Reset() { *m = GetMnemonicResponse{} }
+func (m *GetMnemonicResponse) String() string { return proto.CompactTextString(m) }
+func (*GetMnemonicResponse) ProtoMessage() {}
+func (*GetMnemonicResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_6960a02cc0a63cf6, []int{28}
+}
+
+func (m *GetMnemonicResponse) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_GetMnemonicResponse.Unmarshal(m, b)
+}
+func (m *GetMnemonicResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_GetMnemonicResponse.Marshal(b, m, deterministic)
+}
+func (m *GetMnemonicResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetMnemonicResponse.Merge(m, src)
+}
+func (m *GetMnemonicResponse) XXX_Size() int {
+ return xxx_messageInfo_GetMnemonicResponse.Size(m)
+}
+func (m *GetMnemonicResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetMnemonicResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetMnemonicResponse proto.InternalMessageInfo
+
+func (m *GetMnemonicResponse) GetSeedMnemonic() []string {
+ if m != nil {
+ return m.SeedMnemonic
+ }
+ return nil
+}
+
type GetNodeInfoRequest struct {
// The node pub key or alias of the node for which to get information.
NodeIdentifier string `protobuf:"bytes,1,opt,name=node_identifier,proto3" json:"node_identifier,omitempty"`
@@ -1737,7 +1807,7 @@ func (m *GetNodeInfoRequest) Reset() { *m = GetNodeInfoRequest{} }
func (m *GetNodeInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetNodeInfoRequest) ProtoMessage() {}
func (*GetNodeInfoRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{27}
+ return fileDescriptor_6960a02cc0a63cf6, []int{29}
}
func (m *GetNodeInfoRequest) XXX_Unmarshal(b []byte) error {
@@ -1780,7 +1850,7 @@ func (m *GetNodeInfoResponse) Reset() { *m = GetNodeInfoResponse{} }
func (m *GetNodeInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetNodeInfoResponse) ProtoMessage() {}
func (*GetNodeInfoResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{28}
+ return fileDescriptor_6960a02cc0a63cf6, []int{30}
}
func (m *GetNodeInfoResponse) XXX_Unmarshal(b []byte) error {
@@ -1825,7 +1895,7 @@ func (m *ListCurrenciesRequest) Reset() { *m = ListCurrenciesRequest{} }
func (m *ListCurrenciesRequest) String() string { return proto.CompactTextString(m) }
func (*ListCurrenciesRequest) ProtoMessage() {}
func (*ListCurrenciesRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{29}
+ return fileDescriptor_6960a02cc0a63cf6, []int{31}
}
func (m *ListCurrenciesRequest) XXX_Unmarshal(b []byte) error {
@@ -1858,7 +1928,7 @@ func (m *ListCurrenciesResponse) Reset() { *m = ListCurrenciesResponse{}
func (m *ListCurrenciesResponse) String() string { return proto.CompactTextString(m) }
func (*ListCurrenciesResponse) ProtoMessage() {}
func (*ListCurrenciesResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{30}
+ return fileDescriptor_6960a02cc0a63cf6, []int{32}
}
func (m *ListCurrenciesResponse) XXX_Unmarshal(b []byte) error {
@@ -1904,7 +1974,7 @@ func (m *ListOrdersRequest) Reset() { *m = ListOrdersRequest{} }
func (m *ListOrdersRequest) String() string { return proto.CompactTextString(m) }
func (*ListOrdersRequest) ProtoMessage() {}
func (*ListOrdersRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{31}
+ return fileDescriptor_6960a02cc0a63cf6, []int{33}
}
func (m *ListOrdersRequest) XXX_Unmarshal(b []byte) error {
@@ -1965,7 +2035,7 @@ func (m *ListOrdersResponse) Reset() { *m = ListOrdersResponse{} }
func (m *ListOrdersResponse) String() string { return proto.CompactTextString(m) }
func (*ListOrdersResponse) ProtoMessage() {}
func (*ListOrdersResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{32}
+ return fileDescriptor_6960a02cc0a63cf6, []int{34}
}
func (m *ListOrdersResponse) XXX_Unmarshal(b []byte) error {
@@ -2003,7 +2073,7 @@ func (m *ListPairsRequest) Reset() { *m = ListPairsRequest{} }
func (m *ListPairsRequest) String() string { return proto.CompactTextString(m) }
func (*ListPairsRequest) ProtoMessage() {}
func (*ListPairsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{33}
+ return fileDescriptor_6960a02cc0a63cf6, []int{35}
}
func (m *ListPairsRequest) XXX_Unmarshal(b []byte) error {
@@ -2036,7 +2106,7 @@ func (m *ListPairsResponse) Reset() { *m = ListPairsResponse{} }
func (m *ListPairsResponse) String() string { return proto.CompactTextString(m) }
func (*ListPairsResponse) ProtoMessage() {}
func (*ListPairsResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{34}
+ return fileDescriptor_6960a02cc0a63cf6, []int{36}
}
func (m *ListPairsResponse) XXX_Unmarshal(b []byte) error {
@@ -2074,7 +2144,7 @@ func (m *ListPeersRequest) Reset() { *m = ListPeersRequest{} }
func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) }
func (*ListPeersRequest) ProtoMessage() {}
func (*ListPeersRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{35}
+ return fileDescriptor_6960a02cc0a63cf6, []int{37}
}
func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error {
@@ -2107,7 +2177,7 @@ func (m *ListPeersResponse) Reset() { *m = ListPeersResponse{} }
func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) }
func (*ListPeersResponse) ProtoMessage() {}
func (*ListPeersResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{36}
+ return fileDescriptor_6960a02cc0a63cf6, []int{38}
}
func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error {
@@ -2152,7 +2222,7 @@ func (m *LndInfo) Reset() { *m = LndInfo{} }
func (m *LndInfo) String() string { return proto.CompactTextString(m) }
func (*LndInfo) ProtoMessage() {}
func (*LndInfo) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{37}
+ return fileDescriptor_6960a02cc0a63cf6, []int{39}
}
func (m *LndInfo) XXX_Unmarshal(b []byte) error {
@@ -2236,7 +2306,7 @@ func (m *NodeIdentifier) Reset() { *m = NodeIdentifier{} }
func (m *NodeIdentifier) String() string { return proto.CompactTextString(m) }
func (*NodeIdentifier) ProtoMessage() {}
func (*NodeIdentifier) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{38}
+ return fileDescriptor_6960a02cc0a63cf6, []int{40}
}
func (m *NodeIdentifier) XXX_Unmarshal(b []byte) error {
@@ -2291,7 +2361,7 @@ func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) }
func (*OpenChannelRequest) ProtoMessage() {}
func (*OpenChannelRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{39}
+ return fileDescriptor_6960a02cc0a63cf6, []int{41}
}
func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error {
@@ -2359,7 +2429,7 @@ func (m *OpenChannelResponse) Reset() { *m = OpenChannelResponse{} }
func (m *OpenChannelResponse) String() string { return proto.CompactTextString(m) }
func (*OpenChannelResponse) ProtoMessage() {}
func (*OpenChannelResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{40}
+ return fileDescriptor_6960a02cc0a63cf6, []int{42}
}
func (m *OpenChannelResponse) XXX_Unmarshal(b []byte) error {
@@ -2417,7 +2487,7 @@ func (m *Order) Reset() { *m = Order{} }
func (m *Order) String() string { return proto.CompactTextString(m) }
func (*Order) ProtoMessage() {}
func (*Order) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{41}
+ return fileDescriptor_6960a02cc0a63cf6, []int{43}
}
func (m *Order) XXX_Unmarshal(b []byte) error {
@@ -2528,7 +2598,7 @@ func (m *OrderRemoval) Reset() { *m = OrderRemoval{} }
func (m *OrderRemoval) String() string { return proto.CompactTextString(m) }
func (*OrderRemoval) ProtoMessage() {}
func (*OrderRemoval) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{42}
+ return fileDescriptor_6960a02cc0a63cf6, []int{44}
}
func (m *OrderRemoval) XXX_Unmarshal(b []byte) error {
@@ -2598,7 +2668,7 @@ func (m *Orders) Reset() { *m = Orders{} }
func (m *Orders) String() string { return proto.CompactTextString(m) }
func (*Orders) ProtoMessage() {}
func (*Orders) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{43}
+ return fileDescriptor_6960a02cc0a63cf6, []int{45}
}
func (m *Orders) XXX_Unmarshal(b []byte) error {
@@ -2647,7 +2717,7 @@ func (m *OrdersCount) Reset() { *m = OrdersCount{} }
func (m *OrdersCount) String() string { return proto.CompactTextString(m) }
func (*OrdersCount) ProtoMessage() {}
func (*OrdersCount) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{44}
+ return fileDescriptor_6960a02cc0a63cf6, []int{46}
}
func (m *OrdersCount) XXX_Unmarshal(b []byte) error {
@@ -2696,7 +2766,7 @@ func (m *OrderUpdate) Reset() { *m = OrderUpdate{} }
func (m *OrderUpdate) String() string { return proto.CompactTextString(m) }
func (*OrderUpdate) ProtoMessage() {}
func (*OrderUpdate) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{45}
+ return fileDescriptor_6960a02cc0a63cf6, []int{47}
}
func (m *OrderUpdate) XXX_Unmarshal(b []byte) error {
@@ -2788,7 +2858,7 @@ func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {}
func (*Peer) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{46}
+ return fileDescriptor_6960a02cc0a63cf6, []int{48}
}
func (m *Peer) XXX_Unmarshal(b []byte) error {
@@ -2890,7 +2960,7 @@ func (m *PlaceOrderRequest) Reset() { *m = PlaceOrderRequest{} }
func (m *PlaceOrderRequest) String() string { return proto.CompactTextString(m) }
func (*PlaceOrderRequest) ProtoMessage() {}
func (*PlaceOrderRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{47}
+ return fileDescriptor_6960a02cc0a63cf6, []int{49}
}
func (m *PlaceOrderRequest) XXX_Unmarshal(b []byte) error {
@@ -2978,7 +3048,7 @@ func (m *PlaceOrderResponse) Reset() { *m = PlaceOrderResponse{} }
func (m *PlaceOrderResponse) String() string { return proto.CompactTextString(m) }
func (*PlaceOrderResponse) ProtoMessage() {}
func (*PlaceOrderResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{48}
+ return fileDescriptor_6960a02cc0a63cf6, []int{50}
}
func (m *PlaceOrderResponse) XXX_Unmarshal(b []byte) error {
@@ -3043,7 +3113,7 @@ func (m *PlaceOrderEvent) Reset() { *m = PlaceOrderEvent{} }
func (m *PlaceOrderEvent) String() string { return proto.CompactTextString(m) }
func (*PlaceOrderEvent) ProtoMessage() {}
func (*PlaceOrderEvent) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{49}
+ return fileDescriptor_6960a02cc0a63cf6, []int{51}
}
func (m *PlaceOrderEvent) XXX_Unmarshal(b []byte) error {
@@ -3151,7 +3221,7 @@ func (m *ConnextInfo) Reset() { *m = ConnextInfo{} }
func (m *ConnextInfo) String() string { return proto.CompactTextString(m) }
func (*ConnextInfo) ProtoMessage() {}
func (*ConnextInfo) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{50}
+ return fileDescriptor_6960a02cc0a63cf6, []int{52}
}
func (m *ConnextInfo) XXX_Unmarshal(b []byte) error {
@@ -3212,7 +3282,7 @@ func (m *RemoveCurrencyRequest) Reset() { *m = RemoveCurrencyRequest{} }
func (m *RemoveCurrencyRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveCurrencyRequest) ProtoMessage() {}
func (*RemoveCurrencyRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{51}
+ return fileDescriptor_6960a02cc0a63cf6, []int{53}
}
func (m *RemoveCurrencyRequest) XXX_Unmarshal(b []byte) error {
@@ -3250,7 +3320,7 @@ func (m *RemoveCurrencyResponse) Reset() { *m = RemoveCurrencyResponse{}
func (m *RemoveCurrencyResponse) String() string { return proto.CompactTextString(m) }
func (*RemoveCurrencyResponse) ProtoMessage() {}
func (*RemoveCurrencyResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{52}
+ return fileDescriptor_6960a02cc0a63cf6, []int{54}
}
func (m *RemoveCurrencyResponse) XXX_Unmarshal(b []byte) error {
@@ -3286,7 +3356,7 @@ func (m *RemoveOrderRequest) Reset() { *m = RemoveOrderRequest{} }
func (m *RemoveOrderRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveOrderRequest) ProtoMessage() {}
func (*RemoveOrderRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{53}
+ return fileDescriptor_6960a02cc0a63cf6, []int{55}
}
func (m *RemoveOrderRequest) XXX_Unmarshal(b []byte) error {
@@ -3340,7 +3410,7 @@ func (m *RemoveOrderResponse) Reset() { *m = RemoveOrderResponse{} }
func (m *RemoveOrderResponse) String() string { return proto.CompactTextString(m) }
func (*RemoveOrderResponse) ProtoMessage() {}
func (*RemoveOrderResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{54}
+ return fileDescriptor_6960a02cc0a63cf6, []int{56}
}
func (m *RemoveOrderResponse) XXX_Unmarshal(b []byte) error {
@@ -3399,7 +3469,7 @@ func (m *RemoveAllOrdersRequest) Reset() { *m = RemoveAllOrdersRequest{}
func (m *RemoveAllOrdersRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveAllOrdersRequest) ProtoMessage() {}
func (*RemoveAllOrdersRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{55}
+ return fileDescriptor_6960a02cc0a63cf6, []int{57}
}
func (m *RemoveAllOrdersRequest) XXX_Unmarshal(b []byte) error {
@@ -3434,7 +3504,7 @@ func (m *RemoveAllOrdersResponse) Reset() { *m = RemoveAllOrdersResponse
func (m *RemoveAllOrdersResponse) String() string { return proto.CompactTextString(m) }
func (*RemoveAllOrdersResponse) ProtoMessage() {}
func (*RemoveAllOrdersResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{56}
+ return fileDescriptor_6960a02cc0a63cf6, []int{58}
}
func (m *RemoveAllOrdersResponse) XXX_Unmarshal(b []byte) error {
@@ -3481,7 +3551,7 @@ func (m *RemovePairRequest) Reset() { *m = RemovePairRequest{} }
func (m *RemovePairRequest) String() string { return proto.CompactTextString(m) }
func (*RemovePairRequest) ProtoMessage() {}
func (*RemovePairRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{57}
+ return fileDescriptor_6960a02cc0a63cf6, []int{59}
}
func (m *RemovePairRequest) XXX_Unmarshal(b []byte) error {
@@ -3519,7 +3589,7 @@ func (m *RemovePairResponse) Reset() { *m = RemovePairResponse{} }
func (m *RemovePairResponse) String() string { return proto.CompactTextString(m) }
func (*RemovePairResponse) ProtoMessage() {}
func (*RemovePairResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{58}
+ return fileDescriptor_6960a02cc0a63cf6, []int{60}
}
func (m *RemovePairResponse) XXX_Unmarshal(b []byte) error {
@@ -3559,7 +3629,7 @@ func (m *RestoreNodeRequest) Reset() { *m = RestoreNodeRequest{} }
func (m *RestoreNodeRequest) String() string { return proto.CompactTextString(m) }
func (*RestoreNodeRequest) ProtoMessage() {}
func (*RestoreNodeRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{59}
+ return fileDescriptor_6960a02cc0a63cf6, []int{61}
}
func (m *RestoreNodeRequest) XXX_Unmarshal(b []byte) error {
@@ -3622,7 +3692,7 @@ func (m *RestoreNodeResponse) Reset() { *m = RestoreNodeResponse{} }
func (m *RestoreNodeResponse) String() string { return proto.CompactTextString(m) }
func (*RestoreNodeResponse) ProtoMessage() {}
func (*RestoreNodeResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{60}
+ return fileDescriptor_6960a02cc0a63cf6, []int{62}
}
func (m *RestoreNodeResponse) XXX_Unmarshal(b []byte) error {
@@ -3668,7 +3738,7 @@ func (m *SetLogLevelRequest) Reset() { *m = SetLogLevelRequest{} }
func (m *SetLogLevelRequest) String() string { return proto.CompactTextString(m) }
func (*SetLogLevelRequest) ProtoMessage() {}
func (*SetLogLevelRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{61}
+ return fileDescriptor_6960a02cc0a63cf6, []int{63}
}
func (m *SetLogLevelRequest) XXX_Unmarshal(b []byte) error {
@@ -3706,7 +3776,7 @@ func (m *SetLogLevelResponse) Reset() { *m = SetLogLevelResponse{} }
func (m *SetLogLevelResponse) String() string { return proto.CompactTextString(m) }
func (*SetLogLevelResponse) ProtoMessage() {}
func (*SetLogLevelResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{62}
+ return fileDescriptor_6960a02cc0a63cf6, []int{64}
}
func (m *SetLogLevelResponse) XXX_Unmarshal(b []byte) error {
@@ -3737,7 +3807,7 @@ func (m *ShutdownRequest) Reset() { *m = ShutdownRequest{} }
func (m *ShutdownRequest) String() string { return proto.CompactTextString(m) }
func (*ShutdownRequest) ProtoMessage() {}
func (*ShutdownRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{63}
+ return fileDescriptor_6960a02cc0a63cf6, []int{65}
}
func (m *ShutdownRequest) XXX_Unmarshal(b []byte) error {
@@ -3768,7 +3838,7 @@ func (m *ShutdownResponse) Reset() { *m = ShutdownResponse{} }
func (m *ShutdownResponse) String() string { return proto.CompactTextString(m) }
func (*ShutdownResponse) ProtoMessage() {}
func (*ShutdownResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{64}
+ return fileDescriptor_6960a02cc0a63cf6, []int{66}
}
func (m *ShutdownResponse) XXX_Unmarshal(b []byte) error {
@@ -3801,7 +3871,7 @@ func (m *SubscribeOrdersRequest) Reset() { *m = SubscribeOrdersRequest{}
func (m *SubscribeOrdersRequest) String() string { return proto.CompactTextString(m) }
func (*SubscribeOrdersRequest) ProtoMessage() {}
func (*SubscribeOrdersRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{65}
+ return fileDescriptor_6960a02cc0a63cf6, []int{67}
}
func (m *SubscribeOrdersRequest) XXX_Unmarshal(b []byte) error {
@@ -3839,7 +3909,7 @@ func (m *SubscribeAlertsRequest) Reset() { *m = SubscribeAlertsRequest{}
func (m *SubscribeAlertsRequest) String() string { return proto.CompactTextString(m) }
func (*SubscribeAlertsRequest) ProtoMessage() {}
func (*SubscribeAlertsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{66}
+ return fileDescriptor_6960a02cc0a63cf6, []int{68}
}
func (m *SubscribeAlertsRequest) XXX_Unmarshal(b []byte) error {
@@ -3870,7 +3940,7 @@ func (m *SubscribeSwapsAcceptedRequest) Reset() { *m = SubscribeSwapsAcc
func (m *SubscribeSwapsAcceptedRequest) String() string { return proto.CompactTextString(m) }
func (*SubscribeSwapsAcceptedRequest) ProtoMessage() {}
func (*SubscribeSwapsAcceptedRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{67}
+ return fileDescriptor_6960a02cc0a63cf6, []int{69}
}
func (m *SubscribeSwapsAcceptedRequest) XXX_Unmarshal(b []byte) error {
@@ -3904,7 +3974,7 @@ func (m *SubscribeSwapsRequest) Reset() { *m = SubscribeSwapsRequest{} }
func (m *SubscribeSwapsRequest) String() string { return proto.CompactTextString(m) }
func (*SubscribeSwapsRequest) ProtoMessage() {}
func (*SubscribeSwapsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{68}
+ return fileDescriptor_6960a02cc0a63cf6, []int{70}
}
func (m *SubscribeSwapsRequest) XXX_Unmarshal(b []byte) error {
@@ -3964,7 +4034,7 @@ func (m *SwapAccepted) Reset() { *m = SwapAccepted{} }
func (m *SwapAccepted) String() string { return proto.CompactTextString(m) }
func (*SwapAccepted) ProtoMessage() {}
func (*SwapAccepted) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{69}
+ return fileDescriptor_6960a02cc0a63cf6, []int{71}
}
func (m *SwapAccepted) XXX_Unmarshal(b []byte) error {
@@ -4082,7 +4152,7 @@ func (m *SwapFailure) Reset() { *m = SwapFailure{} }
func (m *SwapFailure) String() string { return proto.CompactTextString(m) }
func (*SwapFailure) ProtoMessage() {}
func (*SwapFailure) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{70}
+ return fileDescriptor_6960a02cc0a63cf6, []int{72}
}
func (m *SwapFailure) XXX_Unmarshal(b []byte) error {
@@ -4174,7 +4244,7 @@ func (m *SwapSuccess) Reset() { *m = SwapSuccess{} }
func (m *SwapSuccess) String() string { return proto.CompactTextString(m) }
func (*SwapSuccess) ProtoMessage() {}
func (*SwapSuccess) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{71}
+ return fileDescriptor_6960a02cc0a63cf6, []int{73}
}
func (m *SwapSuccess) XXX_Unmarshal(b []byte) error {
@@ -4318,7 +4388,7 @@ func (m *Trade) Reset() { *m = Trade{} }
func (m *Trade) String() string { return proto.CompactTextString(m) }
func (*Trade) ProtoMessage() {}
func (*Trade) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{72}
+ return fileDescriptor_6960a02cc0a63cf6, []int{74}
}
func (m *Trade) XXX_Unmarshal(b []byte) error {
@@ -4421,7 +4491,7 @@ func (m *TradeHistoryRequest) Reset() { *m = TradeHistoryRequest{} }
func (m *TradeHistoryRequest) String() string { return proto.CompactTextString(m) }
func (*TradeHistoryRequest) ProtoMessage() {}
func (*TradeHistoryRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{73}
+ return fileDescriptor_6960a02cc0a63cf6, []int{75}
}
func (m *TradeHistoryRequest) XXX_Unmarshal(b []byte) error {
@@ -4460,7 +4530,7 @@ func (m *TradeHistoryResponse) Reset() { *m = TradeHistoryResponse{} }
func (m *TradeHistoryResponse) String() string { return proto.CompactTextString(m) }
func (*TradeHistoryResponse) ProtoMessage() {}
func (*TradeHistoryResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{74}
+ return fileDescriptor_6960a02cc0a63cf6, []int{76}
}
func (m *TradeHistoryResponse) XXX_Unmarshal(b []byte) error {
@@ -4506,7 +4576,7 @@ func (m *TradingLimits) Reset() { *m = TradingLimits{} }
func (m *TradingLimits) String() string { return proto.CompactTextString(m) }
func (*TradingLimits) ProtoMessage() {}
func (*TradingLimits) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{75}
+ return fileDescriptor_6960a02cc0a63cf6, []int{77}
}
func (m *TradingLimits) XXX_Unmarshal(b []byte) error {
@@ -4568,7 +4638,7 @@ func (m *TradingLimitsRequest) Reset() { *m = TradingLimitsRequest{} }
func (m *TradingLimitsRequest) String() string { return proto.CompactTextString(m) }
func (*TradingLimitsRequest) ProtoMessage() {}
func (*TradingLimitsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{76}
+ return fileDescriptor_6960a02cc0a63cf6, []int{78}
}
func (m *TradingLimitsRequest) XXX_Unmarshal(b []byte) error {
@@ -4608,7 +4678,7 @@ func (m *TradingLimitsResponse) Reset() { *m = TradingLimitsResponse{} }
func (m *TradingLimitsResponse) String() string { return proto.CompactTextString(m) }
func (*TradingLimitsResponse) ProtoMessage() {}
func (*TradingLimitsResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{77}
+ return fileDescriptor_6960a02cc0a63cf6, []int{79}
}
func (m *TradingLimitsResponse) XXX_Unmarshal(b []byte) error {
@@ -4650,7 +4720,7 @@ func (m *UnbanRequest) Reset() { *m = UnbanRequest{} }
func (m *UnbanRequest) String() string { return proto.CompactTextString(m) }
func (*UnbanRequest) ProtoMessage() {}
func (*UnbanRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{78}
+ return fileDescriptor_6960a02cc0a63cf6, []int{80}
}
func (m *UnbanRequest) XXX_Unmarshal(b []byte) error {
@@ -4695,7 +4765,7 @@ func (m *UnbanResponse) Reset() { *m = UnbanResponse{} }
func (m *UnbanResponse) String() string { return proto.CompactTextString(m) }
func (*UnbanResponse) ProtoMessage() {}
func (*UnbanResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{79}
+ return fileDescriptor_6960a02cc0a63cf6, []int{81}
}
func (m *UnbanResponse) XXX_Unmarshal(b []byte) error {
@@ -4729,7 +4799,7 @@ func (m *UnlockNodeRequest) Reset() { *m = UnlockNodeRequest{} }
func (m *UnlockNodeRequest) String() string { return proto.CompactTextString(m) }
func (*UnlockNodeRequest) ProtoMessage() {}
func (*UnlockNodeRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{80}
+ return fileDescriptor_6960a02cc0a63cf6, []int{82}
}
func (m *UnlockNodeRequest) XXX_Unmarshal(b []byte) error {
@@ -4771,7 +4841,7 @@ func (m *UnlockNodeResponse) Reset() { *m = UnlockNodeResponse{} }
func (m *UnlockNodeResponse) String() string { return proto.CompactTextString(m) }
func (*UnlockNodeResponse) ProtoMessage() {}
func (*UnlockNodeResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{81}
+ return fileDescriptor_6960a02cc0a63cf6, []int{83}
}
func (m *UnlockNodeResponse) XXX_Unmarshal(b []byte) error {
@@ -4827,7 +4897,7 @@ func (m *WithdrawRequest) Reset() { *m = WithdrawRequest{} }
func (m *WithdrawRequest) String() string { return proto.CompactTextString(m) }
func (*WithdrawRequest) ProtoMessage() {}
func (*WithdrawRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{82}
+ return fileDescriptor_6960a02cc0a63cf6, []int{84}
}
func (m *WithdrawRequest) XXX_Unmarshal(b []byte) error {
@@ -4895,7 +4965,7 @@ func (m *WithdrawResponse) Reset() { *m = WithdrawResponse{} }
func (m *WithdrawResponse) String() string { return proto.CompactTextString(m) }
func (*WithdrawResponse) ProtoMessage() {}
func (*WithdrawResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_6960a02cc0a63cf6, []int{83}
+ return fileDescriptor_6960a02cc0a63cf6, []int{85}
}
func (m *WithdrawResponse) XXX_Unmarshal(b []byte) error {
@@ -4961,6 +5031,8 @@ func init() {
proto.RegisterType((*GetInfoRequest)(nil), "xudrpc.GetInfoRequest")
proto.RegisterType((*GetInfoResponse)(nil), "xudrpc.GetInfoResponse")
proto.RegisterMapType((map[string]*LndInfo)(nil), "xudrpc.GetInfoResponse.LndEntry")
+ proto.RegisterType((*GetMnemonicRequest)(nil), "xudrpc.GetMnemonicRequest")
+ proto.RegisterType((*GetMnemonicResponse)(nil), "xudrpc.GetMnemonicResponse")
proto.RegisterType((*GetNodeInfoRequest)(nil), "xudrpc.GetNodeInfoRequest")
proto.RegisterType((*GetNodeInfoResponse)(nil), "xudrpc.GetNodeInfoResponse")
proto.RegisterType((*ListCurrenciesRequest)(nil), "xudrpc.ListCurrenciesRequest")
@@ -5027,279 +5099,281 @@ func init() {
func init() { proto.RegisterFile("xudrpc.proto", fileDescriptor_6960a02cc0a63cf6) }
var fileDescriptor_6960a02cc0a63cf6 = []byte{
- // 4339 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x4d, 0x6f, 0x1c, 0x47,
- 0x76, 0xec, 0xf9, 0xe0, 0x0c, 0xdf, 0x7c, 0xb2, 0x48, 0x4a, 0xa3, 0xb1, 0x64, 0x6b, 0x2b, 0x96,
- 0x21, 0x4b, 0xb6, 0xa4, 0xd0, 0xbb, 0xf1, 0x5a, 0x59, 0x19, 0x26, 0xa9, 0x59, 0x49, 0xf6, 0x98,
- 0x14, 0x9a, 0x92, 0xa5, 0x2c, 0x92, 0x6d, 0xf4, 0x74, 0x97, 0xc8, 0x8e, 0x9a, 0xdd, 0xe3, 0xee,
- 0x1e, 0x51, 0x4c, 0x2e, 0xc1, 0x22, 0xa7, 0x24, 0x40, 0x0e, 0x41, 0xce, 0xc9, 0x29, 0x08, 0xb0,
- 0x41, 0xae, 0x39, 0x05, 0xc8, 0x39, 0xd7, 0x1c, 0x12, 0x24, 0xb9, 0x04, 0xc8, 0x2f, 0x58, 0xe4,
- 0x1a, 0x20, 0xa8, 0xaf, 0xae, 0xaa, 0xee, 0x1e, 0xae, 0xb4, 0x70, 0xf6, 0x42, 0x4c, 0xbd, 0x7a,
- 0xfd, 0x5e, 0xd5, 0xfb, 0xaa, 0xf7, 0x5e, 0x15, 0xa1, 0xfb, 0x7a, 0xe1, 0x27, 0x73, 0xef, 0xd6,
- 0x3c, 0x89, 0xb3, 0x18, 0xad, 0xf2, 0xd1, 0x78, 0xdd, 0x8d, 0xa2, 0x38, 0x73, 0xb3, 0x20, 0x8e,
- 0x52, 0x3e, 0x85, 0xb7, 0x60, 0x63, 0xc7, 0xf7, 0xf7, 0x16, 0x49, 0x42, 0x22, 0xef, 0xcc, 0x26,
- 0xe9, 0x3c, 0x8e, 0x52, 0x82, 0x7f, 0x0a, 0xfd, 0x1d, 0xdf, 0x7f, 0xec, 0x06, 0x89, 0x4d, 0xbe,
- 0x5d, 0x90, 0x34, 0x43, 0xef, 0x43, 0x6f, 0xe6, 0xa6, 0xc4, 0xf1, 0x04, 0xea, 0xc8, 0xba, 0x6a,
- 0x5d, 0x5f, 0xb3, 0x4d, 0x20, 0xfa, 0x00, 0xfa, 0xdf, 0x2e, 0xe2, 0x4c, 0x43, 0xab, 0x31, 0xb4,
- 0x02, 0x14, 0xaf, 0xc3, 0x20, 0xa7, 0x2f, 0x58, 0xfe, 0xbc, 0x06, 0xcd, 0x9d, 0x90, 0x24, 0x19,
- 0xba, 0x09, 0x8d, 0xec, 0x6c, 0x4e, 0x18, 0x87, 0xfe, 0xf6, 0xc5, 0x5b, 0x62, 0x2f, 0x6c, 0x92,
- 0xff, 0x7d, 0x72, 0x36, 0x27, 0x36, 0x43, 0x42, 0x23, 0x68, 0x9d, 0x90, 0x34, 0x75, 0x8f, 0x88,
- 0x60, 0x25, 0x87, 0xe8, 0x10, 0xb6, 0xbc, 0x63, 0x37, 0x8a, 0x48, 0xe8, 0xcc, 0xdc, 0xd0, 0x8d,
- 0x3c, 0xe2, 0xb8, 0xf4, 0xe3, 0x51, 0xfd, 0xaa, 0x75, 0xbd, 0xb3, 0xfd, 0x8e, 0xa4, 0xbb, 0xc7,
- 0x91, 0x76, 0x39, 0x0e, 0xa3, 0xff, 0x70, 0xc5, 0xae, 0xfe, 0x16, 0xfd, 0x88, 0x8a, 0x41, 0x27,
- 0xd6, 0x60, 0xc4, 0x36, 0x25, 0xb1, 0x02, 0x15, 0x13, 0x19, 0xdf, 0x83, 0xb5, 0x7c, 0xfd, 0xe8,
- 0x22, 0x6c, 0x4c, 0x0f, 0x9e, 0x39, 0x7b, 0x0f, 0x77, 0xf6, 0xf7, 0x27, 0x53, 0x67, 0x77, 0x67,
- 0xba, 0xb3, 0xbf, 0x37, 0x19, 0xae, 0xc8, 0x89, 0x27, 0xf6, 0xce, 0xfd, 0x47, 0xfb, 0x0f, 0xf2,
- 0x09, 0x6b, 0x77, 0x0d, 0x5a, 0x73, 0xf7, 0x2c, 0x8c, 0x5d, 0x1f, 0xff, 0x43, 0x0d, 0x5a, 0x82,
- 0x17, 0x55, 0x4d, 0x16, 0x67, 0x6e, 0xbe, 0x54, 0x26, 0xb8, 0x86, 0x6d, 0x02, 0xd1, 0x75, 0x18,
- 0x14, 0xb6, 0xc4, 0x04, 0xd6, 0xb0, 0x8b, 0x60, 0xf4, 0x43, 0xb8, 0x38, 0x27, 0x91, 0x1f, 0x44,
- 0x47, 0x4e, 0xf1, 0x8b, 0x3a, 0xfb, 0x62, 0xd9, 0x34, 0xba, 0x0b, 0xa3, 0x20, 0x72, 0xbd, 0x2c,
- 0x78, 0x45, 0x4a, 0x9f, 0x36, 0xd8, 0xa7, 0x4b, 0xe7, 0xa9, 0xe9, 0x9c, 0xba, 0x61, 0x48, 0xb2,
- 0xfc, 0x8b, 0x26, 0xfb, 0xa2, 0x00, 0x45, 0x9f, 0xc3, 0x78, 0x11, 0x79, 0x71, 0xf4, 0x22, 0x48,
- 0x4e, 0x88, 0xef, 0x14, 0xbe, 0x59, 0x65, 0xdf, 0x9c, 0x83, 0x81, 0xff, 0xcd, 0x82, 0xae, 0xae,
- 0xa5, 0x37, 0x14, 0xdf, 0xc7, 0xd0, 0x48, 0x03, 0x9f, 0xcb, 0xac, 0xbf, 0x7d, 0xa9, 0x4a, 0xdf,
- 0xb7, 0x0e, 0x03, 0x9f, 0xd8, 0x0c, 0x0d, 0x6d, 0x42, 0x73, 0x16, 0x2f, 0x22, 0x9f, 0x49, 0xac,
- 0x67, 0xf3, 0x01, 0xc2, 0xd0, 0xa5, 0xb3, 0x05, 0x99, 0x18, 0x30, 0x34, 0x86, 0x76, 0xee, 0x3c,
- 0x4d, 0x66, 0xd1, 0xf9, 0x18, 0x5f, 0x81, 0x06, 0xe5, 0x81, 0x00, 0x56, 0xed, 0xc9, 0xd7, 0x07,
- 0x4f, 0xa8, 0xb5, 0xac, 0x41, 0x73, 0x7a, 0xb0, 0xb7, 0x33, 0x1d, 0x5a, 0xf8, 0xb7, 0x00, 0x76,
- 0xdd, 0x48, 0x7a, 0xec, 0x75, 0x18, 0x44, 0xb1, 0x4f, 0x9c, 0xc0, 0x27, 0x51, 0x16, 0xbc, 0x08,
- 0x48, 0x22, 0x7c, 0xb6, 0x08, 0xc6, 0x3d, 0xe8, 0xb0, 0xef, 0x84, 0x27, 0x7e, 0x0a, 0xcd, 0xbd,
- 0x63, 0x37, 0x88, 0xe8, 0x26, 0x3c, 0xfa, 0x43, 0x7c, 0xc7, 0x07, 0xd4, 0xe3, 0x22, 0x92, 0x9d,
- 0xc6, 0xc9, 0x4b, 0xe9, 0x71, 0x62, 0x88, 0xe7, 0xd0, 0x16, 0xce, 0x94, 0xa2, 0x0b, 0xb0, 0xca,
- 0x15, 0xcd, 0x3e, 0xee, 0xd9, 0x62, 0x44, 0xb7, 0x27, 0x4d, 0x80, 0x7d, 0xde, 0xb3, 0xf3, 0x31,
- 0xa5, 0x2c, 0x2c, 0x4b, 0x88, 0x4d, 0x0e, 0x29, 0x35, 0x2f, 0x8c, 0x53, 0xe2, 0x33, 0x91, 0xf5,
- 0x6c, 0x31, 0xc2, 0x7f, 0x56, 0x83, 0x8d, 0x0a, 0xff, 0x7d, 0x43, 0x9d, 0x7e, 0xdf, 0xd0, 0xe9,
- 0xd5, 0x73, 0x02, 0xc2, 0x77, 0xa3, 0xda, 0xf7, 0xa1, 0x27, 0xad, 0x7e, 0x1e, 0x07, 0x51, 0x26,
- 0xf4, 0x6b, 0x02, 0x0d, 0x03, 0x58, 0x7d, 0x3b, 0x03, 0xf8, 0x47, 0x0b, 0x36, 0xf6, 0xa8, 0x64,
- 0xc4, 0x16, 0xde, 0xda, 0x14, 0x0c, 0xe6, 0x35, 0x93, 0x39, 0xdd, 0xf8, 0x8b, 0x38, 0x11, 0x51,
- 0xa0, 0x6d, 0xf3, 0x01, 0xba, 0x0a, 0x1d, 0x9f, 0xa4, 0x59, 0x10, 0xb1, 0x73, 0x85, 0xed, 0x7b,
- 0xcd, 0xd6, 0x41, 0xcc, 0x14, 0x4e, 0xe2, 0x85, 0xd8, 0x6f, 0xc3, 0x16, 0x23, 0x34, 0x84, 0xfa,
- 0x0b, 0x22, 0x5d, 0x96, 0xfe, 0xc4, 0x5f, 0xc0, 0xa6, 0xb9, 0x7c, 0x6e, 0x91, 0x74, 0xfd, 0x59,
- 0xe2, 0x46, 0x29, 0xb5, 0x93, 0x38, 0x72, 0x02, 0x3f, 0x1d, 0x59, 0x57, 0xeb, 0x74, 0xfd, 0x05,
- 0x30, 0xfe, 0x08, 0xfa, 0x7b, 0x71, 0x14, 0x11, 0x2f, 0x93, 0x7b, 0x1f, 0x43, 0x9b, 0x6d, 0x72,
- 0x91, 0x04, 0x62, 0xd3, 0xf9, 0x98, 0x1e, 0x43, 0x39, 0xb6, 0x30, 0xfe, 0xdb, 0xb0, 0xbe, 0x97,
- 0x10, 0x37, 0x23, 0xfb, 0xb1, 0x4f, 0x34, 0x1a, 0x73, 0x37, 0x4d, 0x4f, 0xe3, 0xc4, 0x97, 0x34,
- 0xe4, 0x18, 0xff, 0xa5, 0x05, 0x48, 0xff, 0x42, 0x2c, 0xf9, 0x37, 0xa0, 0x97, 0x12, 0xe2, 0x3b,
- 0x27, 0x11, 0x39, 0x89, 0xa3, 0xc0, 0x13, 0x0b, 0xee, 0x52, 0xe0, 0xd7, 0x02, 0x86, 0x3e, 0x84,
- 0x61, 0x10, 0x05, 0x59, 0xe0, 0x86, 0xc1, 0x1f, 0x10, 0xdf, 0x09, 0x23, 0x3f, 0x1d, 0xd5, 0xf8,
- 0xc6, 0x34, 0xf8, 0x34, 0xf2, 0x53, 0x74, 0x1b, 0x36, 0x74, 0x54, 0x8f, 0x2e, 0xfb, 0x75, 0x26,
- 0x54, 0x81, 0xb4, 0xa9, 0x3d, 0x3e, 0x83, 0xff, 0xd5, 0x82, 0xb6, 0x3c, 0xd7, 0x0d, 0xb5, 0x5a,
- 0x05, 0xb5, 0xde, 0x83, 0x4e, 0x7a, 0xea, 0xce, 0x1d, 0x2f, 0x0c, 0x48, 0x94, 0x09, 0x67, 0x50,
- 0xa7, 0xa3, 0x40, 0xbb, 0x75, 0x78, 0xea, 0xce, 0xf7, 0x18, 0x8a, 0xad, 0xe3, 0x73, 0x57, 0x7b,
- 0x49, 0x22, 0xc7, 0xf5, 0xfd, 0x84, 0xa4, 0x29, 0x5b, 0xd2, 0x9a, 0x6d, 0x02, 0x69, 0x74, 0xf7,
- 0x89, 0x17, 0x9c, 0xb8, 0xa1, 0x33, 0x0f, 0x5d, 0x8f, 0xa4, 0xc2, 0x91, 0x0b, 0x50, 0x8c, 0x01,
- 0x14, 0x23, 0xd4, 0x82, 0xfa, 0x74, 0xff, 0xfe, 0x70, 0x05, 0x75, 0xa0, 0xb5, 0x77, 0xb0, 0xbf,
- 0x3f, 0x79, 0xfe, 0x64, 0x58, 0xa3, 0x3a, 0xbe, 0x4f, 0xe6, 0x71, 0x1a, 0xe8, 0x3a, 0x5e, 0xb6,
- 0x3d, 0x7c, 0x13, 0x06, 0x39, 0xb6, 0xd0, 0xcd, 0x08, 0x5a, 0x72, 0xb1, 0x1c, 0x5b, 0x0e, 0xa9,
- 0x01, 0xde, 0x0f, 0x52, 0x2f, 0x7e, 0x45, 0x12, 0xaa, 0xcd, 0xf4, 0xed, 0x63, 0xe9, 0x0f, 0x60,
- 0xab, 0x40, 0x41, 0x30, 0xbd, 0x0c, 0x6b, 0xd1, 0xe2, 0xc4, 0xa1, 0xf8, 0xa9, 0x88, 0x89, 0x0a,
- 0x80, 0xff, 0xc4, 0x02, 0x34, 0x79, 0x4d, 0xbc, 0x45, 0x46, 0xe8, 0xfe, 0xb5, 0x8d, 0xc5, 0x89,
- 0x4f, 0x12, 0x27, 0xc8, 0x0d, 0x4f, 0x8e, 0x59, 0xb4, 0x74, 0x03, 0x36, 0x25, 0xe2, 0xb0, 0x18,
- 0xd2, 0x58, 0x34, 0x27, 0x24, 0x71, 0xe6, 0x8b, 0x99, 0xf3, 0x92, 0x9c, 0x09, 0x8d, 0x18, 0x30,
- 0x4a, 0xf9, 0xdb, 0x85, 0x1b, 0x65, 0x41, 0x76, 0x26, 0x62, 0x55, 0x3e, 0xa6, 0x3e, 0xf0, 0x80,
- 0x64, 0x22, 0xfe, 0xbd, 0x89, 0x8c, 0xff, 0xd6, 0x02, 0xa4, 0x7f, 0x21, 0xb6, 0x7c, 0x1f, 0xda,
- 0x22, 0xf4, 0x71, 0x7f, 0xed, 0x6c, 0x5f, 0x97, 0x66, 0x55, 0xc6, 0x96, 0x47, 0x69, 0x3a, 0x89,
- 0xb2, 0xe4, 0xcc, 0xce, 0xbf, 0x1c, 0x4f, 0xa1, 0x67, 0x4c, 0xd1, 0xb8, 0x41, 0x77, 0xc5, 0x17,
- 0x41, 0x7f, 0xa2, 0x6b, 0xd0, 0x7c, 0xe5, 0x86, 0x0b, 0x1e, 0xc9, 0x3b, 0xdb, 0x83, 0xc2, 0xe9,
- 0x6c, 0xf3, 0xd9, 0xbb, 0xb5, 0x1f, 0x5a, 0x78, 0x08, 0xfd, 0x07, 0x24, 0x7b, 0x14, 0xbd, 0x88,
- 0xc5, 0xc6, 0xf0, 0xbf, 0xd7, 0x61, 0x90, 0x83, 0x94, 0x85, 0xbc, 0x22, 0x49, 0x4a, 0x03, 0x9a,
- 0xb0, 0x10, 0x31, 0xa4, 0xb2, 0x65, 0x2a, 0x97, 0xb2, 0xe5, 0xa2, 0x37, 0x60, 0x08, 0x41, 0x63,
- 0x91, 0x04, 0xd4, 0x13, 0xa8, 0x2b, 0xb3, 0xdf, 0x52, 0xfd, 0x54, 0x07, 0xd2, 0xf6, 0x15, 0x20,
- 0x9f, 0x75, 0x83, 0x24, 0x65, 0x51, 0x52, 0xce, 0x52, 0x00, 0xba, 0x09, 0xab, 0x4c, 0xeb, 0x29,
- 0x8b, 0x95, 0x9d, 0xed, 0x0d, 0xb9, 0xbf, 0x03, 0x06, 0xdd, 0xa3, 0xd1, 0xd4, 0x16, 0x28, 0x68,
- 0x1b, 0xea, 0x61, 0xe4, 0x8f, 0x5a, 0x4c, 0xde, 0x57, 0x35, 0x79, 0xeb, 0x1b, 0xbc, 0x35, 0x8d,
- 0x7c, 0x2e, 0x67, 0x8a, 0x4c, 0x23, 0xbb, 0x1b, 0x06, 0x6e, 0x3a, 0x5a, 0xe3, 0x07, 0x3d, 0x1b,
- 0xe8, 0x07, 0x3d, 0x18, 0x07, 0x3d, 0xba, 0x03, 0x1b, 0x32, 0x05, 0x64, 0xa1, 0xe0, 0xd8, 0x4d,
- 0x8f, 0x49, 0x3a, 0xea, 0xb0, 0xfd, 0x56, 0x4d, 0xa1, 0x8f, 0xa1, 0x25, 0x43, 0x56, 0xd7, 0xdc,
- 0x83, 0x88, 0x57, 0x6c, 0x75, 0x12, 0x67, 0xfc, 0x00, 0xda, 0x72, 0x85, 0x6f, 0xa1, 0xee, 0x69,
- 0xe4, 0x33, 0x32, 0x9a, 0xba, 0x3f, 0x67, 0x86, 0x49, 0x3d, 0x51, 0x53, 0xf9, 0x5b, 0xb8, 0xb3,
- 0x0d, 0x1b, 0xc6, 0xf7, 0x79, 0x74, 0x1f, 0x24, 0x64, 0xbe, 0xe0, 0xb5, 0xd4, 0xa1, 0x17, 0x27,
- 0x3c, 0xc3, 0x58, 0xb7, 0x41, 0x81, 0xe9, 0xb9, 0x37, 0xa3, 0xe7, 0x18, 0xf7, 0xcf, 0xb6, 0x2d,
- 0x46, 0xf8, 0x22, 0x6c, 0x4d, 0x83, 0x34, 0x13, 0x91, 0x35, 0xc8, 0xa3, 0x0c, 0xfe, 0x12, 0x2e,
- 0x14, 0x27, 0x04, 0xbf, 0x3b, 0x00, 0x5e, 0x0e, 0x15, 0xbe, 0x34, 0x2c, 0x86, 0x68, 0x5b, 0xc3,
- 0xc1, 0xff, 0x6c, 0xc1, 0x3a, 0x25, 0xc6, 0x4d, 0x44, 0x6e, 0x5c, 0x8b, 0x19, 0x96, 0x19, 0x33,
- 0x7e, 0x00, 0xcd, 0xf8, 0x34, 0x22, 0x89, 0x88, 0xff, 0xef, 0xe5, 0x32, 0x2d, 0xd2, 0xb8, 0x75,
- 0x40, 0xd1, 0x6c, 0x8e, 0x4d, 0x2d, 0x27, 0x0c, 0x4e, 0x82, 0x4c, 0x26, 0x43, 0x6c, 0x40, 0xe5,
- 0x1b, 0x44, 0x5e, 0xb8, 0xf0, 0x69, 0xe1, 0x13, 0xb8, 0xa9, 0x08, 0xf7, 0x6d, 0xbb, 0x08, 0xc6,
- 0xef, 0x43, 0x93, 0xd1, 0x43, 0x6d, 0x68, 0xec, 0x1e, 0x3c, 0x79, 0x38, 0x5c, 0xa1, 0x41, 0xff,
- 0xe0, 0xd9, 0xfe, 0xd0, 0xa2, 0xa0, 0xc7, 0x93, 0x89, 0x3d, 0xac, 0xe1, 0xbf, 0xb2, 0x00, 0xe9,
- 0x0b, 0x11, 0x52, 0xf9, 0x3c, 0xf7, 0x0b, 0x2e, 0x91, 0x0f, 0xaa, 0x16, 0x2d, 0x0c, 0x9e, 0x0f,
- 0xb9, 0xcd, 0x8b, 0xaf, 0xc6, 0x8f, 0xa0, 0xa3, 0x81, 0x2b, 0x0c, 0xed, 0x7d, 0xd3, 0xd0, 0xfa,
- 0xa6, 0xdf, 0xe9, 0x76, 0x86, 0x60, 0x48, 0x99, 0xd2, 0x8a, 0x36, 0x57, 0xe7, 0x87, 0x5c, 0x03,
- 0x02, 0x26, 0xd6, 0xbc, 0x09, 0x4d, 0xee, 0xe5, 0x3c, 0x1f, 0xe0, 0x83, 0xfc, 0x73, 0xa2, 0xe4,
- 0x8c, 0x3f, 0x15, 0x9f, 0x13, 0x7d, 0xcb, 0x18, 0x9a, 0x3c, 0x84, 0xf0, 0x1d, 0x77, 0xe5, 0x8a,
- 0x28, 0x96, 0xcd, 0xa7, 0xf0, 0x7f, 0x5a, 0xd0, 0x12, 0xae, 0x40, 0x6d, 0x30, 0xcd, 0xdc, 0x6c,
- 0x21, 0x4f, 0x3a, 0x31, 0x42, 0x1f, 0x41, 0x5b, 0x64, 0x9d, 0xa9, 0xd8, 0xdc, 0xb0, 0x90, 0xfe,
- 0xa6, 0x76, 0x8e, 0x81, 0xae, 0xc1, 0x2a, 0xcb, 0xfd, 0x79, 0x48, 0xeb, 0x6c, 0xf7, 0x34, 0xdc,
- 0x20, 0xb2, 0xc5, 0x24, 0x4d, 0x05, 0x67, 0x61, 0xec, 0xbd, 0x3c, 0x26, 0xc1, 0xd1, 0x71, 0x26,
- 0xa2, 0x9c, 0x0e, 0xca, 0x23, 0x63, 0x53, 0x8b, 0x8c, 0x5a, 0xac, 0x5d, 0x35, 0x63, 0x6d, 0x1e,
- 0x96, 0x5a, 0x5a, 0x58, 0xc2, 0x5f, 0x42, 0x9f, 0xf9, 0xa3, 0x4a, 0x5a, 0x8b, 0x31, 0xd9, 0xaa,
- 0x88, 0xc9, 0x39, 0xad, 0x9a, 0x4e, 0xeb, 0x6f, 0x2c, 0x40, 0x07, 0x73, 0x12, 0xfd, 0xbf, 0xe4,
- 0xcb, 0x2a, 0xef, 0xad, 0x1b, 0x79, 0xef, 0x55, 0xe8, 0xcc, 0x17, 0xe9, 0xb1, 0x23, 0x26, 0xf9,
- 0xe9, 0xab, 0x83, 0x64, 0x66, 0xdc, 0x54, 0x99, 0xf1, 0x3d, 0xd8, 0x30, 0xd6, 0x29, 0xcc, 0xe1,
- 0x03, 0xe8, 0x9b, 0x19, 0xb0, 0x58, 0x67, 0x01, 0x8a, 0xff, 0xa9, 0x06, 0x4d, 0x66, 0xb4, 0xcc,
- 0xfe, 0x92, 0x40, 0x54, 0x44, 0x96, 0xcd, 0x07, 0x46, 0x36, 0x50, 0x33, 0xb3, 0x01, 0x3d, 0x66,
- 0xd4, 0xcd, 0x98, 0xd1, 0x87, 0x5a, 0xe0, 0x8b, 0x8c, 0xbf, 0x16, 0xf8, 0xe8, 0x8b, 0xb2, 0xd8,
- 0x9a, 0xcc, 0xb6, 0x2e, 0x48, 0x7b, 0x31, 0x15, 0x57, 0x29, 0xce, 0x30, 0xf6, 0xdc, 0x90, 0x32,
- 0x13, 0xb5, 0x8f, 0x1c, 0xa3, 0x77, 0x01, 0x3c, 0x96, 0x67, 0xfb, 0x8e, 0x9b, 0x31, 0x93, 0x68,
- 0xd8, 0x1a, 0x04, 0x5d, 0x13, 0xd5, 0x5c, 0x9b, 0x05, 0xb0, 0x75, 0xc3, 0x57, 0xb5, 0xf2, 0x0d,
- 0x43, 0x37, 0x48, 0x9d, 0xf8, 0x34, 0x72, 0x58, 0x14, 0x60, 0x47, 0x5e, 0xdb, 0x36, 0x60, 0xd4,
- 0x4c, 0x8f, 0xe3, 0xd0, 0x67, 0xc7, 0x5e, 0xc3, 0x66, 0xbf, 0xf1, 0x5f, 0x5b, 0xd0, 0x65, 0xb4,
- 0x6c, 0x72, 0x12, 0xbf, 0x72, 0x43, 0x43, 0x66, 0xd6, 0x72, 0x99, 0x15, 0x72, 0x33, 0x3d, 0xa3,
- 0xab, 0x17, 0x32, 0x3a, 0x7d, 0xf7, 0x8d, 0xc2, 0xee, 0x8b, 0xcb, 0x6e, 0x96, 0x97, 0x8d, 0x8f,
- 0x61, 0x95, 0x47, 0x26, 0xf4, 0x31, 0xc0, 0x6c, 0x71, 0xe6, 0x18, 0xd1, 0xb1, 0x67, 0x48, 0xc4,
- 0xd6, 0x10, 0xd0, 0x6d, 0xe8, 0xa4, 0x24, 0x0c, 0x25, 0x7e, 0xad, 0x0a, 0x5f, 0xc7, 0xc0, 0x9f,
- 0xc8, 0xc8, 0xc9, 0x72, 0x0f, 0x2a, 0x2f, 0x1a, 0x7a, 0x44, 0x5a, 0xcb, 0x7e, 0x53, 0x1b, 0x8e,
- 0x4f, 0x23, 0x51, 0xe3, 0xd3, 0x9f, 0xf8, 0x67, 0x96, 0xf8, 0xea, 0xe9, 0xdc, 0x77, 0x33, 0x42,
- 0x8f, 0x71, 0xbe, 0x17, 0x8b, 0x19, 0x89, 0xc9, 0xef, 0xe1, 0x8a, 0xcd, 0x67, 0xd1, 0x8f, 0xa0,
- 0xc7, 0x25, 0x94, 0x70, 0xc1, 0x8b, 0x78, 0xb5, 0x69, 0x2e, 0x8f, 0xcf, 0x3d, 0x5c, 0xb1, 0x4d,
- 0xe4, 0xdd, 0x3e, 0x74, 0x39, 0x60, 0xc1, 0x98, 0xe2, 0xff, 0xa8, 0x41, 0x83, 0x06, 0xcb, 0xe5,
- 0x45, 0xc0, 0x1b, 0xa5, 0x78, 0x5f, 0x40, 0x37, 0x8c, 0x7c, 0x39, 0x94, 0x71, 0xf1, 0xb2, 0x1e,
- 0x8e, 0x69, 0x3a, 0xf2, 0x78, 0x31, 0xfb, 0x8a, 0x9c, 0x89, 0x63, 0xc7, 0xf8, 0x82, 0xf2, 0x0f,
- 0x22, 0xde, 0x48, 0xe0, 0x67, 0xa3, 0x1c, 0xaa, 0x23, 0xa2, 0xa9, 0x1d, 0x11, 0x34, 0x6a, 0xbc,
- 0x5e, 0xf8, 0x8e, 0x19, 0x2a, 0x75, 0x10, 0xfa, 0x08, 0xd6, 0x53, 0xe2, 0xc5, 0x91, 0x9f, 0xf2,
- 0xf2, 0xd0, 0xcb, 0x88, 0xcf, 0xfc, 0xa4, 0x67, 0x97, 0x27, 0xaa, 0x73, 0xbe, 0xf1, 0x3d, 0x18,
- 0x14, 0x96, 0x5d, 0x71, 0x2c, 0x6e, 0xea, 0xc7, 0xe2, 0x9a, 0x7e, 0x0c, 0xfe, 0x51, 0x0d, 0xd6,
- 0x1f, 0xd3, 0x4a, 0x4e, 0x28, 0x85, 0x87, 0xd3, 0xef, 0x32, 0xe6, 0xe8, 0xfe, 0xd3, 0x28, 0xf8,
- 0x8f, 0x8c, 0x00, 0xcd, 0xf3, 0x23, 0xc0, 0x0d, 0x18, 0x26, 0x84, 0xd5, 0x9b, 0x4e, 0x4e, 0x8a,
- 0x8b, 0xb3, 0x04, 0xa7, 0x99, 0x6e, 0x70, 0x72, 0x42, 0xfc, 0xc0, 0xcd, 0x28, 0xd4, 0xf1, 0x68,
- 0x3d, 0x11, 0x32, 0xa9, 0xb6, 0xed, 0xaa, 0x29, 0x2a, 0x02, 0xa4, 0x8b, 0x40, 0x44, 0xea, 0xcf,
- 0x68, 0xa9, 0x9f, 0x91, 0x24, 0x72, 0x43, 0xe7, 0xc4, 0xcd, 0xbc, 0x63, 0xb2, 0xc4, 0x2f, 0x4b,
- 0x68, 0xe8, 0xb7, 0xa1, 0xcf, 0x52, 0xe9, 0x74, 0xe1, 0x79, 0x24, 0xa5, 0xc9, 0x14, 0x77, 0xd0,
- 0x3c, 0x85, 0xa6, 0x15, 0xe3, 0x21, 0x9f, 0xb4, 0x0b, 0xa8, 0xe8, 0x53, 0x9a, 0xa9, 0x9e, 0xb8,
- 0x41, 0x44, 0x33, 0x72, 0xee, 0x6e, 0xf5, 0x0a, 0x77, 0xb3, 0x8b, 0x58, 0xe8, 0x33, 0xe8, 0x31,
- 0x52, 0x2f, 0xdc, 0x20, 0x5c, 0x24, 0x2c, 0x83, 0x2b, 0x31, 0xfd, 0x31, 0x9f, 0xb3, 0x4d, 0x4c,
- 0xfc, 0x0b, 0x0b, 0x06, 0x4a, 0x04, 0x93, 0x57, 0xb4, 0x94, 0xbf, 0x06, 0x4d, 0xb6, 0x9f, 0xa5,
- 0xce, 0xce, 0x66, 0xd1, 0x67, 0xd0, 0xd5, 0x37, 0x20, 0x7c, 0xbd, 0x6a, 0xa7, 0x0f, 0x57, 0x6c,
- 0x03, 0x15, 0x7d, 0xf6, 0x66, 0x3b, 0x7d, 0xb8, 0x52, 0xb5, 0xd7, 0xae, 0xbe, 0x03, 0xd1, 0xd4,
- 0xaf, 0xda, 0x6a, 0xce, 0x55, 0xa0, 0xee, 0xb6, 0xa0, 0x49, 0xe8, 0x06, 0x71, 0x0c, 0x1d, 0xad,
- 0x94, 0x59, 0x9a, 0x78, 0x69, 0x61, 0xa7, 0x66, 0x86, 0x1d, 0x2d, 0x0f, 0x6a, 0x94, 0xf2, 0x20,
- 0xde, 0x87, 0x6d, 0x6a, 0x7d, 0x58, 0xfc, 0x09, 0x6c, 0xb1, 0xa8, 0x47, 0xd4, 0xed, 0xcd, 0x2f,
- 0xaf, 0xd4, 0x47, 0x70, 0xa1, 0xf8, 0x91, 0x68, 0x7c, 0x4d, 0x01, 0xf1, 0x19, 0xc3, 0x75, 0xcf,
- 0x6b, 0x40, 0x9c, 0xe3, 0xc0, 0xf8, 0xe7, 0x16, 0x6c, 0x18, 0xe4, 0x84, 0x1b, 0xbc, 0x0b, 0x43,
- 0x89, 0xe3, 0xc4, 0x91, 0xc3, 0x4e, 0x59, 0x4b, 0x9d, 0xb2, 0xe8, 0x16, 0x20, 0xa5, 0x9c, 0x02,
- 0xf5, 0x8a, 0x19, 0xee, 0xcb, 0x94, 0x8d, 0xaf, 0xb0, 0x79, 0xb6, 0x55, 0x82, 0xeb, 0x41, 0xa5,
- 0x61, 0x04, 0x15, 0x25, 0x95, 0x9d, 0x30, 0x34, 0x8a, 0x1d, 0xbc, 0x80, 0x8b, 0xa5, 0x19, 0xb1,
- 0x95, 0x8f, 0x60, 0x5d, 0xb2, 0x90, 0x22, 0x91, 0x59, 0x7d, 0x79, 0x82, 0x62, 0x8b, 0xfd, 0x6a,
- 0xd8, 0xbc, 0xd7, 0x57, 0x9e, 0xc0, 0x1f, 0xc3, 0x3a, 0x67, 0xab, 0x5f, 0xc1, 0x2d, 0x2d, 0xde,
- 0xf0, 0xa6, 0xd4, 0x9d, 0x71, 0xa3, 0xf6, 0xc7, 0x35, 0x0a, 0x4e, 0xb3, 0x38, 0x31, 0x9a, 0x99,
- 0x6f, 0xd4, 0x99, 0xd4, 0x3b, 0x9e, 0x35, 0xb3, 0xe3, 0x89, 0xbe, 0x82, 0x0e, 0x3d, 0xc9, 0x66,
- 0xae, 0xf7, 0x72, 0x31, 0x97, 0x47, 0xdf, 0x0d, 0xe9, 0x2c, 0x65, 0x8e, 0xf4, 0x20, 0xdc, 0xe5,
- 0xc8, 0xfc, 0x20, 0x84, 0x30, 0x07, 0xa0, 0xef, 0xb1, 0xbb, 0x4a, 0xc7, 0x77, 0x33, 0x77, 0xe6,
- 0xa6, 0xbc, 0x1b, 0xdc, 0x65, 0xe7, 0xda, 0x7d, 0x01, 0x12, 0x67, 0x92, 0x4e, 0xe1, 0x97, 0x9d,
- 0x49, 0x5d, 0xfd, 0x4c, 0x22, 0xd4, 0x12, 0xb5, 0x35, 0xa9, 0x06, 0x6d, 0xc2, 0xc1, 0xa2, 0xf1,
- 0x2a, 0xc4, 0x20, 0x81, 0xac, 0xeb, 0xfa, 0x21, 0x35, 0x2f, 0x81, 0x24, 0xfb, 0x17, 0xbc, 0x98,
- 0x1f, 0x48, 0xb8, 0xec, 0xb7, 0xde, 0x07, 0x74, 0x48, 0xb2, 0x69, 0x7c, 0x34, 0x25, 0xaf, 0x54,
- 0x25, 0x71, 0x0b, 0xd6, 0xc2, 0xf8, 0xc8, 0x09, 0x29, 0x4c, 0x5c, 0x68, 0xe6, 0x85, 0x56, 0x8e,
- 0xab, 0x50, 0xf0, 0x16, 0x6c, 0x18, 0x54, 0x84, 0x2a, 0xd7, 0x61, 0x70, 0x78, 0xbc, 0xc8, 0xfc,
- 0xf8, 0x54, 0x5e, 0xef, 0xd0, 0x92, 0x51, 0x81, 0x04, 0xda, 0xf7, 0xe1, 0xc2, 0xe1, 0x62, 0x96,
- 0x7a, 0x49, 0x30, 0x23, 0x66, 0xe1, 0x3f, 0x86, 0x36, 0x79, 0x1d, 0xa4, 0x59, 0x10, 0x1d, 0xb1,
- 0x65, 0xb4, 0xed, 0x7c, 0x4c, 0xad, 0x3f, 0xff, 0x8a, 0xdd, 0x76, 0xe4, 0xd6, 0xff, 0x1e, 0x5c,
- 0xc9, 0x67, 0x68, 0x10, 0x4c, 0x77, 0x3c, 0x8f, 0xcc, 0x33, 0xe2, 0x4b, 0x84, 0x7b, 0xb0, 0x65,
- 0x22, 0x68, 0xd7, 0xc5, 0xb2, 0xd4, 0xcf, 0xdc, 0x97, 0x22, 0xc7, 0x6b, 0xdb, 0x26, 0x10, 0xff,
- 0x6f, 0x0d, 0xba, 0xf4, 0x33, 0x49, 0x16, 0x5d, 0x2a, 0x85, 0x9b, 0x16, 0x1b, 0x3f, 0x32, 0x93,
- 0xe3, 0x5a, 0x21, 0x39, 0x3e, 0x37, 0x5d, 0x58, 0xd6, 0xe6, 0x54, 0x69, 0x49, 0x53, 0x4f, 0x4b,
- 0x8a, 0xcd, 0xd3, 0xd5, 0x8a, 0xe6, 0xe9, 0x05, 0x58, 0x4d, 0x58, 0x67, 0x4b, 0x54, 0xa6, 0x62,
- 0x44, 0xa3, 0x11, 0xaf, 0xe0, 0x9c, 0x84, 0x78, 0x24, 0x78, 0x45, 0xa5, 0xdd, 0xe6, 0xd1, 0xa8,
- 0x08, 0xa7, 0xa5, 0x9b, 0x80, 0xa5, 0xe2, 0xce, 0x6b, 0x8d, 0xdf, 0x77, 0x9a, 0x50, 0x1a, 0x11,
- 0x65, 0xf4, 0xd6, 0xa8, 0xf2, 0x86, 0x5c, 0xc5, 0x0c, 0x5d, 0x43, 0x0e, 0x95, 0x94, 0x3b, 0x3c,
- 0xbb, 0x29, 0xc2, 0x69, 0x94, 0xee, 0x68, 0x87, 0xdb, 0xaf, 0xd8, 0x6e, 0xd6, 0x65, 0x5c, 0x2f,
- 0xc8, 0xb8, 0x28, 0xcd, 0x46, 0x85, 0x34, 0x3f, 0x80, 0xbe, 0x38, 0x4d, 0x9d, 0x84, 0xb8, 0x69,
- 0x2c, 0xcf, 0xb9, 0x02, 0x14, 0xff, 0x7d, 0x9d, 0xaf, 0x56, 0x24, 0x00, 0xbf, 0x5e, 0x63, 0x51,
- 0x2a, 0x6f, 0x1a, 0x2a, 0xbf, 0x0e, 0x03, 0x43, 0xb5, 0xc4, 0x17, 0x1a, 0x2f, 0x82, 0x69, 0x02,
- 0xaf, 0x54, 0x9b, 0x09, 0x6d, 0xeb, 0xa0, 0x92, 0xb0, 0xa0, 0x42, 0x58, 0x57, 0xa1, 0x91, 0xc4,
- 0x21, 0x61, 0x2a, 0xed, 0xab, 0xfe, 0x8f, 0x1d, 0x87, 0xc4, 0x66, 0x33, 0xf4, 0xa4, 0x29, 0x98,
- 0x05, 0xf1, 0x59, 0xd3, 0x75, 0xcd, 0x2e, 0x4f, 0xb0, 0x3b, 0x49, 0xcd, 0x2c, 0xb2, 0x51, 0x4f,
- 0xdc, 0x49, 0xea, 0x40, 0x5a, 0x7b, 0x27, 0xce, 0x3c, 0x21, 0xc1, 0x89, 0x7b, 0x44, 0x46, 0x7d,
- 0x86, 0xa2, 0x41, 0x94, 0x2b, 0x0d, 0x34, 0x57, 0xc2, 0xff, 0x53, 0x83, 0xe6, 0x93, 0xc4, 0xf5,
- 0x09, 0x2d, 0x30, 0x4f, 0xa8, 0xc7, 0x3b, 0xcb, 0x0b, 0x3e, 0x5b, 0xc7, 0xa0, 0x1f, 0x64, 0xda,
- 0x07, 0xb5, 0xca, 0x0f, 0x34, 0x0c, 0x4d, 0x3f, 0x75, 0x43, 0x3f, 0xe7, 0xe9, 0x54, 0xb3, 0x84,
- 0xa6, 0x69, 0x09, 0xf9, 0x7e, 0x56, 0xf5, 0xd0, 0x20, 0x65, 0xdf, 0x5a, 0x2a, 0xfb, 0xab, 0xd0,
- 0x21, 0xfc, 0x16, 0x87, 0x35, 0x29, 0xb8, 0x25, 0xe8, 0xa0, 0xbc, 0x46, 0x59, 0x3b, 0xbf, 0x46,
- 0xb9, 0x0b, 0x5d, 0x8f, 0x1a, 0x06, 0x49, 0xe6, 0x6e, 0x92, 0x71, 0x53, 0x58, 0xde, 0x47, 0x31,
- 0x70, 0xf1, 0x4d, 0xd8, 0x60, 0x52, 0x7f, 0x18, 0xd0, 0x13, 0xea, 0x4c, 0xab, 0xc2, 0x78, 0xab,
- 0xd6, 0xd2, 0x5a, 0xb5, 0xf8, 0x1e, 0x6c, 0x9a, 0xc8, 0xe2, 0x78, 0xbc, 0x06, 0xab, 0x19, 0x85,
- 0x97, 0xaa, 0x14, 0x86, 0x6d, 0x8b, 0x49, 0xfc, 0xe7, 0x16, 0xf4, 0x28, 0x24, 0x88, 0x8e, 0xa6,
- 0x94, 0x5e, 0x4a, 0x05, 0x7e, 0xe2, 0xbe, 0x76, 0x52, 0x12, 0x86, 0xb2, 0x2d, 0x22, 0xc7, 0xec,
- 0xb1, 0x8e, 0xfb, 0xda, 0x99, 0x2d, 0x64, 0x4a, 0x27, 0x87, 0xd4, 0x0c, 0x13, 0x92, 0x92, 0x84,
- 0x26, 0x4d, 0xec, 0x53, 0x1e, 0x48, 0x4c, 0x20, 0x75, 0x90, 0x1c, 0x40, 0x89, 0x88, 0x4b, 0x76,
- 0x1d, 0x86, 0xb7, 0xf9, 0x86, 0xf2, 0x05, 0xbd, 0x49, 0x56, 0xfc, 0x77, 0x16, 0x6c, 0x15, 0x3e,
- 0x12, 0x62, 0xd8, 0x81, 0x55, 0x26, 0x27, 0x29, 0x86, 0x0f, 0x75, 0x31, 0x94, 0xd0, 0x6f, 0xf1,
- 0xa1, 0xe8, 0x32, 0xf3, 0x0f, 0xc7, 0x8f, 0xa1, 0xa3, 0x81, 0x2b, 0x52, 0x97, 0x9b, 0x66, 0x97,
- 0x79, 0xab, 0x9a, 0x85, 0x96, 0xd1, 0x7c, 0x03, 0xdd, 0xa7, 0xd1, 0xec, 0x57, 0x78, 0xe9, 0x81,
- 0x2e, 0xc3, 0x5a, 0x42, 0x44, 0x0f, 0x40, 0x24, 0x32, 0x0a, 0x80, 0x07, 0xd0, 0x13, 0x74, 0xd5,
- 0x65, 0xf8, 0xd3, 0x28, 0x8c, 0xbd, 0x97, 0x6f, 0x7a, 0x19, 0xfe, 0x13, 0x40, 0xfa, 0x07, 0x2a,
- 0xd5, 0x5a, 0x30, 0x68, 0x21, 0xd5, 0x92, 0x40, 0x96, 0x6a, 0xbd, 0x07, 0x1d, 0x1d, 0x85, 0xdf,
- 0x9d, 0x81, 0x42, 0xc0, 0x7f, 0x6a, 0xc1, 0xe0, 0x59, 0x90, 0x1d, 0xfb, 0x89, 0x7b, 0xfa, 0x06,
- 0x4a, 0x2d, 0x3e, 0x4c, 0xa8, 0x9d, 0xf7, 0x30, 0xa1, 0x5e, 0x7c, 0x98, 0xe0, 0x86, 0xa1, 0x68,
- 0xcb, 0xd0, 0x9f, 0x7a, 0x43, 0xb6, 0xc7, 0x1b, 0xb2, 0x77, 0x61, 0xa8, 0x16, 0xf3, 0x76, 0xdd,
- 0xd8, 0x1b, 0xd7, 0x61, 0x2d, 0xf7, 0x77, 0xd4, 0x82, 0xfa, 0xee, 0xd3, 0xdf, 0x19, 0xae, 0xa0,
- 0x36, 0x34, 0x0e, 0x27, 0xd3, 0x29, 0xbf, 0xf8, 0x60, 0x77, 0x21, 0xb5, 0x1b, 0x37, 0xa0, 0x41,
- 0xa3, 0x0b, 0x5a, 0x83, 0xe6, 0x93, 0x9d, 0xaf, 0x26, 0x36, 0x7f, 0xee, 0xf1, 0x35, 0xfb, 0x69,
- 0xa1, 0x2e, 0xb4, 0x1f, 0xed, 0x3f, 0x99, 0xd8, 0xfb, 0x3b, 0xd3, 0x61, 0xed, 0xc6, 0x33, 0x68,
- 0xcb, 0xbc, 0x91, 0x22, 0xed, 0x4c, 0x27, 0xf6, 0x13, 0x8e, 0x3f, 0xb1, 0xed, 0x03, 0x9b, 0xd3,
- 0x7d, 0xb6, 0x63, 0xef, 0x0f, 0x6b, 0xf4, 0xd7, 0xa3, 0xfd, 0x1f, 0x1f, 0x0c, 0xeb, 0xa8, 0x03,
- 0xad, 0x6f, 0x26, 0xf6, 0xee, 0xc1, 0xe1, 0x64, 0xd8, 0xa0, 0xb8, 0xf7, 0x27, 0xbb, 0x4f, 0x1f,
- 0x0c, 0x9b, 0x8c, 0xa3, 0xbd, 0xb3, 0x37, 0x19, 0xae, 0x6e, 0xff, 0x97, 0x05, 0xad, 0xe7, 0x0b,
- 0xff, 0x51, 0x14, 0x64, 0x68, 0x02, 0xa0, 0x1e, 0x3b, 0xa0, 0xfc, 0x19, 0x54, 0xe9, 0xc9, 0xc4,
- 0x78, 0x5c, 0x35, 0x25, 0xcc, 0x6a, 0x05, 0x3d, 0x84, 0x8e, 0x96, 0x93, 0xa3, 0xf1, 0xf2, 0xe2,
- 0x61, 0xfc, 0x4e, 0xe5, 0x5c, 0x4e, 0x69, 0x02, 0xa0, 0x2c, 0x4e, 0x2d, 0xa8, 0x64, 0xb6, 0x6a,
- 0x41, 0x65, 0x03, 0xc5, 0x2b, 0xdb, 0xbf, 0x18, 0x41, 0xfd, 0xf9, 0xc2, 0x47, 0xcf, 0xa1, 0xa3,
- 0xbd, 0x87, 0x44, 0xa5, 0x3b, 0x36, 0xb5, 0x9c, 0xaa, 0x67, 0x93, 0xe3, 0x9f, 0xfd, 0xcb, 0x7f,
- 0xff, 0x45, 0x6d, 0x13, 0x0f, 0x6e, 0xbf, 0xfa, 0xcd, 0xdb, 0xae, 0xef, 0x4b, 0x5b, 0xbc, 0x6b,
- 0xdd, 0x40, 0x36, 0xb4, 0xc4, 0x93, 0x47, 0x74, 0x41, 0xa3, 0xa1, 0x15, 0x78, 0xe3, 0x8b, 0x25,
- 0xb8, 0xa0, 0x7b, 0x81, 0xd1, 0x1d, 0xe2, 0x8e, 0xa0, 0x4b, 0x8f, 0x29, 0x4a, 0x73, 0x17, 0xea,
- 0xbb, 0x6e, 0x84, 0x90, 0xba, 0xef, 0x96, 0x31, 0x61, 0xbc, 0x61, 0xc0, 0x04, 0x1d, 0xc4, 0xe8,
- 0x74, 0x71, 0x8b, 0xd2, 0x99, 0xb9, 0x11, 0xa5, 0xe1, 0x41, 0x57, 0x7f, 0x73, 0x83, 0xd4, 0xcb,
- 0x8f, 0xf2, 0x43, 0xa2, 0xf1, 0xe5, 0xea, 0x49, 0x41, 0x7e, 0xc4, 0xc8, 0x23, 0x3c, 0xa4, 0xe4,
- 0xd9, 0x0b, 0x2d, 0x71, 0x83, 0x44, 0x37, 0x2f, 0x1e, 0xda, 0xa8, 0xcd, 0x9b, 0xef, 0x74, 0xd4,
- 0xe6, 0x8b, 0x2f, 0x72, 0x8c, 0xcd, 0x8b, 0x50, 0x45, 0x17, 0xfe, 0x53, 0xe8, 0x3d, 0x63, 0x4f,
- 0xfb, 0xc4, 0xf3, 0x0e, 0x45, 0xd9, 0x7c, 0x1d, 0xa2, 0x28, 0x17, 0xde, 0x81, 0xe0, 0xcb, 0x8c,
- 0xf2, 0x05, 0xbc, 0x4e, 0x29, 0xf3, 0x67, 0x82, 0x3e, 0x47, 0xa1, 0xf4, 0x7f, 0x1f, 0x7a, 0xc6,
- 0x4b, 0x0e, 0x94, 0x6f, 0xbe, 0xea, 0x89, 0xc8, 0xf8, 0xca, 0x92, 0xd9, 0x2a, 0x5e, 0xbe, 0x40,
- 0x61, 0x6f, 0x3f, 0x28, 0xaf, 0xe7, 0x00, 0xea, 0x45, 0x84, 0xb2, 0xe2, 0xd2, 0x2b, 0x0c, 0x65,
- 0xc5, 0xe5, 0x07, 0x14, 0x78, 0x83, 0xb1, 0xe8, 0xa1, 0x0e, 0xd7, 0x2e, 0xa7, 0x35, 0x85, 0x96,
- 0xb8, 0xfb, 0x57, 0xf2, 0x31, 0x1f, 0x40, 0x28, 0xf9, 0x14, 0x1e, 0x09, 0xe0, 0x21, 0x23, 0x08,
- 0xa8, 0x4d, 0x09, 0x06, 0x94, 0xc4, 0xef, 0x42, 0x47, 0xbb, 0x0e, 0x47, 0xfa, 0x6a, 0x0a, 0x77,
- 0xec, 0xca, 0x51, 0x2a, 0xee, 0xcf, 0xf1, 0x26, 0xa3, 0xdc, 0x47, 0x5d, 0x4a, 0x99, 0x4a, 0x81,
- 0x51, 0x7f, 0x06, 0xa0, 0x6e, 0x6e, 0x95, 0x14, 0x4a, 0x57, 0xd0, 0x4a, 0x0a, 0xe5, 0x8b, 0x5e,
- 0x69, 0xe3, 0x08, 0x28, 0x69, 0x71, 0xbf, 0x71, 0x04, 0x7d, 0xf3, 0x62, 0x1d, 0x5d, 0xd1, 0x29,
- 0x94, 0x6e, 0xe2, 0xc7, 0xef, 0x2e, 0x9b, 0x36, 0x6d, 0x12, 0xf5, 0x99, 0x4d, 0x2a, 0xb2, 0x87,
- 0xb0, 0x96, 0x5f, 0xf9, 0xa2, 0x91, 0x4e, 0x44, 0xbf, 0x19, 0x1e, 0x5f, 0xaa, 0x98, 0x91, 0x95,
- 0x3e, 0xa3, 0xdc, 0x41, 0x6b, 0x94, 0x32, 0xef, 0xfc, 0x4b, 0xa2, 0xec, 0xa5, 0x88, 0x49, 0x54,
- 0xbb, 0x2f, 0x2e, 0x10, 0xd5, 0x6f, 0x8d, 0x0b, 0x44, 0x19, 0x1d, 0x07, 0x3a, 0xda, 0x85, 0xa2,
- 0xd2, 0x64, 0xf9, 0x36, 0x54, 0x69, 0xb2, 0xe2, 0x06, 0x12, 0x5f, 0x64, 0xa4, 0xd7, 0x79, 0xc8,
- 0x8b, 0xe7, 0x24, 0x92, 0x2e, 0xff, 0x7b, 0x00, 0xaa, 0x07, 0xac, 0x94, 0x59, 0xba, 0x1d, 0x50,
- 0xe6, 0x57, 0x68, 0x19, 0xe3, 0x4b, 0x8c, 0xf4, 0x06, 0x66, 0x42, 0x66, 0x7d, 0x79, 0xa6, 0xce,
- 0xbb, 0xd6, 0x8d, 0x3b, 0x16, 0x7a, 0x01, 0x7d, 0x85, 0x7f, 0x78, 0x16, 0x79, 0xe7, 0xb1, 0x18,
- 0x57, 0x4d, 0x89, 0x0d, 0x5c, 0x61, 0x5c, 0x2e, 0x62, 0x64, 0x72, 0x49, 0xcf, 0x22, 0x8f, 0x7a,
- 0xe6, 0x4f, 0xa0, 0xa3, 0xbd, 0xcb, 0x52, 0x72, 0x2a, 0x3f, 0xd6, 0x1a, 0x57, 0x75, 0xa9, 0xcd,
- 0x23, 0x41, 0x14, 0x02, 0xe9, 0xa9, 0x3b, 0xa7, 0xb4, 0x23, 0xe8, 0x9b, 0xcd, 0x58, 0x65, 0x96,
- 0x95, 0x9d, 0x5d, 0x65, 0x96, 0x4b, 0x7a, 0xb8, 0xc6, 0x5e, 0x78, 0x0f, 0x52, 0x3f, 0x82, 0x66,
- 0xf4, 0xd4, 0xcd, 0x7b, 0xb2, 0xfa, 0xa9, 0x5b, 0xec, 0xfb, 0xea, 0xa7, 0x6e, 0xa9, 0x89, 0x6b,
- 0xee, 0x89, 0xb3, 0x91, 0x9a, 0x41, 0x09, 0x0c, 0x0a, 0x0d, 0x53, 0x54, 0x58, 0x75, 0xb1, 0xc7,
- 0x3a, 0x7e, 0x6f, 0xe9, 0xbc, 0xe0, 0xf7, 0x2e, 0xe3, 0x37, 0xc2, 0x1b, 0x8a, 0x9f, 0x1b, 0x86,
- 0x5c, 0x4d, 0xfc, 0x24, 0x00, 0xd5, 0xfe, 0x54, 0x76, 0x50, 0xea, 0xa0, 0x8e, 0xc7, 0x55, 0x53,
- 0x82, 0x89, 0x61, 0x6d, 0x9c, 0x89, 0x3c, 0x66, 0x67, 0xd0, 0xd1, 0x9a, 0x72, 0x4a, 0x6e, 0xe5,
- 0x7e, 0x9f, 0x92, 0x5b, 0x55, 0x17, 0xcf, 0x90, 0x5b, 0x4a, 0xb2, 0x30, 0x3e, 0x62, 0x5d, 0x3f,
- 0xca, 0xe3, 0x1b, 0x68, 0xcb, 0x76, 0x1e, 0xca, 0x3d, 0xa2, 0xd0, 0xf3, 0x1b, 0x8f, 0xca, 0x13,
- 0x05, 0x37, 0x64, 0x01, 0x35, 0x15, 0xb3, 0x94, 0x2e, 0x81, 0x41, 0xa1, 0x25, 0xa8, 0xf4, 0x51,
- 0xdd, 0x2b, 0x1c, 0x9b, 0xcf, 0xcb, 0xf8, 0x65, 0x2d, 0x7e, 0x87, 0x31, 0xd8, 0x42, 0x4c, 0x07,
- 0xa9, 0xfc, 0x90, 0xeb, 0xe0, 0x8e, 0x85, 0x1c, 0x8d, 0x0d, 0xef, 0x21, 0x56, 0xb0, 0x31, 0x9a,
- 0x8b, 0xe3, 0x9e, 0xf1, 0x8f, 0x1d, 0x4b, 0x18, 0xb0, 0xff, 0x9b, 0xa0, 0x0c, 0xe6, 0x85, 0x4e,
- 0xa3, 0x68, 0x59, 0x69, 0x91, 0xbc, 0xb2, 0x11, 0x39, 0xae, 0xba, 0xc4, 0xc1, 0xdf, 0x63, 0xbc,
- 0xde, 0x41, 0x97, 0x0c, 0x5e, 0xd4, 0x2d, 0xe5, 0x1d, 0xd6, 0x1d, 0x0b, 0xcd, 0xa0, 0x6f, 0x92,
- 0x7c, 0x2b, 0x56, 0x05, 0xff, 0x47, 0xa8, 0xc4, 0x8a, 0xf2, 0xf8, 0x43, 0xad, 0xf5, 0x6a, 0x34,
- 0x58, 0xd1, 0xb5, 0x6a, 0x5e, 0x85, 0x06, 0xec, 0x78, 0x53, 0xe7, 0x29, 0x27, 0x31, 0x66, 0x4c,
- 0x2f, 0xa3, 0x71, 0x99, 0xa9, 0x2b, 0x70, 0x58, 0x08, 0xed, 0xea, 0xa5, 0xbf, 0xca, 0xfc, 0x2a,
- 0xba, 0x07, 0x2a, 0xf3, 0xab, 0xea, 0x16, 0x48, 0xe5, 0xf1, 0xcc, 0x8f, 0xb5, 0x06, 0x8e, 0x39,
- 0x06, 0x35, 0xc1, 0xa3, 0x62, 0x8b, 0xe0, 0xf2, 0x92, 0x22, 0xba, 0x90, 0x48, 0x55, 0x96, 0xd8,
- 0xd2, 0x4f, 0xd1, 0xba, 0x64, 0x15, 0x44, 0x47, 0xbc, 0xd2, 0x46, 0x5f, 0x42, 0x93, 0xd5, 0xaf,
- 0x68, 0x53, 0xe5, 0xfa, 0xaa, 0x4c, 0x1e, 0x6f, 0x15, 0xa0, 0x66, 0x2e, 0x82, 0xd9, 0xe1, 0xb8,
- 0x88, 0x44, 0x5a, 0x3c, 0x83, 0x3e, 0xcf, 0x2e, 0x65, 0x95, 0xa7, 0xbc, 0xb2, 0x50, 0x84, 0x2a,
- 0xaf, 0x2c, 0x16, 0x84, 0x66, 0x3c, 0xe6, 0x09, 0xe6, 0xa9, 0xc0, 0xb9, 0x6b, 0xdd, 0x98, 0xad,
- 0xb2, 0xff, 0xc1, 0xfa, 0xe4, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x53, 0xc8, 0xa1, 0x6b, 0xae,
- 0x35, 0x00, 0x00,
+ // 4378 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x4d, 0x8f, 0x1c, 0x49,
+ 0x56, 0x9d, 0xf5, 0xd1, 0x55, 0xf5, 0xea, 0xb3, 0xa3, 0xbb, 0xed, 0x76, 0x8d, 0x3d, 0xe3, 0x0d,
+ 0xec, 0x91, 0xc7, 0x9e, 0xb1, 0x4d, 0xef, 0x2e, 0xb3, 0xe3, 0x5d, 0x8f, 0xa6, 0xbb, 0x5d, 0x6b,
+ 0x7b, 0xa6, 0xa6, 0xdb, 0xca, 0xb6, 0xc7, 0x66, 0x05, 0x9b, 0xca, 0xca, 0x0c, 0x77, 0x27, 0xce,
+ 0xce, 0xac, 0xc9, 0xcc, 0x72, 0xbb, 0xe1, 0x82, 0x56, 0x9c, 0x00, 0x89, 0x03, 0xe2, 0x0c, 0x27,
+ 0x84, 0xb4, 0x88, 0x2b, 0x27, 0x24, 0xce, 0x9c, 0x90, 0x38, 0x80, 0x80, 0x0b, 0x12, 0xbf, 0x00,
+ 0x71, 0x45, 0x42, 0xf1, 0x95, 0x11, 0x91, 0x99, 0xd5, 0x6b, 0xaf, 0x16, 0x2e, 0xad, 0x8a, 0x17,
+ 0x2f, 0xdf, 0x8b, 0x78, 0xdf, 0xf1, 0x22, 0x1a, 0x7a, 0x6f, 0x16, 0x7e, 0x32, 0xf7, 0x6e, 0xcf,
+ 0x93, 0x38, 0x8b, 0xd1, 0x2a, 0x1f, 0x8d, 0xd7, 0xdc, 0x28, 0x8a, 0x33, 0x37, 0x0b, 0xe2, 0x28,
+ 0xe5, 0x53, 0x78, 0x13, 0xd6, 0x77, 0x7c, 0x7f, 0x6f, 0x91, 0x24, 0x24, 0xf2, 0xce, 0x6c, 0x92,
+ 0xce, 0xe3, 0x28, 0x25, 0xf8, 0xa7, 0x30, 0xd8, 0xf1, 0xfd, 0x27, 0x6e, 0x90, 0xd8, 0xe4, 0xdb,
+ 0x05, 0x49, 0x33, 0x74, 0x0d, 0xfa, 0x33, 0x37, 0x25, 0x8e, 0x27, 0x50, 0xb7, 0xac, 0xab, 0xd6,
+ 0x8d, 0x8e, 0x6d, 0x02, 0xd1, 0x87, 0x30, 0xf8, 0x76, 0x11, 0x67, 0x1a, 0x5a, 0x8d, 0xa1, 0x15,
+ 0xa0, 0x78, 0x0d, 0x86, 0x39, 0x7d, 0xc1, 0xf2, 0xe7, 0x35, 0x68, 0xee, 0x84, 0x24, 0xc9, 0xd0,
+ 0x2d, 0x68, 0x64, 0x67, 0x73, 0xc2, 0x38, 0x0c, 0xb6, 0x2f, 0xde, 0x16, 0x7b, 0x61, 0x93, 0xfc,
+ 0xef, 0xd3, 0xb3, 0x39, 0xb1, 0x19, 0x12, 0xda, 0x82, 0xd6, 0x09, 0x49, 0x53, 0xf7, 0x88, 0x08,
+ 0x56, 0x72, 0x88, 0x0e, 0x61, 0xd3, 0x3b, 0x76, 0xa3, 0x88, 0x84, 0xce, 0xcc, 0x0d, 0xdd, 0xc8,
+ 0x23, 0x8e, 0x4b, 0x3f, 0xde, 0xaa, 0x5f, 0xb5, 0x6e, 0x74, 0xb7, 0xdf, 0x93, 0x74, 0xf7, 0x38,
+ 0xd2, 0x2e, 0xc7, 0x61, 0xf4, 0x1f, 0xad, 0xd8, 0xd5, 0xdf, 0xa2, 0x1f, 0x51, 0x31, 0xe8, 0xc4,
+ 0x1a, 0x8c, 0xd8, 0x86, 0x24, 0x56, 0xa0, 0x62, 0x22, 0xe3, 0xfb, 0xd0, 0xc9, 0xd7, 0x8f, 0x2e,
+ 0xc2, 0xfa, 0xf4, 0xe0, 0xb9, 0xb3, 0xf7, 0x68, 0x67, 0x7f, 0x7f, 0x32, 0x75, 0x76, 0x77, 0xa6,
+ 0x3b, 0xfb, 0x7b, 0x93, 0xd1, 0x8a, 0x9c, 0x78, 0x6a, 0xef, 0x3c, 0x78, 0xbc, 0xff, 0x30, 0x9f,
+ 0xb0, 0x76, 0x3b, 0xd0, 0x9a, 0xbb, 0x67, 0x61, 0xec, 0xfa, 0xf8, 0x6f, 0x6b, 0xd0, 0x12, 0xbc,
+ 0xa8, 0x6a, 0xb2, 0x38, 0x73, 0xf3, 0xa5, 0x32, 0xc1, 0x35, 0x6c, 0x13, 0x88, 0x6e, 0xc0, 0xb0,
+ 0xb0, 0x25, 0x26, 0xb0, 0x86, 0x5d, 0x04, 0xa3, 0x1f, 0xc0, 0xc5, 0x39, 0x89, 0xfc, 0x20, 0x3a,
+ 0x72, 0x8a, 0x5f, 0xd4, 0xd9, 0x17, 0xcb, 0xa6, 0xd1, 0x3d, 0xd8, 0x0a, 0x22, 0xd7, 0xcb, 0x82,
+ 0xd7, 0xa4, 0xf4, 0x69, 0x83, 0x7d, 0xba, 0x74, 0x9e, 0x9a, 0xce, 0xa9, 0x1b, 0x86, 0x24, 0xcb,
+ 0xbf, 0x68, 0xb2, 0x2f, 0x0a, 0x50, 0xf4, 0x39, 0x8c, 0x17, 0x91, 0x17, 0x47, 0x2f, 0x83, 0xe4,
+ 0x84, 0xf8, 0x4e, 0xe1, 0x9b, 0x55, 0xf6, 0xcd, 0x39, 0x18, 0xf8, 0x5f, 0x2c, 0xe8, 0xe9, 0x5a,
+ 0x7a, 0x4b, 0xf1, 0x7d, 0x02, 0x8d, 0x34, 0xf0, 0xb9, 0xcc, 0x06, 0xdb, 0x97, 0xaa, 0xf4, 0x7d,
+ 0xfb, 0x30, 0xf0, 0x89, 0xcd, 0xd0, 0xd0, 0x06, 0x34, 0x67, 0xf1, 0x22, 0xf2, 0x99, 0xc4, 0xfa,
+ 0x36, 0x1f, 0x20, 0x0c, 0x3d, 0x3a, 0x5b, 0x90, 0x89, 0x01, 0x43, 0x63, 0x68, 0xe7, 0xce, 0xd3,
+ 0x64, 0x16, 0x9d, 0x8f, 0xf1, 0x15, 0x68, 0x50, 0x1e, 0x08, 0x60, 0xd5, 0x9e, 0x7c, 0x7d, 0xf0,
+ 0x94, 0x5a, 0x4b, 0x07, 0x9a, 0xd3, 0x83, 0xbd, 0x9d, 0xe9, 0xc8, 0xc2, 0xbf, 0x01, 0xb0, 0xeb,
+ 0x46, 0xd2, 0x63, 0x6f, 0xc0, 0x30, 0x8a, 0x7d, 0xe2, 0x04, 0x3e, 0x89, 0xb2, 0xe0, 0x65, 0x40,
+ 0x12, 0xe1, 0xb3, 0x45, 0x30, 0xee, 0x43, 0x97, 0x7d, 0x27, 0x3c, 0xf1, 0x53, 0x68, 0xee, 0x1d,
+ 0xbb, 0x41, 0x44, 0x37, 0xe1, 0xd1, 0x1f, 0xe2, 0x3b, 0x3e, 0xa0, 0x1e, 0x17, 0x91, 0xec, 0x34,
+ 0x4e, 0x5e, 0x49, 0x8f, 0x13, 0x43, 0x3c, 0x87, 0xb6, 0x70, 0xa6, 0x14, 0x5d, 0x80, 0x55, 0xae,
+ 0x68, 0xf6, 0x71, 0xdf, 0x16, 0x23, 0xba, 0x3d, 0x69, 0x02, 0xec, 0xf3, 0xbe, 0x9d, 0x8f, 0x29,
+ 0x65, 0x61, 0x59, 0x42, 0x6c, 0x72, 0x48, 0xa9, 0x79, 0x61, 0x9c, 0x12, 0x9f, 0x89, 0xac, 0x6f,
+ 0x8b, 0x11, 0xfe, 0xe3, 0x1a, 0xac, 0x57, 0xf8, 0xef, 0x5b, 0xea, 0xf4, 0x7b, 0x86, 0x4e, 0xaf,
+ 0x9e, 0x13, 0x10, 0x7e, 0x35, 0xaa, 0xbd, 0x06, 0x7d, 0x69, 0xf5, 0xf3, 0x38, 0x88, 0x32, 0xa1,
+ 0x5f, 0x13, 0x68, 0x18, 0xc0, 0xea, 0xbb, 0x19, 0xc0, 0xdf, 0x59, 0xb0, 0xbe, 0x47, 0x25, 0x23,
+ 0xb6, 0xf0, 0xce, 0xa6, 0x60, 0x30, 0xaf, 0x99, 0xcc, 0xe9, 0xc6, 0x5f, 0xc6, 0x89, 0x88, 0x02,
+ 0x6d, 0x9b, 0x0f, 0xd0, 0x55, 0xe8, 0xfa, 0x24, 0xcd, 0x82, 0x88, 0xe5, 0x15, 0xb6, 0xef, 0x8e,
+ 0xad, 0x83, 0x98, 0x29, 0x9c, 0xc4, 0x0b, 0xb1, 0xdf, 0x86, 0x2d, 0x46, 0x68, 0x04, 0xf5, 0x97,
+ 0x44, 0xba, 0x2c, 0xfd, 0x89, 0xbf, 0x80, 0x0d, 0x73, 0xf9, 0xdc, 0x22, 0xe9, 0xfa, 0xb3, 0xc4,
+ 0x8d, 0x52, 0x6a, 0x27, 0x71, 0xe4, 0x04, 0x7e, 0xba, 0x65, 0x5d, 0xad, 0xd3, 0xf5, 0x17, 0xc0,
+ 0xf8, 0x63, 0x18, 0xec, 0xc5, 0x51, 0x44, 0xbc, 0x4c, 0xee, 0x7d, 0x0c, 0x6d, 0xb6, 0xc9, 0x45,
+ 0x12, 0x88, 0x4d, 0xe7, 0x63, 0x9a, 0x86, 0x72, 0x6c, 0x61, 0xfc, 0x77, 0x60, 0x6d, 0x2f, 0x21,
+ 0x6e, 0x46, 0xf6, 0x63, 0x9f, 0x68, 0x34, 0xe6, 0x6e, 0x9a, 0x9e, 0xc6, 0x89, 0x2f, 0x69, 0xc8,
+ 0x31, 0xfe, 0x33, 0x0b, 0x90, 0xfe, 0x85, 0x58, 0xf2, 0xaf, 0x41, 0x3f, 0x25, 0xc4, 0x77, 0x4e,
+ 0x22, 0x72, 0x12, 0x47, 0x81, 0x27, 0x16, 0xdc, 0xa3, 0xc0, 0xaf, 0x05, 0x0c, 0x7d, 0x04, 0xa3,
+ 0x20, 0x0a, 0xb2, 0xc0, 0x0d, 0x83, 0xdf, 0x25, 0xbe, 0x13, 0x46, 0x7e, 0xba, 0x55, 0xe3, 0x1b,
+ 0xd3, 0xe0, 0xd3, 0xc8, 0x4f, 0xd1, 0x1d, 0x58, 0xd7, 0x51, 0x3d, 0xba, 0xec, 0x37, 0x99, 0x50,
+ 0x05, 0xd2, 0xa6, 0xf6, 0xf8, 0x0c, 0xfe, 0x67, 0x0b, 0xda, 0x32, 0xaf, 0x1b, 0x6a, 0xb5, 0x0a,
+ 0x6a, 0xbd, 0x0f, 0xdd, 0xf4, 0xd4, 0x9d, 0x3b, 0x5e, 0x18, 0x90, 0x28, 0x13, 0xce, 0xa0, 0xb2,
+ 0xa3, 0x40, 0xbb, 0x7d, 0x78, 0xea, 0xce, 0xf7, 0x18, 0x8a, 0xad, 0xe3, 0x73, 0x57, 0x7b, 0x45,
+ 0x22, 0xc7, 0xf5, 0xfd, 0x84, 0xa4, 0x29, 0x5b, 0x52, 0xc7, 0x36, 0x81, 0x34, 0xba, 0xfb, 0xc4,
+ 0x0b, 0x4e, 0xdc, 0xd0, 0x99, 0x87, 0xae, 0x47, 0x52, 0xe1, 0xc8, 0x05, 0x28, 0xc6, 0x00, 0x8a,
+ 0x11, 0x6a, 0x41, 0x7d, 0xba, 0xff, 0x60, 0xb4, 0x82, 0xba, 0xd0, 0xda, 0x3b, 0xd8, 0xdf, 0x9f,
+ 0xbc, 0x78, 0x3a, 0xaa, 0x51, 0x1d, 0x3f, 0x20, 0xf3, 0x38, 0x0d, 0x74, 0x1d, 0x2f, 0xdb, 0x1e,
+ 0xbe, 0x05, 0xc3, 0x1c, 0x5b, 0xe8, 0x66, 0x0b, 0x5a, 0x72, 0xb1, 0x1c, 0x5b, 0x0e, 0xa9, 0x01,
+ 0x3e, 0x08, 0x52, 0x2f, 0x7e, 0x4d, 0x12, 0xaa, 0xcd, 0xf4, 0xdd, 0x63, 0xe9, 0xf7, 0x61, 0xb3,
+ 0x40, 0x41, 0x30, 0xbd, 0x0c, 0x9d, 0x68, 0x71, 0xe2, 0x50, 0xfc, 0x54, 0xc4, 0x44, 0x05, 0xc0,
+ 0x7f, 0x68, 0x01, 0x9a, 0xbc, 0x21, 0xde, 0x22, 0x23, 0x74, 0xff, 0xda, 0xc6, 0xe2, 0xc4, 0x27,
+ 0x89, 0x13, 0xe4, 0x86, 0x27, 0xc7, 0x2c, 0x5a, 0xba, 0x01, 0x9b, 0x12, 0x71, 0x58, 0x0c, 0x69,
+ 0x2c, 0x9a, 0x13, 0x92, 0x38, 0xf3, 0xc5, 0xcc, 0x79, 0x45, 0xce, 0x84, 0x46, 0x0c, 0x18, 0xa5,
+ 0xfc, 0xed, 0xc2, 0x8d, 0xb2, 0x20, 0x3b, 0x13, 0xb1, 0x2a, 0x1f, 0x53, 0x1f, 0x78, 0x48, 0x32,
+ 0x11, 0xff, 0xde, 0x46, 0xc6, 0x7f, 0x65, 0x01, 0xd2, 0xbf, 0x10, 0x5b, 0x7e, 0x00, 0x6d, 0x11,
+ 0xfa, 0xb8, 0xbf, 0x76, 0xb7, 0x6f, 0x48, 0xb3, 0x2a, 0x63, 0xcb, 0x54, 0x9a, 0x4e, 0xa2, 0x2c,
+ 0x39, 0xb3, 0xf3, 0x2f, 0xc7, 0x53, 0xe8, 0x1b, 0x53, 0x34, 0x6e, 0xd0, 0x5d, 0xf1, 0x45, 0xd0,
+ 0x9f, 0xe8, 0x3a, 0x34, 0x5f, 0xbb, 0xe1, 0x82, 0x47, 0xf2, 0xee, 0xf6, 0xb0, 0x90, 0x9d, 0x6d,
+ 0x3e, 0x7b, 0xaf, 0xf6, 0x03, 0x0b, 0x8f, 0x60, 0xf0, 0x90, 0x64, 0x8f, 0xa3, 0x97, 0xb1, 0xd8,
+ 0x18, 0xfe, 0xd7, 0x3a, 0x0c, 0x73, 0x90, 0xb2, 0x90, 0xd7, 0x24, 0x49, 0x69, 0x40, 0x13, 0x16,
+ 0x22, 0x86, 0x54, 0xb6, 0x4c, 0xe5, 0x52, 0xb6, 0x5c, 0xf4, 0x06, 0x0c, 0x21, 0x68, 0x2c, 0x92,
+ 0x80, 0x7a, 0x02, 0x75, 0x65, 0xf6, 0x5b, 0xaa, 0x9f, 0xea, 0x40, 0xda, 0xbe, 0x02, 0xe4, 0xb3,
+ 0x6e, 0x90, 0xa4, 0x2c, 0x4a, 0xca, 0x59, 0x0a, 0x40, 0xb7, 0x60, 0x95, 0x69, 0x3d, 0x65, 0xb1,
+ 0xb2, 0xbb, 0xbd, 0x2e, 0xf7, 0x77, 0xc0, 0xa0, 0x7b, 0x34, 0x9a, 0xda, 0x02, 0x05, 0x6d, 0x43,
+ 0x3d, 0x8c, 0xfc, 0xad, 0x16, 0x93, 0xf7, 0x55, 0x4d, 0xde, 0xfa, 0x06, 0x6f, 0x4f, 0x23, 0x9f,
+ 0xcb, 0x99, 0x22, 0xd3, 0xc8, 0xee, 0x86, 0x81, 0x9b, 0x6e, 0x75, 0x78, 0xa2, 0x67, 0x03, 0x3d,
+ 0xd1, 0x83, 0x91, 0xe8, 0xd1, 0x5d, 0x58, 0x97, 0x25, 0x20, 0x0b, 0x05, 0xc7, 0x6e, 0x7a, 0x4c,
+ 0xd2, 0xad, 0x2e, 0xdb, 0x6f, 0xd5, 0x14, 0xfa, 0x04, 0x5a, 0x32, 0x64, 0xf5, 0xcc, 0x3d, 0x88,
+ 0x78, 0xc5, 0x56, 0x27, 0x71, 0xc6, 0x0f, 0xa1, 0x2d, 0x57, 0xf8, 0x0e, 0xea, 0x9e, 0x46, 0x3e,
+ 0x23, 0xa3, 0xa9, 0x7b, 0x83, 0x19, 0xa6, 0x0c, 0xb8, 0x52, 0xe5, 0x3f, 0x84, 0x75, 0x03, 0x2a,
+ 0xb4, 0x7e, 0xad, 0x3a, 0x66, 0x9b, 0x40, 0xfc, 0x39, 0x23, 0x49, 0x9d, 0x5b, 0xb3, 0xa2, 0x77,
+ 0x88, 0x10, 0x36, 0x63, 0xae, 0xbe, 0xcf, 0x13, 0xc6, 0x30, 0x21, 0xf3, 0x05, 0x3f, 0x9e, 0x1d,
+ 0x7a, 0x71, 0xc2, 0x8b, 0x96, 0x35, 0x1b, 0x14, 0x98, 0xa6, 0xd2, 0x19, 0x4d, 0x8d, 0xdc, 0xe5,
+ 0xdb, 0xb6, 0x18, 0xe1, 0x8b, 0xb0, 0x39, 0x0d, 0xd2, 0x4c, 0x04, 0xeb, 0x20, 0x0f, 0x5c, 0xf8,
+ 0x4b, 0xb8, 0x50, 0x9c, 0x10, 0xfc, 0xee, 0x02, 0x78, 0x39, 0x54, 0xb8, 0xe7, 0xa8, 0x18, 0xf5,
+ 0x6d, 0x0d, 0x07, 0xff, 0x83, 0x05, 0x6b, 0x94, 0x18, 0xb7, 0x3a, 0xb9, 0x71, 0x2d, 0x0c, 0x59,
+ 0x66, 0x18, 0xfa, 0x3e, 0x34, 0xe3, 0xd3, 0x88, 0x24, 0x22, 0xa5, 0x7c, 0x90, 0xab, 0xa9, 0x48,
+ 0xe3, 0xf6, 0x01, 0x45, 0xb3, 0x39, 0x36, 0x35, 0xc6, 0x30, 0x38, 0x09, 0x32, 0x59, 0x5f, 0xb1,
+ 0x01, 0x95, 0x6f, 0x10, 0x79, 0xe1, 0xc2, 0xa7, 0x67, 0xa9, 0xc0, 0x4d, 0x45, 0x06, 0x69, 0xdb,
+ 0x45, 0x30, 0xbe, 0x06, 0x4d, 0x46, 0x0f, 0xb5, 0xa1, 0xb1, 0x7b, 0xf0, 0xf4, 0xd1, 0x68, 0x85,
+ 0xe6, 0x91, 0x83, 0xe7, 0xfb, 0x23, 0x8b, 0x82, 0x9e, 0x4c, 0x26, 0xf6, 0xa8, 0x86, 0xff, 0xdc,
+ 0x02, 0xa4, 0x2f, 0x44, 0x48, 0xe5, 0xf3, 0xdc, 0xd5, 0xb8, 0x44, 0x3e, 0xac, 0x5a, 0xb4, 0xf0,
+ 0x21, 0x3e, 0xe4, 0x6e, 0x24, 0xbe, 0x1a, 0x3f, 0x86, 0xae, 0x06, 0xae, 0xb0, 0xdd, 0x6b, 0xa6,
+ 0xed, 0x0e, 0x4c, 0x57, 0xd6, 0x4d, 0x17, 0xc1, 0x88, 0x32, 0xa5, 0x87, 0xe4, 0x5c, 0x9d, 0x1f,
+ 0x71, 0x0d, 0x08, 0x98, 0x58, 0xf3, 0x06, 0x34, 0x79, 0xe0, 0xe0, 0xe6, 0xca, 0x07, 0xf9, 0xe7,
+ 0x44, 0xc9, 0x19, 0x7f, 0x2a, 0x3e, 0x27, 0xfa, 0x96, 0x31, 0x34, 0x79, 0x54, 0xe2, 0x3b, 0xee,
+ 0xc9, 0x15, 0x51, 0x2c, 0x9b, 0x4f, 0xe1, 0x7f, 0xb7, 0xa0, 0x25, 0xbc, 0x8b, 0xda, 0x60, 0x9a,
+ 0xb9, 0xd9, 0x42, 0x26, 0x4f, 0x31, 0x42, 0x1f, 0x43, 0x5b, 0x14, 0xb2, 0xa9, 0xd8, 0xdc, 0xa8,
+ 0x50, 0x51, 0xa7, 0x76, 0x8e, 0x81, 0xae, 0xc3, 0x2a, 0x3b, 0x4e, 0xf0, 0x28, 0xd9, 0xdd, 0xee,
+ 0x6b, 0xb8, 0x41, 0x64, 0x8b, 0x49, 0x5a, 0x5d, 0xce, 0xc2, 0xd8, 0x7b, 0x75, 0x4c, 0x82, 0xa3,
+ 0xe3, 0x4c, 0x04, 0x4e, 0x1d, 0x94, 0x07, 0xdb, 0xa6, 0x16, 0x6c, 0xb5, 0xf0, 0xbd, 0x6a, 0x86,
+ 0xef, 0x3c, 0xd2, 0xb5, 0xb4, 0x48, 0x87, 0xbf, 0x84, 0x01, 0xf3, 0x47, 0x55, 0x07, 0x17, 0xc3,
+ 0xbc, 0x55, 0x11, 0xe6, 0x73, 0x5a, 0x35, 0x9d, 0xd6, 0x5f, 0x5a, 0x80, 0x0e, 0xe6, 0x24, 0xfa,
+ 0x3f, 0x29, 0xc1, 0x55, 0x29, 0x5d, 0x37, 0x4a, 0xe9, 0xab, 0xd0, 0x9d, 0x2f, 0xd2, 0x63, 0x47,
+ 0x4c, 0xf2, 0x84, 0xae, 0x83, 0x64, 0xb1, 0xdd, 0x54, 0xc5, 0xf6, 0x7d, 0x58, 0x37, 0xd6, 0x29,
+ 0xcc, 0xe1, 0x43, 0x18, 0x98, 0x45, 0xb5, 0x58, 0x67, 0x01, 0x8a, 0xff, 0xbe, 0x06, 0x4d, 0x66,
+ 0xb4, 0xcc, 0xfe, 0x92, 0x40, 0x1c, 0xb2, 0x2c, 0x9b, 0x0f, 0x8c, 0x02, 0xa3, 0x66, 0x16, 0x18,
+ 0x7a, 0xcc, 0xa8, 0x9b, 0x31, 0x63, 0x00, 0xb5, 0xc0, 0x17, 0x87, 0x88, 0x5a, 0xe0, 0xa3, 0x2f,
+ 0xca, 0x62, 0x6b, 0x32, 0xdb, 0xba, 0x20, 0xed, 0xc5, 0x54, 0x5c, 0xa5, 0x38, 0xc3, 0xd8, 0x73,
+ 0x43, 0xca, 0x4c, 0x1c, 0xa7, 0xe4, 0x18, 0xbd, 0x0f, 0xe0, 0xb1, 0xd2, 0xdd, 0x77, 0xdc, 0x8c,
+ 0x99, 0x44, 0xc3, 0xd6, 0x20, 0xe8, 0xba, 0x38, 0x20, 0xb6, 0x59, 0x00, 0x5b, 0x33, 0x7c, 0x55,
+ 0x3b, 0x11, 0x62, 0xe8, 0x05, 0xa9, 0x13, 0x9f, 0x46, 0x0e, 0x8b, 0x02, 0x2c, 0x8b, 0xb6, 0x6d,
+ 0x03, 0x46, 0xcd, 0xf4, 0x38, 0x0e, 0x7d, 0x96, 0x49, 0x1b, 0x36, 0xfb, 0x8d, 0xff, 0xc2, 0x82,
+ 0x1e, 0xa3, 0x65, 0x93, 0x93, 0xf8, 0xb5, 0x1b, 0x1a, 0x32, 0xb3, 0x96, 0xcb, 0xac, 0x50, 0xee,
+ 0xe9, 0x45, 0x62, 0xbd, 0x50, 0x24, 0xea, 0xbb, 0x6f, 0x14, 0x76, 0x5f, 0x5c, 0x76, 0xb3, 0xbc,
+ 0x6c, 0x7c, 0x0c, 0xab, 0x3c, 0x32, 0xa1, 0x4f, 0x00, 0x66, 0x8b, 0x33, 0xc7, 0x88, 0x8e, 0x7d,
+ 0x43, 0x22, 0xb6, 0x86, 0x80, 0xee, 0x40, 0x37, 0x25, 0x61, 0x28, 0xf1, 0x6b, 0x55, 0xf8, 0x3a,
+ 0x06, 0xfe, 0xae, 0x8c, 0x9c, 0xac, 0x9c, 0xa1, 0xf2, 0xa2, 0xa1, 0x47, 0x54, 0xca, 0xec, 0x37,
+ 0xb5, 0xe1, 0xf8, 0x34, 0x12, 0x6d, 0x03, 0xfa, 0x13, 0xff, 0xcc, 0x12, 0x5f, 0x3d, 0x9b, 0xfb,
+ 0x6e, 0x46, 0x68, 0x65, 0xc0, 0xf7, 0x62, 0x31, 0x23, 0x31, 0xf9, 0x3d, 0x5a, 0xb1, 0xf9, 0x2c,
+ 0xfa, 0x11, 0xf4, 0xb9, 0x84, 0x12, 0x2e, 0x78, 0x11, 0xaf, 0x36, 0xcc, 0xe5, 0xf1, 0xb9, 0x47,
+ 0x2b, 0xb6, 0x89, 0xbc, 0x3b, 0x80, 0x1e, 0x07, 0x2c, 0x18, 0x53, 0xfc, 0x6f, 0x35, 0x68, 0xd0,
+ 0x60, 0xb9, 0xfc, 0x5c, 0xf1, 0x56, 0x55, 0xe3, 0x17, 0xd0, 0x0b, 0x23, 0x5f, 0x0e, 0x65, 0x5c,
+ 0xbc, 0xac, 0x87, 0x63, 0x5a, 0xe1, 0x3c, 0x59, 0xcc, 0xbe, 0x22, 0x67, 0x22, 0xed, 0x18, 0x5f,
+ 0x50, 0xfe, 0x41, 0xc4, 0x7b, 0x13, 0x3c, 0x37, 0xca, 0xa1, 0x4a, 0x11, 0x4d, 0x2d, 0x45, 0xd0,
+ 0xa8, 0xf1, 0x66, 0xe1, 0x3b, 0x66, 0xa8, 0xd4, 0x41, 0xe8, 0x63, 0x58, 0x4b, 0x89, 0x17, 0x47,
+ 0x7e, 0xca, 0x4f, 0x9c, 0x5e, 0x46, 0x7c, 0xe6, 0x27, 0x7d, 0xbb, 0x3c, 0x51, 0x5d, 0x46, 0x8e,
+ 0xef, 0xc3, 0xb0, 0xb0, 0xec, 0x8a, 0xb4, 0xb8, 0xa1, 0xa7, 0xc5, 0x8e, 0x9e, 0x06, 0x7f, 0xbf,
+ 0x06, 0x6b, 0x4f, 0xe8, 0xe1, 0x50, 0x28, 0x85, 0x87, 0xd3, 0x5f, 0x65, 0xcc, 0xd1, 0xfd, 0xa7,
+ 0x51, 0xf0, 0x1f, 0x19, 0x01, 0x9a, 0xe7, 0x47, 0x80, 0x9b, 0x30, 0x4a, 0x08, 0x3b, 0xc2, 0x3a,
+ 0x39, 0x29, 0x2e, 0xce, 0x12, 0x9c, 0x16, 0xcf, 0xc1, 0xc9, 0x09, 0xf1, 0x03, 0x37, 0xa3, 0x50,
+ 0xc7, 0xa3, 0x47, 0x94, 0x90, 0x49, 0xb5, 0x6d, 0x57, 0x4d, 0x51, 0x11, 0x20, 0x5d, 0x04, 0x22,
+ 0x52, 0x7f, 0x06, 0xa3, 0x20, 0xca, 0x48, 0x12, 0xb9, 0xa1, 0x73, 0xe2, 0x66, 0xde, 0x31, 0x59,
+ 0xe2, 0x97, 0x25, 0x34, 0xf4, 0x43, 0x18, 0xb0, 0xea, 0x3c, 0x5d, 0x78, 0x1e, 0x49, 0x69, 0x31,
+ 0xc5, 0x1d, 0x34, 0xaf, 0xca, 0xe9, 0x21, 0xf4, 0x90, 0x4f, 0xda, 0x05, 0x54, 0xf4, 0x29, 0xad,
+ 0x54, 0x4f, 0xdc, 0x20, 0xa2, 0x45, 0x3e, 0x77, 0xb7, 0x7a, 0x85, 0xbb, 0xd9, 0x45, 0x2c, 0xf4,
+ 0x19, 0xf4, 0x19, 0xa9, 0x97, 0x6e, 0x10, 0x2e, 0x12, 0x56, 0xc1, 0x95, 0x98, 0xfe, 0x98, 0xcf,
+ 0xd9, 0x26, 0x26, 0xfe, 0x2f, 0x0b, 0x86, 0x4a, 0x04, 0x93, 0xd7, 0x24, 0xa2, 0xd1, 0xb9, 0xc9,
+ 0xf6, 0xb3, 0xd4, 0xd9, 0xd9, 0x2c, 0xfa, 0x0c, 0x7a, 0xfa, 0x06, 0x84, 0xaf, 0x57, 0xed, 0xf4,
+ 0xd1, 0x8a, 0x6d, 0xa0, 0xa2, 0xcf, 0xde, 0x6e, 0xa7, 0x8f, 0x56, 0xaa, 0xf6, 0xda, 0xd3, 0x77,
+ 0x20, 0xee, 0x09, 0xaa, 0xb6, 0x9a, 0x73, 0x15, 0xa8, 0xbb, 0x2d, 0x68, 0x12, 0xba, 0x41, 0x1c,
+ 0x43, 0x57, 0x3b, 0x1d, 0x2d, 0x2d, 0xbc, 0xb4, 0xb0, 0x53, 0x33, 0xc3, 0x8e, 0x56, 0x07, 0x35,
+ 0x4a, 0x75, 0x10, 0x6f, 0xed, 0x36, 0xb5, 0xd6, 0x2e, 0xfe, 0x2e, 0x6c, 0xb2, 0xa8, 0x47, 0xd4,
+ 0x85, 0xd0, 0x2f, 0x3e, 0xfc, 0x6f, 0xc1, 0x85, 0xe2, 0x47, 0xa2, 0x97, 0x36, 0x05, 0xc4, 0x67,
+ 0x0c, 0xd7, 0x3d, 0xaf, 0xa7, 0x71, 0x8e, 0x03, 0xe3, 0x9f, 0x5b, 0xb0, 0x6e, 0x90, 0x13, 0x6e,
+ 0xf0, 0x3e, 0x8c, 0x24, 0x8e, 0x13, 0x47, 0x0e, 0xcb, 0xb2, 0x96, 0xca, 0xb2, 0xe8, 0x36, 0x20,
+ 0xa5, 0x9c, 0x02, 0xf5, 0x8a, 0x19, 0xee, 0xcb, 0x94, 0x8d, 0xaf, 0xb0, 0x79, 0xb5, 0x55, 0x82,
+ 0xeb, 0x41, 0xa5, 0x61, 0x04, 0x15, 0x25, 0x95, 0x9d, 0x30, 0x34, 0x0e, 0x3b, 0x78, 0x01, 0x17,
+ 0x4b, 0x33, 0x62, 0x2b, 0x1f, 0xc3, 0x9a, 0x64, 0x21, 0x45, 0x22, 0xab, 0xfa, 0xf2, 0x04, 0xc5,
+ 0x16, 0xfb, 0xd5, 0xb0, 0x79, 0xfb, 0xb0, 0x3c, 0x81, 0x3f, 0x81, 0x35, 0xce, 0x56, 0xbf, 0xd5,
+ 0x5b, 0x7a, 0x78, 0xa3, 0x07, 0x67, 0x1d, 0x5d, 0x68, 0xf4, 0x0f, 0x6a, 0x14, 0x9c, 0x66, 0x71,
+ 0x62, 0xf4, 0x47, 0xdf, 0xaa, 0xd9, 0xa9, 0x37, 0x51, 0x6b, 0x66, 0x13, 0x15, 0x7d, 0x05, 0x5d,
+ 0x9a, 0xc9, 0x66, 0xae, 0xf7, 0x6a, 0x31, 0x97, 0xa9, 0xef, 0xa6, 0x74, 0x96, 0x32, 0x47, 0x9a,
+ 0x08, 0x77, 0x39, 0x32, 0x4f, 0x84, 0x10, 0xe6, 0x00, 0xf4, 0x1d, 0x76, 0xfd, 0xe9, 0xf8, 0x6e,
+ 0xe6, 0xce, 0xdc, 0x94, 0x37, 0x98, 0x7b, 0x2c, 0xaf, 0x3d, 0x10, 0x20, 0x91, 0x93, 0x74, 0x0a,
+ 0xbf, 0x28, 0x27, 0xf5, 0xf4, 0x9c, 0x44, 0xa8, 0x25, 0x6a, 0x6b, 0x52, 0x3d, 0xdf, 0x84, 0x83,
+ 0x45, 0x2f, 0x57, 0x88, 0x41, 0x02, 0x59, 0x23, 0xf7, 0x23, 0x6a, 0x5e, 0x02, 0x49, 0xb6, 0x44,
+ 0xf8, 0x61, 0x7e, 0x28, 0xe1, 0xb2, 0x85, 0xfb, 0x00, 0xd0, 0x21, 0xc9, 0xa6, 0xf1, 0xd1, 0x94,
+ 0xbc, 0x56, 0x27, 0x89, 0xdb, 0xd0, 0x09, 0xe3, 0x23, 0x27, 0xa4, 0x30, 0x71, 0x47, 0x9a, 0x1f,
+ 0xb4, 0x72, 0x5c, 0x85, 0x82, 0x37, 0x61, 0xdd, 0xa0, 0x22, 0x54, 0xb9, 0x06, 0xc3, 0xc3, 0xe3,
+ 0x45, 0xe6, 0xc7, 0xa7, 0xf2, 0xc6, 0x88, 0x1e, 0x19, 0x15, 0x48, 0xa0, 0x7d, 0x0f, 0x2e, 0x1c,
+ 0x2e, 0x66, 0xa9, 0x97, 0x04, 0x33, 0x62, 0x1e, 0xfc, 0xc7, 0xd0, 0x26, 0x6f, 0x82, 0x34, 0x0b,
+ 0xa2, 0x23, 0xb6, 0x8c, 0xb6, 0x9d, 0x8f, 0xa9, 0xf5, 0xe7, 0x5f, 0xb1, 0x0b, 0x94, 0xdc, 0xfa,
+ 0x3f, 0x80, 0x2b, 0xf9, 0x0c, 0x0d, 0x82, 0xe9, 0x8e, 0xe7, 0x91, 0x79, 0x46, 0x7c, 0x89, 0x70,
+ 0x1f, 0x36, 0x4d, 0x04, 0xed, 0x06, 0x5a, 0x1e, 0xf5, 0x33, 0xf7, 0x95, 0xa8, 0xf1, 0xda, 0xb6,
+ 0x09, 0xc4, 0xff, 0x53, 0x83, 0x1e, 0xfd, 0x4c, 0x92, 0x45, 0x97, 0x4a, 0xe1, 0xa6, 0xc5, 0xc6,
+ 0x8f, 0xcd, 0xe2, 0xb8, 0x56, 0x28, 0x8e, 0xcf, 0x2d, 0x17, 0x96, 0x75, 0x4e, 0x55, 0x59, 0xd2,
+ 0xd4, 0xcb, 0x92, 0x62, 0x3f, 0x76, 0xb5, 0xa2, 0x1f, 0x7b, 0x01, 0x56, 0x13, 0xd6, 0x2c, 0x13,
+ 0x27, 0x53, 0x31, 0xa2, 0xd1, 0x88, 0x9f, 0xe0, 0x9c, 0x84, 0x78, 0x24, 0x78, 0x4d, 0xa5, 0xdd,
+ 0xe6, 0xd1, 0xa8, 0x08, 0xa7, 0x47, 0x37, 0x01, 0x4b, 0xc5, 0x35, 0x5a, 0x87, 0x5f, 0xa1, 0x9a,
+ 0x50, 0x1a, 0x11, 0x65, 0xf4, 0xd6, 0xa8, 0xf2, 0x1e, 0x5f, 0xc5, 0x0c, 0x5d, 0x43, 0x0e, 0x95,
+ 0x94, 0xbb, 0xbc, 0xba, 0x29, 0xc2, 0x69, 0x94, 0xee, 0x6a, 0xc9, 0xed, 0x97, 0xec, 0x60, 0xeb,
+ 0x32, 0xae, 0x17, 0x64, 0x5c, 0x94, 0x66, 0xa3, 0x42, 0x9a, 0x1f, 0xc2, 0x40, 0x64, 0x53, 0x27,
+ 0x21, 0x6e, 0x1a, 0xcb, 0x3c, 0x57, 0x80, 0xe2, 0xbf, 0xa9, 0xf3, 0xd5, 0x8a, 0x02, 0xe0, 0xff,
+ 0xd7, 0x58, 0x94, 0xca, 0x9b, 0x86, 0xca, 0x6f, 0xc0, 0xd0, 0x50, 0x2d, 0xf1, 0x85, 0xc6, 0x8b,
+ 0x60, 0x5a, 0xc0, 0x2b, 0xd5, 0x66, 0x42, 0xdb, 0x3a, 0xa8, 0x24, 0x2c, 0xa8, 0x10, 0xd6, 0x55,
+ 0x68, 0x24, 0x71, 0x48, 0x98, 0x4a, 0x07, 0xaa, 0xff, 0x63, 0xc7, 0x21, 0xb1, 0xd9, 0x0c, 0xcd,
+ 0x34, 0x05, 0xb3, 0x20, 0x3e, 0xeb, 0xe3, 0x76, 0xec, 0xf2, 0x04, 0xbb, 0xe6, 0xd4, 0xcc, 0x22,
+ 0xdb, 0xea, 0x8b, 0x6b, 0x4e, 0x1d, 0x48, 0xcf, 0xde, 0x89, 0x33, 0x4f, 0x48, 0x70, 0xe2, 0x1e,
+ 0x91, 0xad, 0x01, 0x43, 0xd1, 0x20, 0xca, 0x95, 0x86, 0x9a, 0x2b, 0xe1, 0xff, 0xae, 0x41, 0xf3,
+ 0x69, 0xe2, 0xfa, 0x84, 0x1e, 0x30, 0x4f, 0xa8, 0xc7, 0x3b, 0xcb, 0x0f, 0x7c, 0xb6, 0x8e, 0x41,
+ 0x3f, 0xc8, 0xb4, 0x0f, 0x6a, 0x95, 0x1f, 0x68, 0x18, 0x9a, 0x7e, 0xea, 0x86, 0x7e, 0xce, 0xd3,
+ 0xa9, 0x66, 0x09, 0x4d, 0xd3, 0x12, 0xf2, 0xfd, 0xac, 0xea, 0xa1, 0x41, 0xca, 0xbe, 0xb5, 0x54,
+ 0xf6, 0x57, 0xa1, 0x4b, 0xf8, 0xc5, 0x10, 0x6b, 0x52, 0x70, 0x4b, 0xd0, 0x41, 0xf9, 0x19, 0xa5,
+ 0x73, 0xfe, 0x19, 0xe5, 0x1e, 0xf4, 0x3c, 0x6a, 0x18, 0x24, 0x99, 0xbb, 0x49, 0xc6, 0x4d, 0x61,
+ 0x79, 0x1f, 0xc5, 0xc0, 0xc5, 0xb7, 0x60, 0x9d, 0x49, 0xfd, 0x51, 0x40, 0x33, 0xd4, 0x99, 0x76,
+ 0x0a, 0xe3, 0xad, 0x5a, 0x4b, 0x6b, 0xd5, 0xe2, 0xfb, 0xb0, 0x61, 0x22, 0x8b, 0xf4, 0x78, 0x1d,
+ 0x56, 0x33, 0x0a, 0x2f, 0x9d, 0x52, 0x18, 0xb6, 0x2d, 0x26, 0xf1, 0x9f, 0x58, 0xd0, 0xa7, 0x90,
+ 0x20, 0x3a, 0x9a, 0x52, 0x7a, 0x29, 0x15, 0xf8, 0x89, 0xfb, 0xc6, 0x49, 0x49, 0x18, 0xca, 0xb6,
+ 0x88, 0x1c, 0xb3, 0xf7, 0x3f, 0xee, 0x1b, 0x67, 0xb6, 0x90, 0x25, 0x9d, 0x1c, 0x52, 0x33, 0x4c,
+ 0x48, 0x4a, 0x12, 0x5a, 0x34, 0xb1, 0x4f, 0x79, 0x20, 0x31, 0x81, 0xd4, 0x41, 0x72, 0x00, 0x25,
+ 0x22, 0xee, 0xed, 0x75, 0x18, 0xde, 0xe6, 0x1b, 0xca, 0x17, 0xf4, 0x36, 0x55, 0xf1, 0x5f, 0x5b,
+ 0xb0, 0x59, 0xf8, 0x48, 0x88, 0x61, 0x07, 0x56, 0x99, 0x9c, 0xa4, 0x18, 0x3e, 0xd2, 0xc5, 0x50,
+ 0x42, 0xbf, 0xcd, 0x87, 0xa2, 0xcb, 0xcc, 0x3f, 0x1c, 0x3f, 0x81, 0xae, 0x06, 0xae, 0x28, 0x5d,
+ 0x6e, 0x99, 0x5d, 0xe6, 0xcd, 0x6a, 0x16, 0x5a, 0x45, 0xf3, 0x0d, 0xf4, 0x9e, 0x45, 0xb3, 0x5f,
+ 0xe2, 0xf1, 0x08, 0xba, 0x0c, 0x9d, 0x84, 0x88, 0x1e, 0x80, 0x28, 0x64, 0x14, 0x00, 0x0f, 0xa1,
+ 0x2f, 0xe8, 0xaa, 0xfb, 0xf5, 0x67, 0x51, 0x18, 0x7b, 0xaf, 0xde, 0xf6, 0x7e, 0xfd, 0x27, 0x80,
+ 0xf4, 0x0f, 0x54, 0xa9, 0xb5, 0x60, 0xd0, 0x42, 0xa9, 0x25, 0x81, 0xac, 0xd4, 0xfa, 0x00, 0xba,
+ 0x3a, 0x0a, 0xbf, 0x8e, 0x03, 0x85, 0x80, 0xff, 0xc8, 0x82, 0xe1, 0xf3, 0x20, 0x3b, 0xf6, 0x13,
+ 0xf7, 0xf4, 0x2d, 0x94, 0x5a, 0x7c, 0xeb, 0x50, 0x3b, 0xef, 0xad, 0x43, 0xbd, 0xf8, 0xd6, 0xc1,
+ 0x0d, 0x43, 0xd1, 0x96, 0xa1, 0x3f, 0xf5, 0x86, 0x6c, 0x9f, 0x37, 0x64, 0xef, 0xc1, 0x48, 0x2d,
+ 0xe6, 0xdd, 0xba, 0xb1, 0x37, 0x6f, 0x40, 0x27, 0xf7, 0x77, 0xd4, 0x82, 0xfa, 0xee, 0xb3, 0xdf,
+ 0x1c, 0xad, 0xa0, 0x36, 0x34, 0x0e, 0x27, 0xd3, 0x29, 0xbf, 0xf8, 0x60, 0x77, 0x21, 0xb5, 0x9b,
+ 0x37, 0xa1, 0x41, 0xa3, 0x0b, 0xea, 0x40, 0xf3, 0xe9, 0xce, 0x57, 0x13, 0x9b, 0xbf, 0x20, 0xf9,
+ 0x9a, 0xfd, 0xb4, 0x50, 0x0f, 0xda, 0x8f, 0xf7, 0x9f, 0x4e, 0xec, 0xfd, 0x9d, 0xe9, 0xa8, 0x76,
+ 0xf3, 0x39, 0xb4, 0x65, 0xdd, 0x48, 0x91, 0x76, 0xa6, 0x13, 0xfb, 0x29, 0xc7, 0x9f, 0xd8, 0xf6,
+ 0x81, 0xcd, 0xe9, 0x3e, 0xdf, 0xb1, 0xf7, 0x47, 0x35, 0xfa, 0xeb, 0xf1, 0xfe, 0x8f, 0x0f, 0x46,
+ 0x75, 0xd4, 0x85, 0xd6, 0x37, 0x13, 0x7b, 0xf7, 0xe0, 0x70, 0x32, 0x6a, 0x50, 0xdc, 0x07, 0x93,
+ 0xdd, 0x67, 0x0f, 0x47, 0x4d, 0xc6, 0xd1, 0xde, 0xd9, 0x9b, 0x8c, 0x56, 0xb7, 0xff, 0xc3, 0x82,
+ 0xd6, 0x8b, 0x85, 0xff, 0x38, 0x0a, 0x32, 0x34, 0x01, 0x50, 0xef, 0x27, 0x50, 0xfe, 0xb2, 0xaa,
+ 0xf4, 0x0a, 0x63, 0x3c, 0xae, 0x9a, 0x12, 0x66, 0xb5, 0x82, 0x1e, 0x41, 0x57, 0xab, 0xc9, 0xd1,
+ 0x78, 0xf9, 0xe1, 0x61, 0xfc, 0x5e, 0xe5, 0x5c, 0x4e, 0x69, 0x02, 0xa0, 0x2c, 0x4e, 0x2d, 0xa8,
+ 0x64, 0xb6, 0x6a, 0x41, 0x65, 0x03, 0xc5, 0x2b, 0xdb, 0xff, 0x78, 0x09, 0xea, 0x2f, 0x16, 0x3e,
+ 0x7a, 0x01, 0x5d, 0xed, 0x89, 0x25, 0x2a, 0xdd, 0xb1, 0xa9, 0xe5, 0x54, 0xbd, 0xc4, 0x1c, 0xff,
+ 0xec, 0x9f, 0xfe, 0xf3, 0x4f, 0x6b, 0x1b, 0x78, 0x78, 0xe7, 0xf5, 0xaf, 0xdf, 0x71, 0x7d, 0x5f,
+ 0xda, 0xe2, 0x3d, 0xeb, 0x26, 0xb2, 0xa1, 0x25, 0x5e, 0x51, 0xa2, 0x0b, 0x1a, 0x0d, 0xed, 0x80,
+ 0x37, 0xbe, 0x58, 0x82, 0x0b, 0xba, 0x17, 0x18, 0xdd, 0x11, 0xee, 0x0a, 0xba, 0x34, 0x4d, 0x51,
+ 0x9a, 0xbb, 0x50, 0xdf, 0x75, 0x23, 0x84, 0xd4, 0x15, 0xba, 0x8c, 0x09, 0xe3, 0x75, 0x03, 0x26,
+ 0xe8, 0x20, 0x46, 0xa7, 0x87, 0x5b, 0x94, 0xce, 0xcc, 0x8d, 0x28, 0x0d, 0x0f, 0x7a, 0xfa, 0x33,
+ 0x1e, 0xa4, 0x1e, 0x93, 0x94, 0xdf, 0x26, 0x8d, 0x2f, 0x57, 0x4f, 0x0a, 0xf2, 0x5b, 0x8c, 0x3c,
+ 0xc2, 0x23, 0x4a, 0x9e, 0x3d, 0xfa, 0x12, 0x37, 0x48, 0x74, 0xf3, 0xe2, 0xed, 0x8e, 0xda, 0xbc,
+ 0xf9, 0xf4, 0x47, 0x6d, 0xbe, 0xf8, 0xc8, 0xc7, 0xd8, 0xbc, 0x08, 0x55, 0x74, 0xe1, 0x3f, 0x85,
+ 0xfe, 0x73, 0xf6, 0x5a, 0x50, 0xbc, 0x18, 0x51, 0x94, 0xcd, 0x07, 0x27, 0x8a, 0x72, 0xe1, 0x69,
+ 0x09, 0xbe, 0xcc, 0x28, 0x5f, 0xc0, 0x6b, 0x94, 0x32, 0x7f, 0x79, 0xe8, 0x73, 0x14, 0x4a, 0xff,
+ 0x77, 0xa0, 0x6f, 0x3c, 0x0e, 0x41, 0xf9, 0xe6, 0xab, 0x5e, 0x9d, 0x8c, 0xaf, 0x2c, 0x99, 0xad,
+ 0xe2, 0xe5, 0x0b, 0x14, 0xf6, 0x9c, 0x84, 0xf2, 0x7a, 0x01, 0xa0, 0x1e, 0x59, 0x28, 0x2b, 0x2e,
+ 0x3d, 0xec, 0x50, 0x56, 0x5c, 0x7e, 0x93, 0x81, 0xd7, 0x19, 0x8b, 0x3e, 0xea, 0x72, 0xed, 0x72,
+ 0x5a, 0x53, 0x68, 0x89, 0xe7, 0x04, 0x4a, 0x3e, 0xe6, 0x9b, 0x0a, 0x25, 0x9f, 0xc2, 0xbb, 0x03,
+ 0x3c, 0x62, 0x04, 0x01, 0xb5, 0x29, 0xc1, 0x80, 0x92, 0xf8, 0x2d, 0xe8, 0x6a, 0x77, 0xf1, 0x48,
+ 0x5f, 0x4d, 0xe1, 0xda, 0x5e, 0x39, 0x4a, 0xc5, 0xe5, 0x3d, 0xde, 0x60, 0x94, 0x07, 0xa8, 0x47,
+ 0x29, 0xcb, 0x46, 0x84, 0xa0, 0x2e, 0x2f, 0xdb, 0x0d, 0xea, 0x85, 0x1b, 0x7c, 0x83, 0x7a, 0xf1,
+ 0x76, 0xde, 0xa4, 0x4e, 0x65, 0xcc, 0xd6, 0xfe, 0x1c, 0x40, 0xdd, 0x0b, 0x2b, 0x19, 0x97, 0x2e,
+ 0xb8, 0x95, 0x8c, 0xcb, 0xd7, 0xc8, 0xd2, 0x83, 0x10, 0x50, 0xd2, 0xe2, 0xf6, 0xe4, 0x08, 0x06,
+ 0xe6, 0xb5, 0x3d, 0xba, 0xa2, 0x53, 0x28, 0xdd, 0xf3, 0x8f, 0xdf, 0x5f, 0x36, 0x6d, 0x5a, 0x3c,
+ 0x1a, 0x30, 0x8b, 0x57, 0x64, 0x0f, 0xa1, 0x93, 0x5f, 0x28, 0xa3, 0x2d, 0x9d, 0x88, 0x7e, 0xef,
+ 0x3c, 0xbe, 0x54, 0x31, 0x23, 0xfb, 0x08, 0x8c, 0x72, 0x17, 0x75, 0x28, 0x65, 0x7e, 0xaf, 0x20,
+ 0x89, 0xb2, 0xa7, 0x2d, 0x26, 0x51, 0xed, 0x36, 0xba, 0x40, 0x54, 0xbf, 0x93, 0x2e, 0x10, 0x65,
+ 0x74, 0x1c, 0xe8, 0x6a, 0xd7, 0x95, 0x4a, 0x93, 0xe5, 0xbb, 0x56, 0xa5, 0xc9, 0x8a, 0xfb, 0x4d,
+ 0x7c, 0x91, 0x91, 0x5e, 0xe3, 0x01, 0x35, 0x9e, 0x93, 0x48, 0x06, 0x94, 0xdf, 0x06, 0x50, 0x1d,
+ 0x66, 0xa5, 0xcc, 0xd2, 0xdd, 0x83, 0x32, 0xee, 0x42, 0x43, 0x1a, 0x5f, 0x62, 0xa4, 0xd7, 0x31,
+ 0x13, 0x32, 0xeb, 0xfa, 0x33, 0x75, 0xde, 0xb3, 0x6e, 0xde, 0xb5, 0xd0, 0x4b, 0x18, 0x28, 0xfc,
+ 0xc3, 0xb3, 0xc8, 0x3b, 0x8f, 0xc5, 0xb8, 0x6a, 0x4a, 0x6c, 0xe0, 0x0a, 0xe3, 0x72, 0x11, 0x23,
+ 0x93, 0x4b, 0x7a, 0x16, 0x79, 0xd4, 0xef, 0x7f, 0x02, 0x5d, 0xed, 0x21, 0x99, 0x92, 0x53, 0xf9,
+ 0x75, 0xd9, 0xb8, 0xaa, 0x07, 0x6e, 0x26, 0x1c, 0x71, 0xcc, 0x48, 0x4f, 0xdd, 0x39, 0xa5, 0x1d,
+ 0xc1, 0xc0, 0x6c, 0xf5, 0x2a, 0xb3, 0xac, 0xec, 0x1b, 0x2b, 0xb3, 0x5c, 0xd2, 0x21, 0x36, 0xf6,
+ 0xc2, 0x3b, 0x9c, 0x7a, 0x82, 0x9b, 0xd1, 0x9c, 0x9e, 0x77, 0x7c, 0xf5, 0x9c, 0x5e, 0xec, 0x2a,
+ 0xeb, 0x39, 0xbd, 0xd4, 0x22, 0x36, 0xf7, 0xc4, 0xd9, 0x48, 0xcd, 0xa0, 0x04, 0x86, 0x85, 0x76,
+ 0x2c, 0x2a, 0xac, 0xba, 0xd8, 0xc1, 0x1d, 0x7f, 0xb0, 0x74, 0x5e, 0xf0, 0x7b, 0x9f, 0xf1, 0xdb,
+ 0xc2, 0xeb, 0x8a, 0x9f, 0x1b, 0x86, 0x5c, 0x4d, 0x3c, 0xcf, 0x80, 0x6a, 0xae, 0x2a, 0x3b, 0x28,
+ 0xf5, 0x67, 0xc7, 0xe3, 0xaa, 0x29, 0xc1, 0xc4, 0xb0, 0x36, 0xce, 0x44, 0x26, 0xf1, 0x19, 0x74,
+ 0xb5, 0x96, 0x9f, 0x92, 0x5b, 0xb9, 0x9b, 0xa8, 0xe4, 0x56, 0xd5, 0x23, 0x34, 0xe4, 0x96, 0x92,
+ 0x2c, 0x8c, 0x8f, 0x58, 0x4f, 0x91, 0xf2, 0xf8, 0x06, 0xda, 0xb2, 0x59, 0x88, 0x72, 0x8f, 0x28,
+ 0x74, 0x14, 0xc7, 0x5b, 0xe5, 0x89, 0x82, 0x1b, 0xb2, 0x80, 0x9a, 0x8a, 0x59, 0x4a, 0x97, 0xc0,
+ 0xb0, 0xd0, 0x70, 0x54, 0xfa, 0xa8, 0xee, 0x44, 0x8e, 0xcd, 0xf7, 0x70, 0xfc, 0x2a, 0x18, 0xbf,
+ 0xc7, 0x18, 0x6c, 0x22, 0xa6, 0x83, 0x54, 0x7e, 0xc8, 0x75, 0x70, 0xd7, 0x42, 0x8e, 0xc6, 0x86,
+ 0x77, 0x28, 0x2b, 0xd8, 0x18, 0xad, 0xcb, 0x71, 0xdf, 0xf8, 0x4f, 0x94, 0x25, 0x0c, 0xd8, 0x3f,
+ 0x7a, 0x50, 0x06, 0xf3, 0x42, 0x1f, 0x53, 0x34, 0xc4, 0xb4, 0x48, 0x5e, 0xd9, 0xe6, 0x1c, 0x57,
+ 0x5d, 0x11, 0xe1, 0xef, 0x30, 0x5e, 0xef, 0xa1, 0x4b, 0x06, 0x2f, 0xea, 0x96, 0xf2, 0x86, 0xec,
+ 0xae, 0x85, 0x66, 0x30, 0x30, 0x49, 0xbe, 0x13, 0xab, 0x82, 0xff, 0x23, 0x54, 0x62, 0x45, 0x79,
+ 0xfc, 0x9e, 0xd6, 0xd8, 0x35, 0xda, 0xb7, 0xe8, 0x7a, 0x35, 0xaf, 0x42, 0x7b, 0x77, 0xbc, 0xa1,
+ 0xf3, 0x94, 0x93, 0x18, 0x33, 0xa6, 0x97, 0xd1, 0xb8, 0xcc, 0xd4, 0x15, 0x38, 0x2c, 0x84, 0xf6,
+ 0xf4, 0xc6, 0x82, 0xaa, 0x2b, 0x2b, 0x7a, 0x13, 0xaa, 0xae, 0xac, 0xea, 0x45, 0x48, 0xe5, 0xf1,
+ 0xba, 0x92, 0x35, 0x1e, 0x8e, 0x39, 0x06, 0x35, 0xc1, 0xa3, 0x62, 0x03, 0xe2, 0xf2, 0x92, 0x23,
+ 0x7a, 0xa1, 0x4c, 0xab, 0x3c, 0xc0, 0x4b, 0x3f, 0x45, 0x6b, 0x92, 0x55, 0x10, 0x1d, 0xf1, 0x73,
+ 0x3c, 0xfa, 0x12, 0x9a, 0xec, 0x74, 0x8c, 0x36, 0xd4, 0x49, 0x42, 0x1d, 0xc2, 0xc7, 0x9b, 0x05,
+ 0xa8, 0x59, 0x8b, 0x60, 0x96, 0x1c, 0x17, 0x91, 0x28, 0xba, 0x67, 0x30, 0xe0, 0xb5, 0xab, 0x3c,
+ 0x43, 0x2a, 0xaf, 0x2c, 0x1c, 0x71, 0x95, 0x57, 0x16, 0x8f, 0x9b, 0x66, 0x3c, 0xe6, 0xe5, 0xeb,
+ 0xa9, 0xc0, 0xb9, 0x67, 0xdd, 0x9c, 0xad, 0xb2, 0x7f, 0x1a, 0xfb, 0xee, 0xff, 0x06, 0x00, 0x00,
+ 0xff, 0xff, 0x49, 0x5f, 0x40, 0x92, 0x5f, 0x36, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -5492,6 +5566,9 @@ type XudClient interface {
// Gets general information about this node.
// shell: xucli getinfo
GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grpc.CallOption) (*GetInfoResponse, error)
+ // Gets the master seed mnemonic .
+ // shell: xucli getnemonic
+ GetMnemonic(ctx context.Context, in *GetMnemonicRequest, opts ...grpc.CallOption) (*GetMnemonicResponse, error)
// Gets general information about a node.
// shell: xucli getnodeinfo
GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*GetNodeInfoResponse, error)
@@ -5674,6 +5751,15 @@ func (c *xudClient) GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grp
return out, nil
}
+func (c *xudClient) GetMnemonic(ctx context.Context, in *GetMnemonicRequest, opts ...grpc.CallOption) (*GetMnemonicResponse, error) {
+ out := new(GetMnemonicResponse)
+ err := c.cc.Invoke(ctx, "/xudrpc.Xud/GetMnemonic", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *xudClient) GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*GetNodeInfoResponse, error) {
out := new(GetNodeInfoResponse)
err := c.cc.Invoke(ctx, "/xudrpc.Xud/GetNodeInfo", in, out, opts...)
@@ -6062,6 +6148,9 @@ type XudServer interface {
// Gets general information about this node.
// shell: xucli getinfo
GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error)
+ // Gets the master seed mnemonic .
+ // shell: xucli getnemonic
+ GetMnemonic(context.Context, *GetMnemonicRequest) (*GetMnemonicResponse, error)
// Gets general information about a node.
// shell: xucli getnodeinfo
GetNodeInfo(context.Context, *GetNodeInfoRequest) (*GetNodeInfoResponse, error)
@@ -6321,6 +6410,24 @@ func _Xud_GetInfo_Handler(srv interface{}, ctx context.Context, dec func(interfa
return interceptor(ctx, in, info, handler)
}
+func _Xud_GetMnemonic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetMnemonicRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(XudServer).GetMnemonic(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/xudrpc.Xud/GetMnemonic",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(XudServer).GetMnemonic(ctx, req.(*GetMnemonicRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _Xud_GetNodeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetNodeInfoRequest)
if err := dec(in); err != nil {
@@ -6811,6 +6918,10 @@ var _Xud_serviceDesc = grpc.ServiceDesc{
MethodName: "GetInfo",
Handler: _Xud_GetInfo_Handler,
},
+ {
+ MethodName: "GetMnemonic",
+ Handler: _Xud_GetMnemonic_Handler,
+ },
{
MethodName: "GetNodeInfo",
Handler: _Xud_GetNodeInfo_Handler,