From a3821f6c4b3595fe3124ceaf1c9b1aaae4fc11ea Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Wed, 16 Sep 2020 19:44:55 -0400 Subject: [PATCH] Updated dist files. --- admin/cmds/spell-check.js | 8 +- packages/tests/lib.esm/test-providers.js | 546 +++++++------- packages/tests/lib.esm/test-providers.js.map | 2 +- packages/tests/lib/test-providers.js | 741 +++++++++++-------- packages/tests/lib/test-providers.js.map | 2 +- packages/tests/package.json | 2 +- 6 files changed, 720 insertions(+), 581 deletions(-) diff --git a/admin/cmds/spell-check.js b/admin/cmds/spell-check.js index d0613003a..266aee18e 100644 --- a/admin/cmds/spell-check.js +++ b/admin/cmds/spell-check.js @@ -12,7 +12,7 @@ const Words = fs.readFileSync("/usr/share/dict/words").toString().split("\n").re // Words missing from the dictionary accessing addresses aligned autofill called cancelled changed censored clamping compiled computed configured consumed creating decoded decoding -decrypt decrypted decrypting deployed deploying deprecated detected +decreased decrypt decrypted decrypting deployed deploying deprecated detected discontinued earliest email enabled encoded encoding encrypt encrypted encrypting entries euro exceeded existing expected expired failed fetches formatted formatting funding generated @@ -47,9 +47,9 @@ bytecode callback calldata checksum ciphertext cli codepoint commify config contenthash ctr ctrl debug dd dklen eexist encseed eof ethaddr ethseed ethers eval exec filename func gz hid http https hw iv info init ipc json kdf kdfparams labelhash lang lib mm multihash nfc -nfkc nfd nfkd nodehash notok nullish oob opcode pbkdf pc plugin pragma pre prf -repl rpc sighash topichash solc stdin stdout subclasses subnode -timeout todo txt ufixed utc utf util url uuid vm vs websocket +nfkc nfd nfkd nodehash notok nowait nullish oob opcode pbkdf pc plugin +pragma pre prf repl rpc sighash topichash solc stdin stdout subclasses +subnode timeout todo txt ufixed utc utf util url uuid vm vs websocket wikipedia wx xe xpriv xpub xx yyyy zlib // AbiV2 diff --git a/packages/tests/lib.esm/test-providers.js b/packages/tests/lib.esm/test-providers.js index d2025ad50..f7e0e6b40 100644 --- a/packages/tests/lib.esm/test-providers.js +++ b/packages/tests/lib.esm/test-providers.js @@ -65,7 +65,7 @@ const blockchainData = { s: "0x269c3e5b3558267ad91b0a887d51f9f10098771c67b82ea6cb74f29638754f54", v: 38, creates: null, - raw: "0xf8d2808504a817c8008303d090946fc21092da55b392b045ed78f4732bff3c580e2c880186cc6acd4b0000b864f2c298be000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000067269636d6f6f000000000000000000000000000000000000000000000000000026a01e5605197a03e3f0a168f14749168dfeefc44c9228312dacbffdcbbb13263265a0269c3e5b3558267ad91b0a887d51f9f10098771c67b82ea6cb74f29638754f54", + //raw: "0xf8d2808504a817c8008303d090946fc21092da55b392b045ed78f4732bff3c580e2c880186cc6acd4b0000b864f2c298be000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000067269636d6f6f000000000000000000000000000000000000000000000000000026a01e5605197a03e3f0a168f14749168dfeefc44c9228312dacbffdcbbb13263265a0269c3e5b3558267ad91b0a887d51f9f10098771c67b82ea6cb74f29638754f54", chainId: 1 } ], @@ -364,6 +364,8 @@ function equals(name, actual, expected) { if (actual == null) { assert.ok(false, name + " - actual big number null"); } + expected = ethers.BigNumber.from(expected); + actual = ethers.BigNumber.from(actual); assert.ok(expected.eq(actual), name + " matches"); } else if (Array.isArray(expected)) { @@ -398,265 +400,315 @@ function equals(name, actual, expected) { } function waiter(duration) { return new Promise((resolve) => { - setTimeout(resolve, duration); + const timer = setTimeout(resolve, duration); + if (timer.unref) { + timer.unref(); + } }); } -function testProvider(providerName, networkName) { - // Delay (ms) after each test case to prevent the backends from throttling - const delay = 1000; - describe(("Read-Only " + providerName + " (" + networkName + ")"), function () { - this.retries(3); - // Get the Provider based on the name of the provider we are testing and the network - let provider = null; - if (networkName === "default") { - if (providerName === "getDefaultProvider") { - provider = ethers.getDefaultProvider(); - } - else { - provider = new (ethers.providers)[providerName](); +const allNetworks = ["default", "homestead", "ropsten", "rinkeby", "kovan", "goerli"]; +const providerFunctions = [ + { + name: "getDefaultProvider", + networks: allNetworks, + create: (network) => { + if (network == "default") { + return ethers.getDefaultProvider(); } + return ethers.getDefaultProvider(network); } - else { - if (providerName === "getDefaultProvider") { - provider = ethers.getDefaultProvider(networkName); - } - else { - provider = new (ethers.providers)[providerName](networkName); + }, + { + name: "AlchemyProvider", + networks: allNetworks, + create: (network) => { + if (network == "default") { + return new ethers.providers.AlchemyProvider(); } + return new ethers.providers.AlchemyProvider(network); } - const tests = blockchainData[networkName]; - // And address test case can have any of the following: - // - balance - // - code - // - storage - // - ENS name - tests.addresses.forEach((test) => { - if (test.balance) { - it(`fetches address balance: ${test.address}`, function () { - // Note: These tests could be fiddled with if someone sends ether - // to our address; we just have to live with jerks sending us - // money. *smile emoji* - this.timeout(60000); - return provider.getBalance(test.address).then((balance) => { - equals("Balance", test.balance, balance); - return waiter(delay); - }); - }); + }, + { + name: "CloudflareProvider", + networks: ["homestead"], + create: (network) => { + return new ethers.providers.AlchemyProvider(network); + } + }, + { + name: "InfuraProvider", + networks: allNetworks, + create: (network) => { + if (network == "default") { + return new ethers.providers.InfuraProvider(); } - if (test.code) { - it(`fetches address code: ${test.address}`, function () { - this.timeout(60000); - return provider.getCode(test.address).then((code) => { - equals("Code", test.code, code); - return waiter(delay); - }); - }); - } - if (test.storage) { - Object.keys(test.storage).forEach((position) => { - it(`fetches storage: ${test.address}:${position}`, function () { - this.timeout(60000); - return provider.getStorageAt(test.address, bnify(position)).then((value) => { - equals("Storage", test.storage[position], value); - return waiter(delay); - }); - }); - }); - } - if (test.name) { - it(`fetches the ENS name: ${test.name}`, function () { - this.timeout(60000); - return provider.resolveName(test.name).then((address) => { - equals("ENS Name", test.address, address); - return waiter(delay); - }); - }); + return new ethers.providers.InfuraProvider(network); + } + }, + { + name: "EtherscanProvider", + networks: allNetworks, + create: (network) => { + if (network == "default") { + return new ethers.providers.EtherscanProvider(); } + return new ethers.providers.EtherscanProvider(network); + } + }, + { + name: "NodesmithProvider", + networks: [], + create: (network) => { + throw new Error("not tested"); + } + }, + { + name: "Web3Provider", + networks: [], + create: (network) => { + throw new Error("not tested"); + } + } +]; +// This wallet can be funded and used for various test cases +const fundWallet = ethers.Wallet.createRandom(); +const testFunctions = []; +Object.keys(blockchainData).forEach((network) => { + function addSimpleTest(name, func, expected) { + testFunctions.push({ + name: name, + networks: [network], + execute: (provider) => __awaiter(this, void 0, void 0, function* () { + const value = yield func(provider); + equals(name, expected, value); + }) }); - tests.blocks.forEach((test) => { - function checkBlock(promise) { - return promise.then((block) => { - for (let key in test) { - equals("Block " + key, block[key], test[key]); - } - return waiter(delay); + } + function addObjectTest(name, func, expected, checkSkip) { + testFunctions.push({ + name, + networks: [network], + checkSkip, + execute: (provider) => __awaiter(this, void 0, void 0, function* () { + const value = yield func(provider); + Object.keys(expected).forEach((key) => { + equals(`${name}.${key}`, value[key], expected[key]); }); - } - it(`fetches block (by number) #${test.number}`, function () { - this.timeout(60000); - return checkBlock(provider.getBlock(test.number)); - }); - // Etherscan does not support getBlockByBlockhash... *sad emoji* - if (providerName === "EtherscanProvider") { - return; - } - it(`fetches block (by hash) ${test.hash}`, function () { - this.timeout(60000); - return checkBlock(provider.getBlock(test.hash)); - }); + }) }); - tests.transactions.forEach((test) => { - function testTransaction(expected) { - const title = ("Transaction " + expected.hash.substring(0, 10) + " - "); - return provider.getTransaction(expected.hash).then((tx) => { - // This changes with every block - assert.equal(typeof (tx.confirmations), "number", "confirmations is a number"); - delete tx.confirmations; - assert.equal(typeof (tx.wait), "function", "wait is a function"); - delete tx.wait; - for (const key in tx) { - equals((title + key), tx[key], expected[key]); - } - return waiter(delay); - }); - } - it(`fetches transaction: ${test.hash}`, function () { - this.timeout(60000); - return testTransaction(test); - }); - }); - tests.transactionReceipts.forEach((test) => { - function testTransactionReceipt(expected) { - const title = ("Receipt " + expected.transactionHash.substring(0, 10) + " - "); - return provider.getTransactionReceipt(expected.transactionHash).then(function (receipt) { - // This changes with every block; so just make sure it is a number - assert.equal(typeof (receipt.confirmations), "number", "confirmations is a number"); - delete receipt.confirmations; - for (const key in receipt) { - equals((title + key), receipt[key], expected[key]); - } - //equals(("Receipt " + expected.transactionHash.substring(0, 10)), receipt, expected); - return waiter(delay); - }); - } - it(`fetches transaction receipt: ${test.transactionHash}`, function () { - this.timeout(60000); - return testTransactionReceipt(test); - }); - }); - if (networkName === "ropsten") { - it("throws correct NONCE_EXPIRED errors", function () { - return __awaiter(this, void 0, void 0, function* () { - this.timeout(60000); - try { - const tx = yield provider.sendTransaction("0xf86480850218711a0082520894000000000000000000000000000000000000000002801ba038aaddcaaae7d3fa066dfd6f196c8348e1bb210f2c121d36cb2c24ef20cea1fba008ae378075d3cd75aae99ab75a70da82161dffb2c8263dabc5d8adecfa9447fa"); - console.log(tx); - assert.ok(false); - } - catch (error) { - assert.equal(error.code, ethers.utils.Logger.errors.NONCE_EXPIRED); - } - yield waiter(delay); - }); - }); - it("throws correct INSUFFICIENT_FUNDS errors", function () { - return __awaiter(this, void 0, void 0, function* () { - this.timeout(60000); - const txProps = { - to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", - gasPrice: 9000000000, - gasLimit: 21000, - value: 1 - }; - const wallet = ethers.Wallet.createRandom(); - const tx = yield wallet.signTransaction(txProps); - try { - yield provider.sendTransaction(tx); - assert.ok(false); - } - catch (error) { - assert.equal(error.code, ethers.utils.Logger.errors.INSUFFICIENT_FUNDS); - } - yield waiter(delay); - }); - }); - it("throws correct INSUFFICIENT_FUNDS errors (signer)", function () { - return __awaiter(this, void 0, void 0, function* () { - this.timeout(60000); - const txProps = { - to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", - gasPrice: 9000000000, - gasLimit: 21000, - value: 1 - }; - const wallet = ethers.Wallet.createRandom().connect(provider); - try { - yield wallet.sendTransaction(txProps); - assert.ok(false); - } - catch (error) { - assert.equal(error.code, ethers.utils.Logger.errors.INSUFFICIENT_FUNDS); - } - yield waiter(delay); - }); - }); - it("throws correct UNPREDICTABLE_GAS_LIMIT errors", function () { - return __awaiter(this, void 0, void 0, function* () { - this.timeout(60000); - try { - yield provider.estimateGas({ - to: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e" // ENS; no payable fallback - }); - assert.ok(false); - } - catch (error) { - assert.equal(error.code, ethers.utils.Logger.errors.UNPREDICTABLE_GAS_LIMIT); - } - yield waiter(delay); - }); - }); - it("sends a transaction", function () { - return __awaiter(this, void 0, void 0, function* () { - this.timeout(360000); - const wallet = ethers.Wallet.createRandom().connect(provider); - const funder = yield ethers.utils.fetchJson(`https:/\/api.ethers.io/api/v1/?action=fundAccount&address=${wallet.address.toLowerCase()}`); - yield provider.waitForTransaction(funder.hash); - const addr = "0x8210357f377E901f18E45294e86a2A32215Cc3C9"; - const gasPrice = 9000000000; - let balance = yield provider.getBalance(wallet.address); - assert.ok(balance.eq(ethers.utils.parseEther("3.141592653589793238")), "balance is pi after funding"); - const tx = yield wallet.sendTransaction({ - to: addr, - gasPrice: gasPrice, - value: balance.sub(21000 * gasPrice) - }); - yield tx.wait(); - balance = yield provider.getBalance(wallet.address); - assert.ok(balance.eq(ethers.constants.Zero), "balance is zero after after sweeping"); - yield waiter(delay); - }); + } + const tests = blockchainData[network]; + // And address test case can have any of the following: + // - balance + // - code + // - storage + // - ENS name + tests.addresses.forEach((test) => { + if (test.balance) { + addSimpleTest(`fetches account balance: ${test.address}`, (provider) => { + return provider.getBalance(test.address); + }, test.balance); + } + if (test.code) { + addSimpleTest(`fetches account code: ${test.address}`, (provider) => { + return provider.getCode(test.address); + }, test.code); + } + if (test.storage) { + Object.keys(test.storage).forEach((position) => { + addSimpleTest(`fetches storage: ${test.address}:${position}`, (provider) => { + return provider.getStorageAt(test.address, bnify(position)); + }, test.storage[position]); }); } - // Obviously many more cases to add here - // - getTransactionCount - // - getBlockNumber - // - getGasPrice - // - estimateGas - // - sendTransaction - // - call - // - getLogs - // - // Many of these are tLegacyParametersested in run-providers, which uses nodeunit, but - // also creates a local private key which must then be funded to - // execute the tests. I am working on a better test contract to deploy - // to all the networks to help test these. + if (test.name) { + addSimpleTest(`fetches ENS name: ${test.address}`, (provider) => { + return provider.resolveName(test.name); + }, test.address); + } }); -} -["default", "homestead", "ropsten", "rinkeby", "kovan", "goerli"].forEach(function (networkName) { - ["getDefaultProvider", "AlchemyProvider", "CloudflareProvider", "InfuraProvider", "EtherscanProvider", "NodesmithProvider", "Web3Provider"].forEach(function (providerName) { - if (providerName === "NodesmithProvider") { - return; - } - if (providerName === "CloudflareProvider") { - return; - } - if (providerName === "Web3Provider") { - return; - } - if ((networkName !== "homestead" && networkName !== "default") && providerName === "CloudflareProvider") { - return; - } - testProvider(providerName, networkName); + tests.blocks.forEach((test) => { + addObjectTest(`fetches block (by number) #${test.number}`, (provider) => { + return provider.getBlock(test.number); + }, test); + }); + tests.blocks.forEach((test) => { + addObjectTest(`fetches block (by hash) ${test.hash}`, (provider) => { + return provider.getBlock(test.hash); + }, test, (provider, network, test) => { + return (provider === "EtherscanProvider"); + }); + }); + tests.transactions.forEach((test) => { + addObjectTest(`fetches transaction ${test.hash}`, (provider) => __awaiter(void 0, void 0, void 0, function* () { + const tx = yield provider.getTransaction(test.hash); + // This changes with every block + assert.equal(typeof (tx.confirmations), "number", "confirmations is a number"); + delete tx.confirmations; + assert.equal(typeof (tx.wait), "function", "wait is a function"); + delete tx.wait; + return tx; + }), test, (provider, network, test) => { + return (provider === "EtherscanProvider"); + }); + }); + tests.transactionReceipts.forEach((test) => { + addObjectTest(`fetches transaction receipt ${test.transactionHash}`, (provider) => __awaiter(void 0, void 0, void 0, function* () { + const receipt = yield provider.getTransactionReceipt(test.transactionHash); + if (test.status === null) { + assert.ok(receipt.status === undefined, "no status"); + receipt.status = null; + } + // This changes with every block; so just make sure it is a number + assert.equal(typeof (receipt.confirmations), "number", "confirmations is a number"); + delete receipt.confirmations; + return receipt; + }), test); + }); +}); +(function () { + function addErrorTest(code, func) { + testFunctions.push({ + name: `throws correct ${code} error`, + networks: ["ropsten"], + execute: (provider) => __awaiter(this, void 0, void 0, function* () { + try { + const value = yield func(provider); + console.log(value); + assert.ok(false, "did not throw"); + } + catch (error) { + assert.equal(error.code, code, "incorrect error thrown"); + } + }) + }); + } + addErrorTest(ethers.utils.Logger.errors.NONCE_EXPIRED, (provider) => __awaiter(this, void 0, void 0, function* () { + return provider.sendTransaction("0xf86480850218711a0082520894000000000000000000000000000000000000000002801ba038aaddcaaae7d3fa066dfd6f196c8348e1bb210f2c121d36cb2c24ef20cea1fba008ae378075d3cd75aae99ab75a70da82161dffb2c8263dabc5d8adecfa9447fa"); + })); + addErrorTest(ethers.utils.Logger.errors.INSUFFICIENT_FUNDS, (provider) => __awaiter(this, void 0, void 0, function* () { + const txProps = { + to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", + gasPrice: 9000000000, + gasLimit: 21000, + value: 1 + }; + const wallet = ethers.Wallet.createRandom(); + const tx = yield wallet.signTransaction(txProps); + return provider.sendTransaction(tx); + })); + addErrorTest(ethers.utils.Logger.errors.INSUFFICIENT_FUNDS, (provider) => __awaiter(this, void 0, void 0, function* () { + const txProps = { + to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", + gasPrice: 9000000000, + gasLimit: 21000, + value: 1 + }; + const wallet = ethers.Wallet.createRandom().connect(provider); + return wallet.sendTransaction(txProps); + })); + addErrorTest(ethers.utils.Logger.errors.UNPREDICTABLE_GAS_LIMIT, (provider) => __awaiter(this, void 0, void 0, function* () { + return provider.estimateGas({ + to: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e" // ENS contract + }); + })); +})(); +testFunctions.push({ + name: "sends a transaction", + extras: ["funding"], + timeout: 300, + networks: ["ropsten"], + execute: (provider) => __awaiter(void 0, void 0, void 0, function* () { + const wallet = fundWallet.connect(provider); + const addr = "0x8210357f377E901f18E45294e86a2A32215Cc3C9"; + const b0 = yield provider.getBalance(wallet.address); + assert.ok(b0.gt(ethers.constants.Zero), "balance is non-zero"); + const tx = yield wallet.sendTransaction({ + to: addr, + value: 123 + }); + yield tx.wait(); + const b1 = yield provider.getBalance(wallet.address); + assert.ok(b0.gt(b1), "balance is decreased"); + }) +}); +describe("Test Provider Methods", function () { + let fundReceipt = null; + const faucet = "0x8210357f377E901f18E45294e86a2A32215Cc3C9"; + before(function () { + return __awaiter(this, void 0, void 0, function* () { + // Get some ether from the faucet + const provider = ethers.getDefaultProvider("ropsten"); + const funder = yield ethers.utils.fetchJson(`https:/\/api.ethers.io/api/v1/?action=fundAccount&address=${fundWallet.address.toLowerCase()}`); + fundReceipt = provider.waitForTransaction(funder.hash); + fundReceipt.then((receipt) => { + console.log(`*** Funded: ${fundWallet.address}`); + }); + }); + }); + after(function () { + return __awaiter(this, void 0, void 0, function* () { + // Wait until the funding is complete + yield fundReceipt; + // Refund all unused ether to the faucet + const provider = ethers.getDefaultProvider("ropsten"); + const gasPrice = yield provider.getGasPrice(); + const balance = yield provider.getBalance(fundWallet.address); + fundWallet.connect(provider).sendTransaction({ + to: faucet, + gasLimit: 21000, + gasPrice: gasPrice, + value: balance.sub(gasPrice.mul(21000)) + }); + }); + }); + providerFunctions.forEach(({ name, networks, create }) => { + networks.forEach((network) => { + const provider = create(network); + testFunctions.forEach((test) => { + // Skip tests not supported on this network + if (test.networks.indexOf(network) === -1) { + return; + } + if (test.checkSkip && test.checkSkip(name, network, test)) { + return; + } + // How many attempts to try? + const attempts = (test.attempts != null) ? test.attempts : 3; + const timeout = (test.timeout != null) ? test.timeout : 60; + const extras = (test.extras || []).reduce((accum, key) => { + accum[key] = true; + return accum; + }, {}); + it(`${name}.${network ? network : "default"} ${test.name}`, function () { + return __awaiter(this, void 0, void 0, function* () { + this.timeout(timeout * 1000 * attempts); + // Wait for the funding transaction to be mined + if (extras.funding) { + yield fundReceipt; + } + // We wait at least 1 seconds between tests + if (!extras.nowait) { + yield waiter(1000); + } + let error = null; + for (let attempt = 0; attempt < attempts; attempt++) { + try { + return yield Promise.race([ + test.execute(provider), + waiter(timeout * 1000).then((resolve) => { throw new Error("timeout"); }) + ]); + } + catch (attemptError) { + console.log(`*** Failed attempt ${attempt + 1}: ${attemptError.message}`); + error = attemptError; + } + } + throw error; + }); + }); + }); + }); }); }); /* @@ -679,7 +731,7 @@ describe("Test extra Etherscan operations", function() { }); */ describe("Test Basic Authentication", function () { - this.retries(3); + //this.retries(3); function test(name, url) { it("tests " + name, function () { this.timeout(60000); diff --git a/packages/tests/lib.esm/test-providers.js.map b/packages/tests/lib.esm/test-providers.js.map index 856618d44..8e256b051 100644 --- a/packages/tests/lib.esm/test-providers.js.map +++ b/packages/tests/lib.esm/test-providers.js.map @@ -1 +1 @@ -{"version":3,"file":"test-providers.js","sourceRoot":"","sources":["../src.ts/test-providers.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"test-providers.js","sourceRoot":"","sources":["../src.ts/test-providers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/tests/lib/test-providers.js b/packages/tests/lib/test-providers.js index f028fea01..ce1dc7ba5 100644 --- a/packages/tests/lib/test-providers.js +++ b/packages/tests/lib/test-providers.js @@ -96,7 +96,7 @@ var blockchainData = { s: "0x269c3e5b3558267ad91b0a887d51f9f10098771c67b82ea6cb74f29638754f54", v: 38, creates: null, - raw: "0xf8d2808504a817c8008303d090946fc21092da55b392b045ed78f4732bff3c580e2c880186cc6acd4b0000b864f2c298be000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000067269636d6f6f000000000000000000000000000000000000000000000000000026a01e5605197a03e3f0a168f14749168dfeefc44c9228312dacbffdcbbb13263265a0269c3e5b3558267ad91b0a887d51f9f10098771c67b82ea6cb74f29638754f54", + //raw: "0xf8d2808504a817c8008303d090946fc21092da55b392b045ed78f4732bff3c580e2c880186cc6acd4b0000b864f2c298be000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000067269636d6f6f000000000000000000000000000000000000000000000000000026a01e5605197a03e3f0a168f14749168dfeefc44c9228312dacbffdcbbb13263265a0269c3e5b3558267ad91b0a887d51f9f10098771c67b82ea6cb74f29638754f54", chainId: 1 } ], @@ -395,6 +395,8 @@ function equals(name, actual, expected) { if (actual == null) { assert_1.default.ok(false, name + " - actual big number null"); } + expected = ethers_1.ethers.BigNumber.from(expected); + actual = ethers_1.ethers.BigNumber.from(actual); assert_1.default.ok(expected.eq(actual), name + " matches"); } else if (Array.isArray(expected)) { @@ -429,344 +431,429 @@ function equals(name, actual, expected) { } function waiter(duration) { return new Promise(function (resolve) { - setTimeout(resolve, duration); + var timer = setTimeout(resolve, duration); + if (timer.unref) { + timer.unref(); + } }); } -function testProvider(providerName, networkName) { - // Delay (ms) after each test case to prevent the backends from throttling - var delay = 1000; - describe(("Read-Only " + providerName + " (" + networkName + ")"), function () { - this.retries(3); - // Get the Provider based on the name of the provider we are testing and the network - var provider = null; - if (networkName === "default") { - if (providerName === "getDefaultProvider") { - provider = ethers_1.ethers.getDefaultProvider(); - } - else { - provider = new (ethers_1.ethers.providers)[providerName](); +var allNetworks = ["default", "homestead", "ropsten", "rinkeby", "kovan", "goerli"]; +var providerFunctions = [ + { + name: "getDefaultProvider", + networks: allNetworks, + create: function (network) { + if (network == "default") { + return ethers_1.ethers.getDefaultProvider(); } + return ethers_1.ethers.getDefaultProvider(network); } - else { - if (providerName === "getDefaultProvider") { - provider = ethers_1.ethers.getDefaultProvider(networkName); - } - else { - provider = new (ethers_1.ethers.providers)[providerName](networkName); + }, + { + name: "AlchemyProvider", + networks: allNetworks, + create: function (network) { + if (network == "default") { + return new ethers_1.ethers.providers.AlchemyProvider(); } + return new ethers_1.ethers.providers.AlchemyProvider(network); } - var tests = blockchainData[networkName]; - // And address test case can have any of the following: - // - balance - // - code - // - storage - // - ENS name - tests.addresses.forEach(function (test) { - if (test.balance) { - it("fetches address balance: " + test.address, function () { - // Note: These tests could be fiddled with if someone sends ether - // to our address; we just have to live with jerks sending us - // money. *smile emoji* - this.timeout(60000); - return provider.getBalance(test.address).then(function (balance) { - equals("Balance", test.balance, balance); - return waiter(delay); - }); - }); + }, + { + name: "CloudflareProvider", + networks: ["homestead"], + create: function (network) { + return new ethers_1.ethers.providers.AlchemyProvider(network); + } + }, + { + name: "InfuraProvider", + networks: allNetworks, + create: function (network) { + if (network == "default") { + return new ethers_1.ethers.providers.InfuraProvider(); } - if (test.code) { - it("fetches address code: " + test.address, function () { - this.timeout(60000); - return provider.getCode(test.address).then(function (code) { - equals("Code", test.code, code); - return waiter(delay); - }); - }); + return new ethers_1.ethers.providers.InfuraProvider(network); + } + }, + { + name: "EtherscanProvider", + networks: allNetworks, + create: function (network) { + if (network == "default") { + return new ethers_1.ethers.providers.EtherscanProvider(); } - if (test.storage) { - Object.keys(test.storage).forEach(function (position) { - it("fetches storage: " + test.address + ":" + position, function () { - this.timeout(60000); - return provider.getStorageAt(test.address, bnify(position)).then(function (value) { - equals("Storage", test.storage[position], value); - return waiter(delay); + return new ethers_1.ethers.providers.EtherscanProvider(network); + } + }, + { + name: "NodesmithProvider", + networks: [], + create: function (network) { + throw new Error("not tested"); + } + }, + { + name: "Web3Provider", + networks: [], + create: function (network) { + throw new Error("not tested"); + } + } +]; +// This wallet can be funded and used for various test cases +var fundWallet = ethers_1.ethers.Wallet.createRandom(); +var testFunctions = []; +Object.keys(blockchainData).forEach(function (network) { + function addSimpleTest(name, func, expected) { + var _this = this; + testFunctions.push({ + name: name, + networks: [network], + execute: function (provider) { return __awaiter(_this, void 0, void 0, function () { + var value; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, func(provider)]; + case 1: + value = _a.sent(); + equals(name, expected, value); + return [2 /*return*/]; + } + }); + }); } + }); + } + function addObjectTest(name, func, expected, checkSkip) { + var _this = this; + testFunctions.push({ + name: name, + networks: [network], + checkSkip: checkSkip, + execute: function (provider) { return __awaiter(_this, void 0, void 0, function () { + var value; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, func(provider)]; + case 1: + value = _a.sent(); + Object.keys(expected).forEach(function (key) { + equals(name + "." + key, value[key], expected[key]); + }); + return [2 /*return*/]; + } + }); + }); } + }); + } + var tests = blockchainData[network]; + // And address test case can have any of the following: + // - balance + // - code + // - storage + // - ENS name + tests.addresses.forEach(function (test) { + if (test.balance) { + addSimpleTest("fetches account balance: " + test.address, function (provider) { + return provider.getBalance(test.address); + }, test.balance); + } + if (test.code) { + addSimpleTest("fetches account code: " + test.address, function (provider) { + return provider.getCode(test.address); + }, test.code); + } + if (test.storage) { + Object.keys(test.storage).forEach(function (position) { + addSimpleTest("fetches storage: " + test.address + ":" + position, function (provider) { + return provider.getStorageAt(test.address, bnify(position)); + }, test.storage[position]); + }); + } + if (test.name) { + addSimpleTest("fetches ENS name: " + test.address, function (provider) { + return provider.resolveName(test.name); + }, test.address); + } + }); + tests.blocks.forEach(function (test) { + addObjectTest("fetches block (by number) #" + test.number, function (provider) { + return provider.getBlock(test.number); + }, test); + }); + tests.blocks.forEach(function (test) { + addObjectTest("fetches block (by hash) " + test.hash, function (provider) { + return provider.getBlock(test.hash); + }, test, function (provider, network, test) { + return (provider === "EtherscanProvider"); + }); + }); + tests.transactions.forEach(function (test) { + addObjectTest("fetches transaction " + test.hash, function (provider) { return __awaiter(void 0, void 0, void 0, function () { + var tx; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, provider.getTransaction(test.hash)]; + case 1: + tx = _a.sent(); + // This changes with every block + assert_1.default.equal(typeof (tx.confirmations), "number", "confirmations is a number"); + delete tx.confirmations; + assert_1.default.equal(typeof (tx.wait), "function", "wait is a function"); + delete tx.wait; + return [2 /*return*/, tx]; + } + }); + }); }, test, function (provider, network, test) { + return (provider === "EtherscanProvider"); + }); + }); + tests.transactionReceipts.forEach(function (test) { + addObjectTest("fetches transaction receipt " + test.transactionHash, function (provider) { return __awaiter(void 0, void 0, void 0, function () { + var receipt; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, provider.getTransactionReceipt(test.transactionHash)]; + case 1: + receipt = _a.sent(); + if (test.status === null) { + assert_1.default.ok(receipt.status === undefined, "no status"); + receipt.status = null; + } + // This changes with every block; so just make sure it is a number + assert_1.default.equal(typeof (receipt.confirmations), "number", "confirmations is a number"); + delete receipt.confirmations; + return [2 /*return*/, receipt]; + } + }); + }); }, test); + }); +}); +(function () { + var _this = this; + function addErrorTest(code, func) { + var _this = this; + testFunctions.push({ + name: "throws correct " + code + " error", + networks: ["ropsten"], + execute: function (provider) { return __awaiter(_this, void 0, void 0, function () { + var value, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, func(provider)]; + case 1: + value = _a.sent(); + console.log(value); + assert_1.default.ok(false, "did not throw"); + return [3 /*break*/, 3]; + case 2: + error_1 = _a.sent(); + assert_1.default.equal(error_1.code, code, "incorrect error thrown"); + return [3 /*break*/, 3]; + case 3: return [2 /*return*/]; + } + }); + }); } + }); + } + addErrorTest(ethers_1.ethers.utils.Logger.errors.NONCE_EXPIRED, function (provider) { return __awaiter(_this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, provider.sendTransaction("0xf86480850218711a0082520894000000000000000000000000000000000000000002801ba038aaddcaaae7d3fa066dfd6f196c8348e1bb210f2c121d36cb2c24ef20cea1fba008ae378075d3cd75aae99ab75a70da82161dffb2c8263dabc5d8adecfa9447fa")]; + }); + }); }); + addErrorTest(ethers_1.ethers.utils.Logger.errors.INSUFFICIENT_FUNDS, function (provider) { return __awaiter(_this, void 0, void 0, function () { + var txProps, wallet, tx; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + txProps = { + to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", + gasPrice: 9000000000, + gasLimit: 21000, + value: 1 + }; + wallet = ethers_1.ethers.Wallet.createRandom(); + return [4 /*yield*/, wallet.signTransaction(txProps)]; + case 1: + tx = _a.sent(); + return [2 /*return*/, provider.sendTransaction(tx)]; + } + }); + }); }); + addErrorTest(ethers_1.ethers.utils.Logger.errors.INSUFFICIENT_FUNDS, function (provider) { return __awaiter(_this, void 0, void 0, function () { + var txProps, wallet; + return __generator(this, function (_a) { + txProps = { + to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", + gasPrice: 9000000000, + gasLimit: 21000, + value: 1 + }; + wallet = ethers_1.ethers.Wallet.createRandom().connect(provider); + return [2 /*return*/, wallet.sendTransaction(txProps)]; + }); + }); }); + addErrorTest(ethers_1.ethers.utils.Logger.errors.UNPREDICTABLE_GAS_LIMIT, function (provider) { return __awaiter(_this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, provider.estimateGas({ + to: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e" // ENS contract + })]; + }); + }); }); +})(); +testFunctions.push({ + name: "sends a transaction", + extras: ["funding"], + timeout: 300, + networks: ["ropsten"], + execute: function (provider) { return __awaiter(void 0, void 0, void 0, function () { + var wallet, addr, b0, tx, b1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + wallet = fundWallet.connect(provider); + addr = "0x8210357f377E901f18E45294e86a2A32215Cc3C9"; + return [4 /*yield*/, provider.getBalance(wallet.address)]; + case 1: + b0 = _a.sent(); + assert_1.default.ok(b0.gt(ethers_1.ethers.constants.Zero), "balance is non-zero"); + return [4 /*yield*/, wallet.sendTransaction({ + to: addr, + value: 123 + })]; + case 2: + tx = _a.sent(); + return [4 /*yield*/, tx.wait()]; + case 3: + _a.sent(); + return [4 /*yield*/, provider.getBalance(wallet.address)]; + case 4: + b1 = _a.sent(); + assert_1.default.ok(b0.gt(b1), "balance is decreased"); + return [2 /*return*/]; + } + }); + }); } +}); +describe("Test Provider Methods", function () { + var fundReceipt = null; + var faucet = "0x8210357f377E901f18E45294e86a2A32215Cc3C9"; + before(function () { + return __awaiter(this, void 0, void 0, function () { + var provider, funder; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + provider = ethers_1.ethers.getDefaultProvider("ropsten"); + return [4 /*yield*/, ethers_1.ethers.utils.fetchJson("https://api.ethers.io/api/v1/?action=fundAccount&address=" + fundWallet.address.toLowerCase())]; + case 1: + funder = _a.sent(); + fundReceipt = provider.waitForTransaction(funder.hash); + fundReceipt.then(function (receipt) { + console.log("*** Funded: " + fundWallet.address); + }); + return [2 /*return*/]; + } + }); + }); + }); + after(function () { + return __awaiter(this, void 0, void 0, function () { + var provider, gasPrice, balance; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Wait until the funding is complete + return [4 /*yield*/, fundReceipt]; + case 1: + // Wait until the funding is complete + _a.sent(); + provider = ethers_1.ethers.getDefaultProvider("ropsten"); + return [4 /*yield*/, provider.getGasPrice()]; + case 2: + gasPrice = _a.sent(); + return [4 /*yield*/, provider.getBalance(fundWallet.address)]; + case 3: + balance = _a.sent(); + fundWallet.connect(provider).sendTransaction({ + to: faucet, + gasLimit: 21000, + gasPrice: gasPrice, + value: balance.sub(gasPrice.mul(21000)) + }); + return [2 /*return*/]; + } + }); + }); + }); + providerFunctions.forEach(function (_a) { + var name = _a.name, networks = _a.networks, create = _a.create; + networks.forEach(function (network) { + var provider = create(network); + testFunctions.forEach(function (test) { + // Skip tests not supported on this network + if (test.networks.indexOf(network) === -1) { + return; + } + if (test.checkSkip && test.checkSkip(name, network, test)) { + return; + } + // How many attempts to try? + var attempts = (test.attempts != null) ? test.attempts : 3; + var timeout = (test.timeout != null) ? test.timeout : 60; + var extras = (test.extras || []).reduce(function (accum, key) { + accum[key] = true; + return accum; + }, {}); + it(name + "." + (network ? network : "default") + " " + test.name, function () { + return __awaiter(this, void 0, void 0, function () { + var error, attempt, attemptError_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.timeout(timeout * 1000 * attempts); + if (!extras.funding) return [3 /*break*/, 2]; + return [4 /*yield*/, fundReceipt]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + if (!!extras.nowait) return [3 /*break*/, 4]; + return [4 /*yield*/, waiter(1000)]; + case 3: + _a.sent(); + _a.label = 4; + case 4: + error = null; + attempt = 0; + _a.label = 5; + case 5: + if (!(attempt < attempts)) return [3 /*break*/, 10]; + _a.label = 6; + case 6: + _a.trys.push([6, 8, , 9]); + return [4 /*yield*/, Promise.race([ + test.execute(provider), + waiter(timeout * 1000).then(function (resolve) { throw new Error("timeout"); }) + ])]; + case 7: return [2 /*return*/, _a.sent()]; + case 8: + attemptError_1 = _a.sent(); + console.log("*** Failed attempt " + (attempt + 1) + ": " + attemptError_1.message); + error = attemptError_1; + return [3 /*break*/, 9]; + case 9: + attempt++; + return [3 /*break*/, 5]; + case 10: throw error; + } }); }); }); - } - if (test.name) { - it("fetches the ENS name: " + test.name, function () { - this.timeout(60000); - return provider.resolveName(test.name).then(function (address) { - equals("ENS Name", test.address, address); - return waiter(delay); - }); - }); - } - }); - tests.blocks.forEach(function (test) { - function checkBlock(promise) { - return promise.then(function (block) { - for (var key in test) { - equals("Block " + key, block[key], test[key]); - } - return waiter(delay); - }); - } - it("fetches block (by number) #" + test.number, function () { - this.timeout(60000); - return checkBlock(provider.getBlock(test.number)); - }); - // Etherscan does not support getBlockByBlockhash... *sad emoji* - if (providerName === "EtherscanProvider") { - return; - } - it("fetches block (by hash) " + test.hash, function () { - this.timeout(60000); - return checkBlock(provider.getBlock(test.hash)); }); }); - tests.transactions.forEach(function (test) { - function testTransaction(expected) { - var title = ("Transaction " + expected.hash.substring(0, 10) + " - "); - return provider.getTransaction(expected.hash).then(function (tx) { - // This changes with every block - assert_1.default.equal(typeof (tx.confirmations), "number", "confirmations is a number"); - delete tx.confirmations; - assert_1.default.equal(typeof (tx.wait), "function", "wait is a function"); - delete tx.wait; - for (var key in tx) { - equals((title + key), tx[key], expected[key]); - } - return waiter(delay); - }); - } - it("fetches transaction: " + test.hash, function () { - this.timeout(60000); - return testTransaction(test); - }); - }); - tests.transactionReceipts.forEach(function (test) { - function testTransactionReceipt(expected) { - var title = ("Receipt " + expected.transactionHash.substring(0, 10) + " - "); - return provider.getTransactionReceipt(expected.transactionHash).then(function (receipt) { - // This changes with every block; so just make sure it is a number - assert_1.default.equal(typeof (receipt.confirmations), "number", "confirmations is a number"); - delete receipt.confirmations; - for (var key in receipt) { - equals((title + key), receipt[key], expected[key]); - } - //equals(("Receipt " + expected.transactionHash.substring(0, 10)), receipt, expected); - return waiter(delay); - }); - } - it("fetches transaction receipt: " + test.transactionHash, function () { - this.timeout(60000); - return testTransactionReceipt(test); - }); - }); - if (networkName === "ropsten") { - it("throws correct NONCE_EXPIRED errors", function () { - return __awaiter(this, void 0, void 0, function () { - var tx, error_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.timeout(60000); - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4 /*yield*/, provider.sendTransaction("0xf86480850218711a0082520894000000000000000000000000000000000000000002801ba038aaddcaaae7d3fa066dfd6f196c8348e1bb210f2c121d36cb2c24ef20cea1fba008ae378075d3cd75aae99ab75a70da82161dffb2c8263dabc5d8adecfa9447fa")]; - case 2: - tx = _a.sent(); - console.log(tx); - assert_1.default.ok(false); - return [3 /*break*/, 4]; - case 3: - error_1 = _a.sent(); - assert_1.default.equal(error_1.code, ethers_1.ethers.utils.Logger.errors.NONCE_EXPIRED); - return [3 /*break*/, 4]; - case 4: return [4 /*yield*/, waiter(delay)]; - case 5: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }); - it("throws correct INSUFFICIENT_FUNDS errors", function () { - return __awaiter(this, void 0, void 0, function () { - var txProps, wallet, tx, error_2; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.timeout(60000); - txProps = { - to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", - gasPrice: 9000000000, - gasLimit: 21000, - value: 1 - }; - wallet = ethers_1.ethers.Wallet.createRandom(); - return [4 /*yield*/, wallet.signTransaction(txProps)]; - case 1: - tx = _a.sent(); - _a.label = 2; - case 2: - _a.trys.push([2, 4, , 5]); - return [4 /*yield*/, provider.sendTransaction(tx)]; - case 3: - _a.sent(); - assert_1.default.ok(false); - return [3 /*break*/, 5]; - case 4: - error_2 = _a.sent(); - assert_1.default.equal(error_2.code, ethers_1.ethers.utils.Logger.errors.INSUFFICIENT_FUNDS); - return [3 /*break*/, 5]; - case 5: return [4 /*yield*/, waiter(delay)]; - case 6: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }); - it("throws correct INSUFFICIENT_FUNDS errors (signer)", function () { - return __awaiter(this, void 0, void 0, function () { - var txProps, wallet, error_3; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.timeout(60000); - txProps = { - to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", - gasPrice: 9000000000, - gasLimit: 21000, - value: 1 - }; - wallet = ethers_1.ethers.Wallet.createRandom().connect(provider); - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4 /*yield*/, wallet.sendTransaction(txProps)]; - case 2: - _a.sent(); - assert_1.default.ok(false); - return [3 /*break*/, 4]; - case 3: - error_3 = _a.sent(); - assert_1.default.equal(error_3.code, ethers_1.ethers.utils.Logger.errors.INSUFFICIENT_FUNDS); - return [3 /*break*/, 4]; - case 4: return [4 /*yield*/, waiter(delay)]; - case 5: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }); - it("throws correct UNPREDICTABLE_GAS_LIMIT errors", function () { - return __awaiter(this, void 0, void 0, function () { - var error_4; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.timeout(60000); - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4 /*yield*/, provider.estimateGas({ - to: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e" // ENS; no payable fallback - })]; - case 2: - _a.sent(); - assert_1.default.ok(false); - return [3 /*break*/, 4]; - case 3: - error_4 = _a.sent(); - assert_1.default.equal(error_4.code, ethers_1.ethers.utils.Logger.errors.UNPREDICTABLE_GAS_LIMIT); - return [3 /*break*/, 4]; - case 4: return [4 /*yield*/, waiter(delay)]; - case 5: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }); - it("sends a transaction", function () { - return __awaiter(this, void 0, void 0, function () { - var wallet, funder, addr, gasPrice, balance, tx; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.timeout(360000); - wallet = ethers_1.ethers.Wallet.createRandom().connect(provider); - return [4 /*yield*/, ethers_1.ethers.utils.fetchJson("https://api.ethers.io/api/v1/?action=fundAccount&address=" + wallet.address.toLowerCase())]; - case 1: - funder = _a.sent(); - return [4 /*yield*/, provider.waitForTransaction(funder.hash)]; - case 2: - _a.sent(); - addr = "0x8210357f377E901f18E45294e86a2A32215Cc3C9"; - gasPrice = 9000000000; - return [4 /*yield*/, provider.getBalance(wallet.address)]; - case 3: - balance = _a.sent(); - assert_1.default.ok(balance.eq(ethers_1.ethers.utils.parseEther("3.141592653589793238")), "balance is pi after funding"); - return [4 /*yield*/, wallet.sendTransaction({ - to: addr, - gasPrice: gasPrice, - value: balance.sub(21000 * gasPrice) - })]; - case 4: - tx = _a.sent(); - return [4 /*yield*/, tx.wait()]; - case 5: - _a.sent(); - return [4 /*yield*/, provider.getBalance(wallet.address)]; - case 6: - balance = _a.sent(); - assert_1.default.ok(balance.eq(ethers_1.ethers.constants.Zero), "balance is zero after after sweeping"); - return [4 /*yield*/, waiter(delay)]; - case 7: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }); - } - // Obviously many more cases to add here - // - getTransactionCount - // - getBlockNumber - // - getGasPrice - // - estimateGas - // - sendTransaction - // - call - // - getLogs - // - // Many of these are tLegacyParametersested in run-providers, which uses nodeunit, but - // also creates a local private key which must then be funded to - // execute the tests. I am working on a better test contract to deploy - // to all the networks to help test these. - }); -} -["default", "homestead", "ropsten", "rinkeby", "kovan", "goerli"].forEach(function (networkName) { - ["getDefaultProvider", "AlchemyProvider", "CloudflareProvider", "InfuraProvider", "EtherscanProvider", "NodesmithProvider", "Web3Provider"].forEach(function (providerName) { - if (providerName === "NodesmithProvider") { - return; - } - if (providerName === "CloudflareProvider") { - return; - } - if (providerName === "Web3Provider") { - return; - } - if ((networkName !== "homestead" && networkName !== "default") && providerName === "CloudflareProvider") { - return; - } - testProvider(providerName, networkName); }); }); /* @@ -789,7 +876,7 @@ describe("Test extra Etherscan operations", function() { }); */ describe("Test Basic Authentication", function () { - this.retries(3); + //this.retries(3); function test(name, url) { it("tests " + name, function () { this.timeout(60000); diff --git a/packages/tests/lib/test-providers.js.map b/packages/tests/lib/test-providers.js.map index ca58409f2..16b3c1486 100644 --- a/packages/tests/lib/test-providers.js.map +++ b/packages/tests/lib/test-providers.js.map @@ -1 +1 @@ -{"version":3,"file":"test-providers.js","sourceRoot":"","sources":["../src.ts/test-providers.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"test-providers.js","sourceRoot":"","sources":["../src.ts/test-providers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,kDAA4B;AAE5B,qDAAqD;AAErD,iCAAgC;AAEhC,IAAM,KAAK,GAAG,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AASpC,IAAM,cAAc,GAAuC;IACvD,SAAS,EAAE;QACP,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC;gBAClC,IAAI,EAAE,IAAI;aACb;YACD,oBAAoB;YACpB;gBACI,OAAO,EAAE,4CAA4C;gBACrD,IAAI,EAAE,kdAAkd;gBACxd,OAAO,EAAE;oBACL,GAAG,EAAE,oEAAoE;iBAC5E;aACJ;YACD;gBACI,OAAO,EAAE,4CAA4C;gBACrD,IAAI,EAAE,oBAAoB;aAC7B;SACJ;QACD,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,oBAAoB;gBAC3B,UAAU,EAAE,WAAW;gBACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;gBACzB,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;gBACnB,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,oEAAoE;gBAC/E,YAAY,EAAE,EAAE;aACnB;SACJ;QACD,YAAY,EAAE;YACV;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,SAAS,EAAE,oEAAoE;gBAC/E,WAAW,EAAE,OAAO;gBACpB,gBAAgB,EAAE,EAAE;gBACpB,IAAI,EAAE,4CAA4C;gBAClD,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC;gBAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;gBAC1B,EAAE,EAAE,4CAA4C;gBAChD,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC;gBACjC,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,4MAA4M;gBAClN,CAAC,EAAE,oEAAoE;gBACvE,CAAC,EAAE,oEAAoE;gBACvE,CAAC,EAAE,EAAE;gBACL,OAAO,EAAE,IAAI;gBACb,obAAob;gBACpb,OAAO,EAAE,CAAC;aACb;SACJ;QACD,mBAAmB,EAAE;YACjB;gBACI,SAAS,EAAE,oEAAoE;gBAC/E,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,QAAQ;gBAC3B,IAAI,EAAE,4CAA4C;gBAClD,OAAO,EAAC,OAAO;gBACf,IAAI,EAAE;oBACF;wBACI,OAAO,EAAE,4CAA4C;wBACrD,SAAS,EAAE,oEAAoE;wBAC/E,WAAW,EAAE,QAAQ;wBACrB,IAAI,EAAE,oEAAoE;wBAC1E,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACJ,oEAAoE;4BACpE,oEAAoE;4BACpE,oEAAoE;yBACvE;wBACD,eAAe,EAAE,oEAAoE;wBACrF,gBAAgB,EAAE,IAAI;qBACzB;oBACD;wBACI,OAAO,EAAE,4CAA4C;wBACrD,SAAS,EAAE,oEAAoE;wBAC/E,WAAW,EAAE,QAAQ;wBACrB,IAAI,EAAE,oIAAoI;wBAC1I,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACJ,oEAAoE;4BACpE,oEAAoE;4BACpE,oEAAoE;yBACvE;wBACD,eAAe,EAAE,oEAAoE;wBACrF,gBAAgB,EAAE,IAAI;qBACzB;iBACJ;gBACD,SAAS,EAAE,ogBAAogB;gBAC/gB,IAAI,EAAE,oEAAoE;gBAC1E,MAAM,EAAE,IAAI;gBACZ,EAAE,EAAE,4CAA4C;gBAChD,eAAe,EAAE,oEAAoE;gBACrF,gBAAgB,EAAE,IAAI;aACzB;YACD,kBAAkB;YAClB;gBACI,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,oEAAoE;gBAC/E,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,QAAQ;gBAC3B,IAAI,EAAE,4CAA4C;gBAClD,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE;oBACF;wBACI,OAAO,EAAE,4CAA4C;wBACrD,SAAS,EAAE,oEAAoE;wBAC/E,WAAW,EAAE,QAAQ;wBACrB,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE;4BACJ,oEAAoE;4BACpE,oEAAoE;yBACvE;wBACD,eAAe,EAAE,oEAAoE;wBACrF,gBAAgB,EAAE,IAAI;qBACzB;iBACJ;gBACD,SAAS,EAAE,ogBAAogB;gBAC/gB,MAAM,EAAC,CAAC;gBACR,EAAE,EAAE,4CAA4C;gBAChD,eAAe,EAAE,oEAAoE;gBACrF,gBAAgB,EAAE,IAAI;aACzB;SACJ;KACJ;IACD,KAAK,EAAE;QACH,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC;gBACpC,IAAI,EAAE,IAAI;aACb;SACJ;QACD,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;gBACnB,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,gDAAgD;gBAC3D,YAAY,EAAE,EAAE;aACnB;YACD,sDAAsD;YACtD;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC1B,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,kEAAkE;gBAC7E,YAAY,EAAE;oBACV,oEAAoE;oBACpE,oEAAoE;oBACpE,oEAAoE;oBACpE,oEAAoE;oBACpE,oEAAoE;iBACvE;aACJ;SACJ;QACD,YAAY,EAAE,EACb;QACD,mBAAmB,EAAE,EACpB;KACJ;IACD,OAAO,EAAE;QACL,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,KAAK,CAAC,qBAAqB,CAAC;gBACrC,IAAI,EAAE,IAAI;aACb;SACJ;QACD,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,oBAAoB;gBAC3B,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjB,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,sMAAsM;gBACjN,YAAY,EAAE,EAAE;aACnB;SACJ;QACD,YAAY,EAAE,EACb;QACD,mBAAmB,EAAE,EACpB;KACJ;IACD,OAAO,EAAE;QACL,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC;gBACtC,IAAI,EAAE,IAAI;aACb;SACJ;QACD,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,UAAU;gBACrB,KAAK,EAAE,oBAAoB;gBAC3B,UAAU,EAAE,MAAM;gBAClB,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;gBACnB,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,sDAAsD;gBACjE,YAAY,EAAE,EAAE;aACnB;SACJ;QACD,YAAY,EAAE,EACb;QACD,mBAAmB,EAAE;YACjB;gBACI,SAAS,EAAE,oEAAoE;gBAC/E,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC;gBAClC,IAAI,EAAE,4CAA4C;gBAClD,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;gBACxB,IAAI,EAAE;oBACF;wBACI,OAAO,EAAE,4CAA4C;wBACrD,SAAS,EAAE,oEAAoE;wBAC/E,WAAW,EAAE,QAAQ;wBACrB,IAAI,EAAE,oIAAoI;wBAC1I,QAAQ,EAAE,GAAG;wBACb,MAAM,EAAE;4BACJ,oEAAoE;yBACvE;wBACD,eAAe,EAAE,oEAAoE;wBACrF,gBAAgB,EAAE,GAAG;qBACxB;iBACJ;gBACD,SAAS,EAAE,ogBAAogB;gBAC/gB,IAAI,EAAE,oEAAoE;gBAC1E,EAAE,EAAE,4CAA4C;gBAChD,eAAe,EAAE,oEAAoE;gBACrF,gBAAgB,EAAE,GAAG;aACxB;YACD,oBAAoB;YACpB;gBACI,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,oEAAoE;gBAC/E,WAAW,EAAE,QAAQ;gBACrB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC;gBACnC,IAAI,EAAE,4CAA4C;gBAClD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;gBACzB,IAAI,EAAE;oBACF;wBACI,OAAO,EAAE,4CAA4C;wBACrD,SAAS,EAAE,oEAAoE;wBAC/E,WAAW,EAAE,QAAQ;wBACrB,IAAI,EAAE,o4BAAo4B;wBAC14B,QAAQ,EAAE,GAAG;wBACb,MAAM,EAAE,CAAE,oEAAoE,CAAE;wBAChF,eAAe,EAAE,oEAAoE;wBACrF,gBAAgB,EAAE,GAAG;qBACxB;iBACJ;gBACD,SAAS,EAAE,ogBAAogB;gBAC/gB,MAAM,EAAE,CAAC;gBACT,EAAE,EAAE,4CAA4C;gBAChD,eAAe,EAAE,oEAAoE;gBACrF,gBAAgB,EAAE,GAAG;aACxB;SACJ;KACJ;IACD,MAAM,EAAE;QACJ,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC;gBACpC,IAAI,EAAE,IAAI;aACb;SACJ;QACD,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC;gBACnB,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,sMAAsM;gBACjN,YAAY,EAAE,EAAE;aACnB;YACD,wCAAwC;YACxC;gBACI,IAAI,EAAE,oEAAoE;gBAC1E,UAAU,EAAE,oEAAoE;gBAChF,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;gBACzB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;gBAC1B,KAAK,EAAE,4CAA4C;gBACnD,SAAS,EAAE,sMAAsM;gBACjN,YAAY,EAAE;oBACT,oEAAoE;oBACpE,oEAAoE;oBACpE,oEAAoE;oBACpE,oEAAoE;oBACpE,oEAAoE;iBACvE;aACL;SACJ;QACD,YAAY,EAAE,EACb;QACD,mBAAmB,EAAE;YACjB;gBACI,SAAS,EAAE,oEAAoE;gBAC/E,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,IAAI;gBACf,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC;gBAC/B,IAAI,EAAE,4CAA4C;gBAClD,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;gBACrB,SAAS,EAAE,ogBAAogB;gBAC/gB,EAAE,EAAE,4CAA4C;gBAChD,eAAe,EAAE,oEAAoE;gBACrF,gBAAgB,EAAE,CAAC;gBACnB,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,CAAC;aACZ;SACJ;KACJ;CACJ,CAAA;AAED,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAErD,SAAS,MAAM,CAAC,IAAY,EAAE,MAAW,EAAE,QAAa;IACpD,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,EAAE;QACzB,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,gBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,2BAA2B,CAAC,CAAC;SAAE;QAC7E,QAAQ,GAAG,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,gBAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC;KAErD;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChC,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,gBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,sBAAsB,CAAC,CAAC;SAAE;QACxE,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,sBAAsB,CAAC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,UAAU,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SACrE;KAEJ;SAAM,IAAI,OAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;QACtC,IAAI,MAAM,IAAI,IAAI,EAAE;YACjB,IAAI,QAAQ,KAAK,MAAM,EAAE;gBAAE,OAAO;aAAE;YACpC,gBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,uBAAuB,CAAC,CAAC;SACnD;QAED,IAAI,MAAI,GAAiC,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,IAAO,MAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,IAAO,MAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,MAAM,CAAC,IAAI,CAAC,MAAI,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YAC1B,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;KAEN;SAAM;QACH,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,gBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,gBAAgB,CAAC,CAAC;SAAE;QAClE,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC;KACrD;AACL,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB;IAC5B,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;QACvB,IAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,KAAK,EAAE;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;SAAE;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;AAuBD,IAAM,WAAW,GAAG,CAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAE,CAAC;AAExF,IAAM,iBAAiB,GAA+B;IAClD;QACI,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAC,OAAe;YACpB,IAAI,OAAO,IAAI,SAAS,EAAE;gBACtB,OAAO,eAAM,CAAC,kBAAkB,EAAE,CAAC;aACtC;YACD,OAAO,eAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;KACJ;IACD;QACI,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAC,OAAe;YACpB,IAAI,OAAO,IAAI,SAAS,EAAE;gBACtB,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;aACjD;YACD,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;KACJ;IACD;QACI,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAE,WAAW,CAAE;QACzB,MAAM,EAAE,UAAC,OAAe;YACpB,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAC,OAAe;YACpB,IAAI,OAAO,IAAI,SAAS,EAAE;gBACtB,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aAChD;YACD,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;KACJ;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAC,OAAe;YACpB,IAAI,OAAO,IAAI,SAAS,EAAE;gBACtB,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;aACnD;YACD,OAAO,IAAI,eAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;KACJ;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,EAAG;QACb,MAAM,EAAE,UAAC,OAAe;YACpB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;KACJ;IACD;QACI,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,EAAG;QACb,MAAM,EAAE,UAAC,OAAe;YACpB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;KACJ;CACJ,CAAC;AAEF,4DAA4D;AAC5D,IAAM,UAAU,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAGhD,IAAM,aAAa,GAA2B,EAAG,CAAC;AAElD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAC,OAAO;IACxC,SAAS,aAAa,CAAC,IAAY,EAAE,IAA2D,EAAE,QAAa;QAA/G,iBASC;QARG,aAAa,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,CAAE,OAAO,CAAE;YACrB,OAAO,EAAE,UAAO,QAAmC;;;;gCACjC,qBAAM,IAAI,CAAC,QAAQ,CAAC,EAAA;;4BAA5B,KAAK,GAAG,SAAoB;4BAClC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;;;;iBACjC;SACJ,CAAC,CAAC;IACP,CAAC;IAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAA2D,EAAE,QAAa,EAAE,SAAyB;QAA1I,iBAYC;QAXG,aAAa,CAAC,IAAI,CAAC;YACf,IAAI,MAAA;YACJ,QAAQ,EAAE,CAAE,OAAO,CAAE;YACrB,SAAS,WAAA;YACT,OAAO,EAAE,UAAO,QAAmC;;;;gCACjC,qBAAM,IAAI,CAAC,QAAQ,CAAC,EAAA;;4BAA5B,KAAK,GAAG,SAAoB;4BAClC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;gCAC9B,MAAM,CAAK,IAAI,SAAM,GAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC5D,CAAC,CAAC,CAAC;;;;iBACN;SACJ,CAAC,CAAC;IACP,CAAC;IAED,IAAM,KAAK,GAAc,cAAc,CAAC,OAAO,CAAC,CAAC;IAEjD,uDAAuD;IACvD,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,aAAa;IACb,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,IAAI;QACzB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,aAAa,CAAC,8BAA6B,IAAI,CAAC,OAAU,EAAE,UAAC,QAAmC;gBAC5F,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACpB;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,aAAa,CAAC,2BAA0B,IAAI,CAAC,OAAU,EAAE,UAAC,QAAmC;gBACzF,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,QAAQ;gBACvC,aAAa,CAAC,sBAAqB,IAAI,CAAC,OAAO,SAAM,QAAW,EAAE,UAAC,QAAmC;oBAClG,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;SACN;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,aAAa,CAAC,uBAAsB,IAAI,CAAC,OAAU,EAAE,UAAC,QAAmC;gBACrF,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACpB;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,IAAI;QACtB,aAAa,CAAC,gCAA+B,IAAI,CAAC,MAAS,EAAE,UAAC,QAAmC;YAC7F,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,IAAI;QACtB,aAAa,CAAC,6BAA4B,IAAI,CAAC,IAAO,EAAE,UAAC,QAAmC;YACxF,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,EAAE,IAAI,EAAE,UAAC,QAAgB,EAAE,OAAe,EAAE,IAAqB;YAC9D,OAAO,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,IAAI;QAC5B,aAAa,CAAC,yBAAwB,IAAI,CAAC,IAAO,EAAE,UAAO,QAAmC;;;;4BAC/E,qBAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;;wBAA7C,EAAE,GAAG,SAAwC;wBAEnD,gCAAgC;wBAChC,gBAAM,CAAC,KAAK,CAAC,OAAM,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;wBAC9E,OAAO,EAAE,CAAC,aAAa,CAAC;wBAExB,gBAAM,CAAC,KAAK,CAAC,OAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;wBAChE,OAAO,EAAE,CAAC,IAAI,CAAA;wBAEd,sBAAO,EAAE,EAAC;;;aACb,EAAE,IAAI,EAAE,UAAC,QAAgB,EAAE,OAAe,EAAE,IAAqB;YAC9D,OAAO,CAAC,QAAQ,KAAK,mBAAmB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAC,IAAI;QACnC,aAAa,CAAC,iCAAgC,IAAI,CAAC,eAAkB,EAAE,UAAO,QAAmC;;;;4BAC7F,qBAAM,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAA;;wBAApE,OAAO,GAAG,SAA0D;wBAE1E,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;4BACtB,gBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,WAAW,CAAC,CAAC;4BACrD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;yBACzB;wBAED,kEAAkE;wBAClE,gBAAM,CAAC,KAAK,CAAC,OAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;wBACnF,OAAO,OAAO,CAAC,aAAa,CAAC;wBAE7B,sBAAO,OAAO,EAAC;;;aAClB,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,CAAC;IAAA,iBAoDA;IAnDG,SAAS,YAAY,CAAC,IAAY,EAAE,IAA2D;QAA/F,iBAcC;QAbG,aAAa,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,oBAAmB,IAAI,WAAS;YACtC,QAAQ,EAAE,CAAE,SAAS,CAAE;YACvB,OAAO,EAAE,UAAO,QAAmC;;;;;;4BAE7B,qBAAM,IAAI,CAAC,QAAQ,CAAC,EAAA;;4BAA5B,KAAK,GAAG,SAAoB;4BAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BACnB,gBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;;;;4BAElC,gBAAM,CAAC,KAAK,CAAC,OAAK,CAAC,IAAI,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;;;;;iBAEhE;SACJ,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAO,QAAmC;;YAC7F,sBAAO,QAAQ,CAAC,eAAe,CAAC,gNAAgN,CAAC,EAAC;;SACrP,CAAC,CAAC;IAEH,YAAY,CAAC,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAO,QAAmC;;;;;oBAE5F,OAAO,GAAG;wBACZ,EAAE,EAAE,4CAA4C;wBAChD,QAAQ,EAAE,UAAU;wBACpB,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,CAAC;qBACX,CAAC;oBAEI,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBACjC,qBAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAA;;oBAA1C,EAAE,GAAG,SAAqC;oBAChD,sBAAO,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAC;;;SACvC,CAAC,CAAC;IAEH,YAAY,CAAC,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAO,QAAmC;;;YAC5F,OAAO,GAAG;gBACZ,EAAE,EAAE,4CAA4C;gBAChD,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,CAAC;aACX,CAAC;YAEI,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9D,sBAAO,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAC;;SAC1C,CAAC,CAAC;IAEH,YAAY,CAAC,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,UAAO,QAAmC;;YACvG,sBAAO,QAAQ,CAAC,WAAW,CAAC;oBACxB,EAAE,EAAE,4CAA4C,CAAC,eAAe;iBACnE,CAAC,EAAC;;SACN,CAAC,CAAC;AACP,CAAC,CAAC,EAAE,CAAC;AAEL,aAAa,CAAC,IAAI,CAAC;IACf,IAAI,EAAE,qBAAqB;IAC3B,MAAM,EAAE,CAAE,SAAS,CAAE;IACrB,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,CAAE,SAAS,CAAE;IACvB,OAAO,EAAE,UAAO,QAAmC;;;;;oBACzC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAEtC,IAAI,GAAG,4CAA4C,CAAC;oBAE/C,qBAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;oBAA9C,EAAE,GAAG,SAAyC;oBACpD,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,CAAC;oBAEpD,qBAAM,MAAM,CAAC,eAAe,CAAC;4BACpC,EAAE,EAAE,IAAI;4BACR,KAAK,EAAE,GAAG;yBACb,CAAC,EAAA;;oBAHI,EAAE,GAAG,SAGT;oBAEF,qBAAM,EAAE,CAAC,IAAI,EAAE,EAAA;;oBAAf,SAAe,CAAC;oBAEL,qBAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;oBAA9C,EAAE,GAAG,SAAyC;oBACpD,gBAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAC;;;;SAChD;CACJ,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE;IAC9B,IAAI,WAAW,GAAiD,IAAI,CAAC;IACrE,IAAM,MAAM,GAAG,4CAA4C,CAAC;IAE5D,MAAM,CAAC;;;;;;wBAEG,QAAQ,GAAG,eAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;wBACvC,qBAAM,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,8DAA8D,UAAU,CAAC,OAAO,CAAC,WAAW,EAAK,CAAC,EAAA;;wBAAxI,MAAM,GAAG,SAA+H;wBAC9I,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBACvD,WAAW,CAAC,IAAI,CAAC,UAAC,OAAO;4BACrB,OAAO,CAAC,GAAG,CAAC,iBAAgB,UAAU,CAAC,OAAU,CAAC,CAAC;wBACvD,CAAC,CAAC,CAAC;;;;;KACN,CAAC,CAAC;IAEH,KAAK,CAAC;;;;;;oBACF,qCAAqC;oBACrC,qBAAM,WAAW,EAAA;;wBADjB,qCAAqC;wBACrC,SAAiB,CAAC;wBAGZ,QAAQ,GAAG,eAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;wBACrC,qBAAM,QAAQ,CAAC,WAAW,EAAE,EAAA;;wBAAvC,QAAQ,GAAG,SAA4B;wBAC7B,qBAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAA;;wBAAvD,OAAO,GAAG,SAA6C;wBAC7D,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC;4BACzC,EAAE,EAAE,MAAM;4BACV,QAAQ,EAAE,KAAK;4BACf,QAAQ,EAAE,QAAQ;4BAClB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;yBAC1C,CAAC,CAAC;;;;;KACN,CAAC,CAAC;IAEH,iBAAiB,CAAC,OAAO,CAAC,UAAC,EAAyB;YAAvB,cAAI,EAAE,sBAAQ,EAAE,kBAAM;QAE/C,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO;YACrB,IAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAEjC,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI;gBAEvB,2CAA2C;gBAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;oBAAE,OAAO;iBAAE;gBACtD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;oBACvD,OAAO;iBACV;gBAED,4BAA4B;gBAC5B,IAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA,CAAC,CAAC,EAAE,CAAC;gBAC1D,IAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,KAAK,EAAE,GAAG;oBACjD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;oBAClB,OAAO,KAAK,CAAC;gBACjB,CAAC,EAAgC,EAAG,CAAC,CAAC;gBAEtC,EAAE,CAAK,IAAI,UAAM,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA,CAAC,CAAC,SAAS,UAAM,IAAI,CAAC,IAAM,EAAE;;;;;;oCAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;yCAGpC,MAAM,CAAC,OAAO,EAAd,wBAAc;oCAAI,qBAAM,WAAW,EAAA;;oCAAjB,SAAiB,CAAC;;;yCAGpC,CAAC,MAAM,CAAC,MAAM,EAAd,wBAAc;oCAAI,qBAAM,MAAM,CAAC,IAAI,CAAC,EAAA;;oCAAlB,SAAkB,CAAC;;;oCAErC,KAAK,GAAU,IAAI,CAAC;oCACf,OAAO,GAAG,CAAC;;;yCAAE,CAAA,OAAO,GAAG,QAAQ,CAAA;;;;oCAEzB,qBAAM,OAAO,CAAC,IAAI,CAAC;4CACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;4CACtB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,OAAO,IAAO,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;yCAC5E,CAAC,EAAA;wCAHF,sBAAO,SAGL,EAAC;;;oCAEH,OAAO,CAAC,GAAG,CAAC,yBAAuB,OAAO,GAAG,CAAC,WAAO,cAAY,CAAC,OAAU,CAAC,CAAC;oCAC9E,KAAK,GAAG,cAAY,CAAC;;;oCARa,OAAO,EAAE,CAAA;;yCAWnD,MAAM,KAAK,CAAC;;;;iBACf,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;EAkBE;AAEF,QAAQ,CAAC,2BAA2B,EAAE;IAClC,kBAAkB;IAWlB,SAAS,IAAI,CAAC,IAAY,EAAE,GAAa;QACrC,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI;gBACzC,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,MAAM,GAAa;QACnB,GAAG,EAAE,4CAA4C;QACjD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;KACrB,CAAC;IAEF,IAAI,QAAQ,GAAa;QACrB,GAAG,EAAE,2CAA2C;QAChD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;KACrB,CAAC;IAEF,IAAI,cAAc,GAAa;QAC3B,GAAG,EAAE,2CAA2C;QAChD,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;QAClB,2BAA2B,EAAE,IAAI;KACpC,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAErC,EAAE,CAAC,iCAAiC,EAAE;QAClC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpB,gBAAM,CAAC,MAAM,CAAC;YACV,OAAO,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,EAAE,UAAC,KAAY;YACZ,OAAO,CAAO,KAAM,CAAC,MAAM,KAAK,kDAAkD,CAAC,CAAC;QACxF,CAAC,EAAE,8CAA8C,CAAC,CAAC;IACvD,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE;IAChC,EAAE,CAAC,gBAAgB,EAAE;QACjB,IAAM,SAAS,GAAG,eAAe,CAAC;QAClC,IAAM,aAAa,GAAG,eAAe,CAAC;QAEtC,wBAAwB;QACxB,IAAM,YAAY,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1E,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,gBAAM,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAE1C,sCAAsC;QACtC,IAAM,YAAY,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YAC3D,SAAS,WAAA;SACZ,CAAC,CAAC;QACH,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,gBAAM,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;QAE9C,wDAAwD;QACxD,IAAM,aAAa,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YAC5D,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE,aAAa;SAC/B,CAAC,CAAC;QACH,gBAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,gBAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,gBAAM,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAEzD,kCAAkC;QAClC,gBAAM,CAAC,MAAM,CAAC;YACV,IAAM,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrD,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,aAAa;aAC/B,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,UAAC,KAAU;YACV,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,oCAAoC,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;QAEH,sCAAsC;QACtC,gBAAM,CAAC,MAAM,CAAC;YACV,IAAM,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;gBACrD,SAAS,EAAE,SAAS;gBACpB,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,EAAE,UAAC,KAAU;YACV,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,eAAe,IAAI,KAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;QAEH;YACI,IAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC9D,SAAS,EAAE,SAAS;gBACpB,aAAa,EAAE,aAAa;aAC/B,CAAC,CAAC;YACH,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACjD,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACzC,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC5C,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;SACvD;QAED,iCAAiC;QACjC,gBAAM,CAAC,MAAM,CAAC;YACV,IAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,EAAE,UAAC,KAAU;YACV,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IAEP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE;IAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhB,SAAe,qBAAqB,CAAC,QAA4C;;;;4BAC7E,qBAAM,QAAQ,CAAC,OAAO,EAAE,EAAA;;wBAAxB,SAAwB,CAAC;;;;;KAC5B;IAED,EAAE,CAAC,qCAAqC,EAAE;;;;;;wBAChC,QAAQ,GAAG,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;wBACxE,qBAAM,qBAAqB,CAAC,QAAQ,CAAC,EAAA;;wBAArC,SAAqC,CAAC;;;;;KACzC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE;IACpB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhB,SAAe,cAAc,CAAC,QAAmC;;;gBAC7D,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;wBAC/B,IAAI,gBAAgB,GAAW,IAAI,CAAC;wBACpC,IAAM,OAAO,GAAG,UAAC,WAAmB;4BAChC,IAAI,gBAAgB,IAAI,IAAI,EAAE;gCAC1B,gBAAgB,GAAG,WAAW,CAAC;gCAC/B,OAAO;6BACV;4BACD,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;4BAC1C,IAAI,gBAAgB,GAAG,CAAC,KAAK,WAAW,EAAE;gCACtC,OAAO,CAAC,IAAI,CAAC,CAAC;6BACjB;iCAAM;gCACH,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;6BACzC;wBACL,CAAC,CAAC;wBACF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAClC,CAAC,CAAC,EAAC;;;KACN;IAED,EAAE,CAAC,gBAAgB,EAAE;;;;;;wBACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACd,QAAQ,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;wBAChE,qBAAM,cAAc,CAAC,QAAQ,CAAC,EAAA;;wBAA9B,SAA8B,CAAC;;;;;KAClC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/packages/tests/package.json b/packages/tests/package.json index a60d8dcb3..e6bf32fac 100644 --- a/packages/tests/package.json +++ b/packages/tests/package.json @@ -39,7 +39,7 @@ "scripts": { "test": "exit 1" }, - "tarballHash": "0xeba001b6d7814b9df776d8a5b395ba7080d99ea8a6dfc8fad70888a5f7d01f3e", + "tarballHash": "0x71309e6063699613deb6d5d29f7c87963ee1d71e252f006cdd3ad930e187e47c", "types": "./lib/index.d.ts", "version": "5.0.8" }