diff --git a/.editorconfig b/.editorconfig index 18810d5e..3ee22e5d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,7 +6,7 @@ root = true [*] indent_style = space -indent_size = 4 +indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true diff --git a/buidler.config.ts b/buidler.config.ts index 00a16f4e..54fff118 100644 --- a/buidler.config.ts +++ b/buidler.config.ts @@ -1,9 +1,9 @@ -import { usePlugin, BuidlerConfig } from "@nomiclabs/buidler/config"; +import {usePlugin, BuidlerConfig} from "@nomiclabs/buidler/config"; import path from "path"; import fs from "fs"; // @ts-ignore -import { accounts } from "./test-wallets.js"; -import { eEthereumNetwork } from "./helpers/types"; +import {accounts} from "./test-wallets.js"; +import {eEthereumNetwork} from "./helpers/types"; usePlugin("@nomiclabs/buidler-ethers"); usePlugin("buidler-typechain"); @@ -22,7 +22,7 @@ const HARDFORK = "istanbul"; const INFURA_KEY = ""; const ETHERSCAN_KEY = ""; const MNEMONIC_PATH = "m/44'/60'/0'/0"; -const MNEMONICS: { [network: string]: string } = { +const MNEMONICS: {[network: string]: string} = { [eEthereumNetwork.kovan]: "", [eEthereumNetwork.ropsten]: "", [eEthereumNetwork.main]: "", @@ -50,7 +50,7 @@ const getCommonNetworkConfig = ( const config: BuidlerConfig = { solc: { version: "0.6.8", - optimizer: { enabled: true, runs: 200 }, + optimizer: {enabled: true, runs: 200}, evmVersion: "istanbul", }, typechain: { @@ -63,7 +63,7 @@ const config: BuidlerConfig = { }, defaultNetwork: "buidlerevm", mocha: { - enableTimeouts: false, + timeout: 0, }, networks: { kovan: getCommonNetworkConfig(eEthereumNetwork.kovan, 42), @@ -78,7 +78,7 @@ const config: BuidlerConfig = { throwOnTransactionFailures: true, throwOnCallFailures: true, accounts: accounts.map( - ({ secretKey, balance }: { secretKey: string; balance: string }) => ({ + ({secretKey, balance}: {secretKey: string; balance: string}) => ({ privateKey: secretKey, balance, }) diff --git a/contracts/libraries/openzeppelin-upgradeability/Proxy.sol b/contracts/libraries/openzeppelin-upgradeability/Proxy.sol index 05fc5a47..648efff9 100644 --- a/contracts/libraries/openzeppelin-upgradeability/Proxy.sol +++ b/contracts/libraries/openzeppelin-upgradeability/Proxy.sol @@ -13,7 +13,7 @@ abstract contract Proxy { * @dev Fallback function. * Implemented entirely in `_fallback`. */ - receive() external payable { + fallback() external payable { _fallback(); } diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorBase.sol b/contracts/mocks/oracle/CLAggregators/MockAggregator.sol similarity index 93% rename from contracts/mocks/oracle/CLAggregators/MockAggregatorBase.sol rename to contracts/mocks/oracle/CLAggregators/MockAggregator.sol index d0c86d64..5a6dbb5c 100644 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorBase.sol +++ b/contracts/mocks/oracle/CLAggregators/MockAggregator.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: agpl-3.0 pragma solidity ^0.6.8; -contract MockAggregatorBase { +contract MockAggregator { int256 private _latestAnswer; event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 timestamp); diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorBAT.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorBAT.sol deleted file mode 100644 index 9fb2722d..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorBAT.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorBAT is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorBUSD.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorBUSD.sol deleted file mode 100644 index cfdfc6db..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorBUSD.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorBUSD is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorDAI.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorDAI.sol deleted file mode 100644 index f808e4c5..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorDAI.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorDAI is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorKNC.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorKNC.sol deleted file mode 100644 index 4eae34df..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorKNC.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorKNC is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorLEND.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorLEND.sol deleted file mode 100644 index 66a27d06..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorLEND.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorLEND is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorLINK.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorLINK.sol deleted file mode 100644 index eb16f529..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorLINK.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorLINK is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorMANA.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorMANA.sol deleted file mode 100644 index c6b6efbf..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorMANA.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorMANA is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorMKR.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorMKR.sol deleted file mode 100644 index c73c5099..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorMKR.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorMKR is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorREP.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorREP.sol deleted file mode 100644 index a0bcb6ec..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorREP.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorREP is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorSNX.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorSNX.sol deleted file mode 100644 index 8e0d3cde..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorSNX.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorSNX is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorSUSD.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorSUSD.sol deleted file mode 100644 index f52cd3f6..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorSUSD.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorSUSD is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorTUSD.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorTUSD.sol deleted file mode 100644 index 5f96af10..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorTUSD.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorTUSD is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_DAI_ETH.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_DAI_ETH.sol deleted file mode 100644 index e9526a39..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_DAI_ETH.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUNI_DAI_ETH is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_LEND_ETH.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_LEND_ETH.sol deleted file mode 100644 index 33515c00..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_LEND_ETH.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUNI_LEND_ETH is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_LINK_ETH.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_LINK_ETH.sol deleted file mode 100644 index 9115914e..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_LINK_ETH.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUNI_LINK_ETH is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_MKR_ETH.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_MKR_ETH.sol deleted file mode 100644 index 821bf83a..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_MKR_ETH.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUNI_MKR_ETH is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_SETH_ETH.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_SETH_ETH.sol deleted file mode 100644 index 815c928f..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_SETH_ETH.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUNI_SETH_ETH is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_USDC_ETH.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_USDC_ETH.sol deleted file mode 100644 index 9225d1de..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUNI_USDC_ETH.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUNI_USDC_ETH is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUSD.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUSD.sol deleted file mode 100644 index 83745952..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUSD.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUSD is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUSDC.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUSDC.sol deleted file mode 100644 index 2ac9d729..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUSDC.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUSDC is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorUSDT.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorUSDT.sol deleted file mode 100644 index 8f9889df..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorUSDT.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorUSDT is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorWBTC.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorWBTC.sol deleted file mode 100644 index 05535c8d..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorWBTC.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorWBTC is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/contracts/mocks/oracle/CLAggregators/MockAggregatorZRX.sol b/contracts/mocks/oracle/CLAggregators/MockAggregatorZRX.sol deleted file mode 100644 index 5831bd7e..00000000 --- a/contracts/mocks/oracle/CLAggregators/MockAggregatorZRX.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: agpl-3.0 -pragma solidity ^0.6.8; - -import "./MockAggregatorBase.sol"; - -contract MockAggregatorZRX is MockAggregatorBase { - constructor (int256 _initialAnswer) public MockAggregatorBase(_initialAnswer) {} -} \ No newline at end of file diff --git a/deployed-contracts.json b/deployed-contracts.json index 342aff9c..e437c49c 100644 --- a/deployed-contracts.json +++ b/deployed-contracts.json @@ -1,7 +1,121 @@ { - "Example": { + "MintableERC20": { "buidlerevm": { - "address": "0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F", + "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "LendingPoolAddressesProvider": { + "buidlerevm": { + "address": "0xAb35dEf6f863FC1e91dE4c20A3596b388eB1CFb4", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "LendingPoolAddressesProviderRegistry": { + "buidlerevm": { + "address": "0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "FeeProvider": { + "buidlerevm": { + "address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400" + } + }, + "LendingPoolParametersProvider": { + "buidlerevm": { + "address": "0x2C4603396dE2F08642354A3A102760827FfFe113" + } + }, + "LendingPoolCore": { + "buidlerevm": { + "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA" + } + }, + "LendingPoolConfigurator": { + "buidlerevm": { + "address": "0xC30DAE48c620d1C1f8Ca081547f905C7eE7c6b76" + } + }, + "LendingPoolDataProvider": { + "buidlerevm": { + "address": "0x612719Ace03A8281188d61612A9f40D1da3ca420" + } + }, + "LendingPool": { + "buidlerevm": { + "address": "0x820ED3d0675676203514f5fd76E5Ac40c9F0c4Bd" + } + }, + "PriceOracle": { + "buidlerevm": { + "address": "0xe1B3b8F6b298b52bCd15357ED29e65e66a4045fF", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "MockAggregator": { + "buidlerevm": { + "address": "0xD83D2773a7873ae2b5f8Fb92097e20a8C64F691E", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "ChainlinkProxyPriceProvider": { + "buidlerevm": { + "address": "0x474d9b0D5F1Bb1602711F9346743a7a7478d6f52", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "LendingRateOracle": { + "buidlerevm": { + "address": "0xFc01AF83D78742DfD42631a352e33f8098e7274B", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "DefaultReserveInterestRateStrategy": { + "buidlerevm": { + "address": "0x603A373A1571783bD82b708C20a5A4b019BAB78F", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "LendingPoolLiquidationManager": { + "buidlerevm": { + "address": "0xFe230c227D3724015d0dE3dBEc831825f1ed1f59", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "MockOneSplit": { + "buidlerevm": { + "address": "0xd44937448A9f229bfae84e7d256810Ba4C4a93cC", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "OneSplitAdapter": { + "buidlerevm": { + "address": "0x70c5a4348710Fa80eE8f2bD2eD5243d1bAB90752", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "TokenDistributor": { + "buidlerevm": { + "address": "0x96049b850bE3415b4d7DcFECA2e6eE02ee580488", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "InitializableAdminUpgradeabilityProxy": { + "buidlerevm": { + "address": "0xbCf57D16d9d63aDDea3c2056A1de2A33ebD353F0", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "MockFlashLoanReceiver": { + "buidlerevm": { + "address": "0xe5a5a5b78F165C875EE2264a8743570176eA39d9", + "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" + } + }, + "WalletBalanceProvider": { + "buidlerevm": { + "address": "0x828C9C41Fae6113C1DEA9056Dcd9C85A19002d52", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } } diff --git a/helpers/constants.ts b/helpers/constants.ts index c366b966..d51891e7 100644 --- a/helpers/constants.ts +++ b/helpers/constants.ts @@ -1,9 +1,641 @@ -import { eEthereumNetwork, tEthereumAddress } from "./types"; +import { + iAssetBase, + iAavePoolAssets, + IMarketRates, + iAssetAggregatorBase, + AavePools, + iMultiPoolsAssets, + IReserveParams, + tEthereumAddress, + iBasicDistributionParams, +} from "./types"; +import BigNumber from "bignumber.js"; +import {getParamPerPool} from "./contracts-helpers"; -export const ZERO_ADDRESS: tEthereumAddress = - "0x0000000000000000000000000000000000000000"; -export const ONE_ADDRESS = "0x0000000000000000000000000000000000000001"; +// ---------------- +// MATH +// ---------------- + +export const WAD = Math.pow(10, 18).toString(); +export const HALF_WAD = new BigNumber(WAD).multipliedBy(0.5).toString(); +export const RAY = new BigNumber(10).exponentiatedBy(27).toFixed(); +export const HALF_RAY = new BigNumber(RAY).multipliedBy(0.5).toFixed(); +export const WAD_RAY_RATIO = Math.pow(10, 9).toString(); +export const oneEther = new BigNumber(Math.pow(10, 18)); +export const oneRay = new BigNumber(Math.pow(10, 27)); export const MAX_UINT_AMOUNT = "115792089237316195423570985008687907853269984665640564039457584007913129639935"; + +// ---------------- +// PROTOCOL GLOBAL PARAMS +// ---------------- +export const OPTIMAL_UTILIZATION_RATE = new BigNumber(0.8).times(RAY); +export const EXCESS_UTILIZATION_RATE = new BigNumber(0.2).times(RAY); +export const ONE_YEAR = "31536000"; +export const APPROVAL_AMOUNT_LENDING_POOL_CORE = "1000000000000000000000000000"; +export const TOKEN_DISTRIBUTOR_PERCENTAGE_BASE = "10000"; +export const MOCK_USD_PRICE_IN_WEI = "5848466240000000"; +export const USD_ADDRESS = "0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96"; export const MOCK_ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; -export const WAD = Math.pow(10, 18).toString(); +export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +export const ONE_ADDRESS = "0x0000000000000000000000000000000000000001"; + +// ---------------- +// COMMON PROTOCOL PARAMS ACROSS POOLS AND NETWORKS +// ---------------- + +export const ALL_AAVE_RESERVES_SYMBOLS = [ + [ + "ETH", + "DAI", + "LEND", + "TUSD", + "BAT", + "USDC", + "USDT", + "SUSD", + "ZRX", + "MKR", + "WBTC", + "LINK", + "KNC", + "MANA", + "REP", + "SNX", + "BUSD", + "UNI_DAI_ETH", + "UNI_USDC_ETH", + "UNI_SETH_ETH", + "UNI_LINK_ETH", + "UNI_MKR_ETH", + "UNI_LEND_ETH", + ], +]; + +export const MOCK_CHAINLINK_AGGREGATORS_PRICES: iAssetAggregatorBase = { + DAI: oneEther.multipliedBy("0.00369068412860").toFixed(), + TUSD: oneEther.multipliedBy("0.00364714136416").toFixed(), + USDC: oneEther.multipliedBy("0.00367714136416").toFixed(), + LEND: oneEther.multipliedBy("0.00003620948469").toFixed(), + BAT: oneEther.multipliedBy("0.00137893825230").toFixed(), + USDT: oneEther.multipliedBy("0.00369068412860").toFixed(), + SUSD: oneEther.multipliedBy("0.00364714136416").toFixed(), + MKR: oneEther.multipliedBy("2.508581").toFixed(), + REP: oneEther.multipliedBy("0.048235").toFixed(), + ZRX: oneEther.multipliedBy("0.001151").toFixed(), + WBTC: oneEther.multipliedBy("47.332685").toFixed(), + LINK: oneEther.multipliedBy("0.009955").toFixed(), + KNC: oneEther.multipliedBy("0.001072").toFixed(), + MANA: oneEther.multipliedBy("0.000158").toFixed(), + SNX: oneEther.multipliedBy("0.00442616").toFixed(), + BUSD: oneEther.multipliedBy("0.00736484").toFixed(), + USD: MOCK_USD_PRICE_IN_WEI, + UNI_DAI_ETH: oneEther.multipliedBy("2.1").toFixed(), + UNI_USDC_ETH: oneEther.multipliedBy("2.1").toFixed(), + UNI_SETH_ETH: oneEther.multipliedBy("2.1").toFixed(), + UNI_LEND_ETH: oneEther.multipliedBy("2.1").toFixed(), + UNI_LINK_ETH: oneEther.multipliedBy("2.1").toFixed(), + UNI_MKR_ETH: oneEther.multipliedBy("2.1").toFixed(), +}; + +export const ALL_ASSETS_INITIAL_PRICES: iAssetBase = { + ...MOCK_CHAINLINK_AGGREGATORS_PRICES, + ETH: oneEther.toFixed(), +}; + +export const LENDING_RATE_ORACLE_RATES_COMMON: iAavePoolAssets = { + ETH: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + DAI: { + borrowRate: oneRay.multipliedBy(0.039).toFixed(), + }, + TUSD: { + borrowRate: oneRay.multipliedBy(0.035).toFixed(), + }, + USDC: { + borrowRate: oneRay.multipliedBy(0.039).toFixed(), + }, + SUSD: { + borrowRate: oneRay.multipliedBy(0.035).toFixed(), + }, + USDT: { + borrowRate: oneRay.multipliedBy(0.035).toFixed(), + }, + BAT: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + LEND: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + LINK: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + KNC: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + REP: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + MKR: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + MANA: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + WBTC: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + ZRX: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + SNX: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + BUSD: { + borrowRate: oneRay.multipliedBy(0.05).toFixed(), + }, +}; + +export const getReservesConfigByPool = ( + pool: AavePools +): iMultiPoolsAssets => + getParamPerPool>( + { + [AavePools.proto]: { + DAI: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.05) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "75", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + TUSD: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "75", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + USDC: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "75", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "6", + }, + USDT: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "6", + }, + SUSD: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + LEND: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "115", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + BAT: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + ETH: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "75", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + LINK: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "65", + liquidationThreshold: "70", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + WBTC: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "115", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "8", + }, + KNC: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + REP: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + MKR: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + MANA: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + ZRX: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "60", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: "18", + }, + SNX: { + baseVariableBorrowRate: new BigNumber(0.03) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.12) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "65", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + BUSD: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.14).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "110", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + }, + [AavePools.secondary]: { + ETH: { + baseVariableBorrowRate: new BigNumber(0) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.08) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + DAI: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.07) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.06).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + USDC: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.07) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.06).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "6", + }, + USDT: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.07) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.06).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "-1", + liquidationThreshold: "80", + liquidationBonus: "105", + borrowingEnabled: true, + stableBorrowRateEnabled: false, + reserveDecimals: "6", + }, + UNI_DAI_ETH: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "68", + liquidationThreshold: "73", + liquidationBonus: "110", + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + UNI_USDC_ETH: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "68", + liquidationThreshold: "73", + liquidationBonus: "110", + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + UNI_SETH_ETH: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "48", + liquidationThreshold: "66", + liquidationBonus: "110", + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + UNI_LEND_ETH: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "51", + liquidationThreshold: "66", + liquidationBonus: "110", + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + UNI_LINK_ETH: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "63", + liquidationThreshold: "68", + liquidationBonus: "110", + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + UNI_MKR_ETH: { + baseVariableBorrowRate: new BigNumber(0.01) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope1: new BigNumber(0.04) + .multipliedBy(oneRay) + .toFixed(), + variableRateSlope2: new BigNumber(0.5).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.16).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.6).multipliedBy(oneRay).toFixed(), + baseLTVAsCollateral: "48", + liquidationThreshold: "66", + liquidationBonus: "110", + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: "18", + }, + }, + }, + pool + ); + +export const getFeeDistributionParamsCommon = ( + receiver: tEthereumAddress +): iBasicDistributionParams => { + const receivers = [receiver, ZERO_ADDRESS]; + const percentages = ["2000", "8000"]; + return { + receivers, + percentages, + }; +}; diff --git a/helpers/contracts-helpers.ts b/helpers/contracts-helpers.ts index ec76568b..235c50dc 100644 --- a/helpers/contracts-helpers.ts +++ b/helpers/contracts-helpers.ts @@ -1,9 +1,38 @@ import {Contract, Signer, utils} from "ethers"; import {getDb, BRE} from "./misc-utils"; -import {tEthereumAddress, eContractid} from "./types"; +import { + tEthereumAddress, + eContractid, + tStringTokenSmallUnits, + eEthereumNetwork, + AavePools, + iParamsPerNetwork, + iParamsPerPool, +} from "./types"; import {Example} from "../types/Example"; import {LendingPoolAddressesProvider} from "../types/LendingPoolAddressesProvider"; +import {MintableErc20} from "../types/MintableErc20"; +import {LendingPoolAddressesProviderRegistry} from "../types/LendingPoolAddressesProviderRegistry"; +import {FeeProvider} from "../types/FeeProvider"; +import {LendingPoolParametersProvider} from "../types/LendingPoolParametersProvider"; +import {LendingPoolCore} from "../types/LendingPoolCore"; +import {LendingPoolConfigurator} from "../types/LendingPoolConfigurator"; +import {readArtifact} from "@nomiclabs/buidler/plugins"; +import {Artifact} from "@nomiclabs/buidler/types"; +import {LendingPoolDataProvider} from "../types/LendingPoolDataProvider"; +import {LendingPool} from "../types/LendingPool"; +import {PriceOracle} from "../types/PriceOracle"; +import {MockAggregator} from "../types/MockAggregator"; +import {LendingRateOracle} from "../types/LendingRateOracle"; +import {DefaultReserveInterestRateStrategy} from "../types/DefaultReserveInterestRateStrategy"; +import {LendingPoolLiquidationManager} from "../types/LendingPoolLiquidationManager"; +import {MockOneSplit} from "../types/MockOneSplit"; +import {OneSplitAdapter} from "../types/OneSplitAdapter"; +import {TokenDistributor} from "../types/TokenDistributor"; +import {InitializableAdminUpgradeabilityProxy} from "../types/InitializableAdminUpgradeabilityProxy"; +import {MockFlashLoanReceiver} from "../types/MockFlashLoanReceiver"; +import {WalletBalanceProvider} from "../types/WalletBalanceProvider"; export const registerContractInJsonDb = async ( contractId: string, @@ -33,6 +62,16 @@ export const registerContractInJsonDb = async ( .write(); }; +export const insertContractAddressInDb = async ( + id: eContractid, + address: tEthereumAddress +) => + await getDb() + .set(`${id}.${BRE.network.name}`, { + address, + }) + .write(); + export const getEthersSigners = async (): Promise => await Promise.all(await BRE.ethers.signers()); @@ -53,18 +92,20 @@ export const decodeAbiNumber = (data: string): number => const deployContract = async ( contractName: string, args: any[] -): Promise => - (await (await BRE.ethers.getContract(contractName)).deploy( +): Promise => { + const contract = (await (await BRE.ethers.getContract(contractName)).deploy( ...args )) as ContractType; + await registerContractInJsonDb(contractName, contract); + return contract; +}; + const getContract = async ( contractName: string, address: string ): Promise => - (await (await BRE.ethers.getContract(contractName)).attach( - address - )) as ContractType; + (await BRE.ethers.getContractAt(contractName, address)) as ContractType; export const deployExampleContract = async () => await deployContract(eContractid.Example, []); @@ -75,11 +116,336 @@ export const deployLendingPoolAddressesProvider = async () => [] ); -export const getExampleContract = async (address?: tEthereumAddress) => { - return await getContract( - eContractid.Example, +export const deployLendingPoolAddressesProviderRegistry = async () => + await deployContract( + eContractid.LendingPoolAddressesProviderRegistry, + [] + ); + +export const deployFeeProvider = async () => + await deployContract(eContractid.FeeProvider, []); + +export const deployLendingPoolParametersProvider = async () => + await deployContract( + eContractid.LendingPoolParametersProvider, + [] + ); + +export const deployLendingPoolCore = async () => { + const CoreLibraryFactory = await BRE.ethers.getContractFactory( + eContractid.CoreLibrary + ); + const coreLibrary = await CoreLibraryFactory.deploy(); + await coreLibrary.deployed(); + + const lendingPoolCoreArtifact = await readArtifact( + BRE.config.paths.artifacts, + eContractid.LendingPoolCore + ); + const linkedBytecode = linkBytecode(lendingPoolCoreArtifact, { + [eContractid.CoreLibrary]: coreLibrary.address, + }); + const LendingPoolCoreFactory = await BRE.ethers.getContractFactory( + lendingPoolCoreArtifact.abi, + linkedBytecode + ); + + const lendingPoolCore = await LendingPoolCoreFactory.deploy({ + gasLimit: 9500000, + }); + return (await lendingPoolCore.deployed()) as LendingPoolCore; +}; + +export const deployLendingPoolConfigurator = async () => + await deployContract( + eContractid.LendingPoolConfigurator, + [] + ); + +export const deployLendingPoolDataProvider = async () => + await deployContract( + eContractid.LendingPoolDataProvider, + [] + ); + +export const deployLendingPool = async () => + await deployContract(eContractid.LendingPool, []); + +export const deployPriceOracle = async () => + await deployContract(eContractid.PriceOracle, []); + +export const deployMockAggregator = async (price: tStringTokenSmallUnits) => + await deployContract(eContractid.MockAggregator, [price]); + +export const deployChainlinkProxyPriceProvider = async ([ + assetsAddresses, + sourcesAddresses, + fallbackOracleAddress, +]: [tEthereumAddress[], tEthereumAddress[], tEthereumAddress]) => + await deployContract( + eContractid.ChainlinkProxyPriceProvider, + [assetsAddresses, sourcesAddresses, fallbackOracleAddress] + ); + +export const deployLendingRateOracle = async () => + await deployContract(eContractid.LendingRateOracle, []); + +export const deployLendingPoolLiquidationManager = async () => + await deployContract( + eContractid.LendingPoolLiquidationManager, + [] + ); + +export const deployTokenDistributor = async () => + await deployContract(eContractid.TokenDistributor, []); + +export const deployInitializableAdminUpgradeabilityProxy = async () => + await deployContract( + eContractid.InitializableAdminUpgradeabilityProxy, + [] + ); + +export const deployMockFlashLoanReceiver = async ( + addressesProvider: tEthereumAddress +) => + await deployContract( + eContractid.MockFlashLoanReceiver, + [addressesProvider] + ); + +export const deployWalletBalancerProvider = async ( + addressesProvider: tEthereumAddress +) => + await deployContract( + eContractid.WalletBalanceProvider, + [addressesProvider] + ); + +export const deployMockOneSplit = async (tokenToBurn: tEthereumAddress) => + await deployContract(eContractid.MockOneSplit, [tokenToBurn]); + +export const deployOneSplitAdapter = async () => + await deployContract(eContractid.OneSplitAdapter, []); + +export const deployMintableErc20 = async ([name, symbol, decimals]: [ + string, + string, + number +]) => + await deployContract(eContractid.MintableERC20, [ + name, + symbol, + decimals, + ]); + +export const deployDefaultReserveInterestRateStrategy = async ([ + reserve, + addressesProvider, + baseVariableBorrowRate, + variableSlope1, + variableSlope2, + stableSlope1, + stableSlope2, +]: [ + tEthereumAddress, + tEthereumAddress, + string, + string, + string, + string, + string +]) => + await deployContract( + eContractid.DefaultReserveInterestRateStrategy, + [ + reserve, + addressesProvider, + baseVariableBorrowRate, + variableSlope1, + variableSlope2, + stableSlope1, + stableSlope2, + ] + ); + +export const getLendingPoolAddressesProvider = async ( + address?: tEthereumAddress +) => { + return await getContract( + eContractid.LendingPoolAddressesProvider, address || - (await getDb().get(`${eContractid.Example}.${BRE.network.name}`).value()) - .address + ( + await getDb() + .get( + `${eContractid.LendingPoolAddressesProvider}.${BRE.network.name}` + ) + .value() + ).address ); }; + +export const getLendingPoolConfiguratorProxy = async ( + address?: tEthereumAddress +) => { + return await getContract( + eContractid.LendingPoolConfigurator, + address || + ( + await getDb() + .get(`${eContractid.LendingPoolConfigurator}.${BRE.network.name}`) + .value() + ).address + ); +}; + +export const getLendingPoolProxy = async (address?: tEthereumAddress) => { + return await getContract( + eContractid.LendingPool, + address || + ( + await getDb() + .get(`${eContractid.LendingPool}.${BRE.network.name}`) + .value() + ).address + ); +}; + +export const getLendingPoolCoreProxy = async (address?: tEthereumAddress) => { + const CoreLibraryFactory = await BRE.ethers.getContractFactory( + eContractid.CoreLibrary + ); + const coreLibrary = await CoreLibraryFactory.deploy(); + await coreLibrary.deployed(); + + const lendingPoolCoreArtifact = await readArtifact( + BRE.config.paths.artifacts, + eContractid.LendingPoolCore + ); + const linkedBytecode = linkBytecode(lendingPoolCoreArtifact, { + [eContractid.CoreLibrary]: coreLibrary.address, + }); + const LendingPoolCoreFactory = await BRE.ethers.getContractFactory( + lendingPoolCoreArtifact.abi, + linkedBytecode + ); + + return ( + await LendingPoolCoreFactory.attach( + address || + ( + await getDb() + .get(`${eContractid.LendingPoolCore}.${BRE.network.name}`) + .value() + ).address + ) + ); +}; + +export const getFeeProvider = async (address?: tEthereumAddress) => { + return await getContract( + eContractid.FeeProvider, + address || + ( + await getDb() + .get(`${eContractid.FeeProvider}.${BRE.network.name}`) + .value() + ).address + ); +}; + +export const getLendingPoolParametersProvider = async ( + address?: tEthereumAddress +) => { + return await getContract( + eContractid.LendingPoolParametersProvider, + address || + ( + await getDb() + .get( + `${eContractid.LendingPoolParametersProvider}.${BRE.network.name}` + ) + .value() + ).address + ); +}; + +export const getLendingPoolDataProvider = async ( + address?: tEthereumAddress +) => { + return await getContract( + eContractid.LendingPoolDataProvider, + address || + ( + await getDb() + .get(`${eContractid.LendingPoolDataProvider}.${BRE.network.name}`) + .value() + ).address + ); +}; + +export const getPriceOracle = async (address?: tEthereumAddress) => { + return await getContract( + eContractid.PriceOracle, + address || + ( + await getDb() + .get(`${eContractid.PriceOracle}.${BRE.network.name}`) + .value() + ).address + ); +}; + +const linkBytecode = (artifact: Artifact, libraries: any) => { + let bytecode = artifact.bytecode; + + for (const [fileName, fileReferences] of Object.entries( + artifact.linkReferences + )) { + for (const [libName, fixups] of Object.entries(fileReferences)) { + const addr = libraries[libName]; + + if (addr === undefined) { + continue; + } + + for (const fixup of fixups) { + bytecode = + bytecode.substr(0, 2 + fixup.start * 2) + + addr.substr(2) + + bytecode.substr(2 + (fixup.start + fixup.length) * 2); + } + } + } + + return bytecode; +}; + +export const getParamPerNetwork = ( + {kovan, ropsten, main}: iParamsPerNetwork, + network: eEthereumNetwork +) => { + switch (network) { + case eEthereumNetwork.kovan: + return kovan; + case eEthereumNetwork.ropsten: + return ropsten; + case eEthereumNetwork.main: + return main; + default: + return main; + } +}; + +export const getParamPerPool = ( + {proto, secondary}: iParamsPerPool, + pool: AavePools +) => { + switch (pool) { + case AavePools.proto: + return proto; + case AavePools.secondary: + return secondary; + default: + return proto; + } +}; diff --git a/helpers/misc-utils.ts b/helpers/misc-utils.ts index 33107e3e..cf3032ce 100644 --- a/helpers/misc-utils.ts +++ b/helpers/misc-utils.ts @@ -26,3 +26,8 @@ export const sleep = (milliseconds: number) => { }; export const createRandomAddress = () => Wallet.createRandom().address; + +export const evmSnapshot = () => BRE.ethereum.send("evm_snapshot", []); + +export const evmRevert = async (id: string) => + BRE.ethereum.send("evm_revert", [id]); diff --git a/helpers/types.ts b/helpers/types.ts index 42072f66..60f360d1 100644 --- a/helpers/types.ts +++ b/helpers/types.ts @@ -4,12 +4,39 @@ export enum eEthereumNetwork { buidlerevm = "buidlerevm", kovan = "kovan", ropsten = "ropsten", - main = "main" + main = "main", +} + +export enum AavePools { + proto = "proto", + secondary = "secondary", } export enum eContractid { Example = "Example", - LendingPoolAddressesProvider = "LendingPoolAddressesProvider" + LendingPoolAddressesProvider = "LendingPoolAddressesProvider", + MintableERC20 = "MintableERC20", + LendingPoolAddressesProviderRegistry = "LendingPoolAddressesProviderRegistry", + FeeProvider = "FeeProvider", + LendingPoolParametersProvider = "LendingPoolParametersProvider", + LendingPoolCore = "LendingPoolCore", + LendingPoolConfigurator = "LendingPoolConfigurator", + CoreLibrary = "CoreLibrary", + LendingPoolDataProvider = "LendingPoolDataProvider", + LendingPool = "LendingPool", + PriceOracle = "PriceOracle", + Proxy = "Proxy", + MockAggregator = "MockAggregator", + LendingRateOracle = "LendingRateOracle", + ChainlinkProxyPriceProvider = "ChainlinkProxyPriceProvider", + DefaultReserveInterestRateStrategy = "DefaultReserveInterestRateStrategy", + LendingPoolLiquidationManager = "LendingPoolLiquidationManager", + MockOneSplit = "MockOneSplit", + OneSplitAdapter = "OneSplitAdapter", + TokenDistributor = "TokenDistributor", + InitializableAdminUpgradeabilityProxy = "InitializableAdminUpgradeabilityProxy", + MockFlashLoanReceiver = "MockFlashLoanReceiver", + WalletBalanceProvider = "WalletBalanceProvider", } export type tEthereumAddress = string; @@ -17,3 +44,156 @@ export type tStringTokenBigUnits = string; // 1 ETH, or 10e6 USDC or 10e18 DAI export type tBigNumberTokenBigUnits = BigNumber; export type tStringTokenSmallUnits = string; // 1 wei, or 1 basic unit of USDC, or 1 basic unit of DAI export type tBigNumberTokenSmallUnits = BigNumber; + +export interface iAssetBase { + ETH: T; + DAI: T; + TUSD: T; + USDC: T; + USDT: T; + SUSD: T; + LEND: T; + BAT: T; + REP: T; + MKR: T; + LINK: T; + KNC: T; + WBTC: T; + MANA: T; + ZRX: T; + SNX: T; + BUSD: T; + + USD: T; + + UNI_DAI_ETH: T; + UNI_USDC_ETH: T; + UNI_SETH_ETH: T; + UNI_LEND_ETH: T; + UNI_MKR_ETH: T; + UNI_LINK_ETH: T; +} + +export type iAssetsWithoutETH = Omit, "ETH">; + +export type iAssetsWithoutUSD = Omit, "USD">; + +export type iAavePoolAssets = Pick< + iAssetsWithoutUSD, + | "ETH" + | "DAI" + | "TUSD" + | "USDC" + | "USDT" + | "SUSD" + | "LEND" + | "BAT" + | "REP" + | "MKR" + | "LINK" + | "KNC" + | "WBTC" + | "MANA" + | "ZRX" + | "SNX" + | "BUSD" +>; + +export type iUniAssets = Pick< + iAssetBase, + | "UNI_DAI_ETH" + | "UNI_USDC_ETH" + | "UNI_SETH_ETH" + | "UNI_LEND_ETH" + | "UNI_MKR_ETH" + | "UNI_LINK_ETH" +>; + +export type iAaveSecondPoolAssets = Pick< + iAssetBase, + | "ETH" + | "DAI" + | "USDC" + | "USDT" + | "UNI_DAI_ETH" + | "UNI_USDC_ETH" + | "UNI_SETH_ETH" + | "UNI_LEND_ETH" + | "UNI_MKR_ETH" + | "UNI_LINK_ETH" +>; + +export type iMultiPoolsAssets = + | iAavePoolAssets + | iAaveSecondPoolAssets; + +export type iAavePoolTokens = Omit, "ETH">; + +export type iAssetAggregatorBase = iAssetsWithoutETH; + +export enum TokenContractId { + DAI = "DAI", + LEND = "LEND", + TUSD = "TUSD", + BAT = "BAT", + ETH = "ETH", + USDC = "USDC", + USDT = "USDT", + SUSD = "SUSD", + ZRX = "ZRX", + MKR = "MKR", + WBTC = "WBTC", + LINK = "LINK", + KNC = "KNC", + MANA = "MANA", + REP = "REP", + SNX = "SNX", + BUSD = "BUSD", + USD = "USD", + UNI_DAI_ETH = "UNI_DAI_ETH", + UNI_USDC_ETH = "UNI_USDC_ETH", + UNI_SETH_ETH = "UNI_SETH_ETH", + UNI_LINK_ETH = "UNI_LINK_ETH", + UNI_MKR_ETH = "UNI_MKR_ETH", + UNI_LEND_ETH = "UNI_LEND_ETH", +} + +export interface IReserveParams + extends IReserveBorrowParams, + IReserveCollateralParams {} + +export interface IReserveBorrowParams { + baseVariableBorrowRate: string; + variableRateSlope1: string; + variableRateSlope2: string; + stableRateSlope1: string; + stableRateSlope2: string; + borrowingEnabled: boolean; + stableBorrowRateEnabled: boolean; + reserveDecimals: string; +} + +export interface IReserveCollateralParams { + baseLTVAsCollateral: string; + liquidationThreshold: string; + liquidationBonus: string; +} +export interface IMarketRates { + borrowRate: string; +} + +export interface iParamsPerNetwork { + [eEthereumNetwork.kovan]: T; + [eEthereumNetwork.ropsten]: T; + [eEthereumNetwork.main]: T; +} + +export interface iParamsPerPool { + [AavePools.proto]: T; + [AavePools.secondary]: T; +} + +export interface iBasicDistributionParams { + receivers: string[]; + percentages: string[]; +} diff --git a/test/__setup.spec.ts b/test/__setup.spec.ts new file mode 100644 index 00000000..fe86f014 --- /dev/null +++ b/test/__setup.spec.ts @@ -0,0 +1,629 @@ +import rawBRE from "@nomiclabs/buidler"; +import {deployMockContract, MockContract} from "ethereum-waffle"; +import { + deployLendingPoolAddressesProvider, + deployMintableErc20, + deployLendingPoolAddressesProviderRegistry, + deployFeeProvider, + deployLendingPoolParametersProvider, + deployLendingPoolCore, + deployLendingPoolConfigurator, + deployLendingPoolDataProvider, + deployLendingPool, + deployPriceOracle, + getLendingPoolConfiguratorProxy, + getLendingPoolCoreProxy, + deployMockAggregator, + deployChainlinkProxyPriceProvider, + deployLendingRateOracle, + deployDefaultReserveInterestRateStrategy, + deployLendingPoolLiquidationManager, + deployMockOneSplit, + deployOneSplitAdapter, + deployTokenDistributor, + deployInitializableAdminUpgradeabilityProxy, + deployMockFlashLoanReceiver, + registerContractInJsonDb, + deployWalletBalancerProvider, + getFeeProvider, + getLendingPoolParametersProvider, + getLendingPoolDataProvider, + getLendingPoolProxy, + insertContractAddressInDb, +} from "../helpers/contracts-helpers"; +import {LendingPoolAddressesProvider} from "../types/LendingPoolAddressesProvider"; +import {evmSnapshot} from "../helpers/misc-utils"; +import {Wallet, ContractTransaction, ethers} from "ethers"; +import IERC20MintableBurnableArtifact from "../artifacts/IERC20MintableBurnable.json"; +import { + TokenContractId, + eContractid, + iAssetBase, + tEthereumAddress, + iAssetAggregatorBase, + IMarketRates, + iMultiPoolsAssets, + AavePools, + IReserveParams, +} from "../helpers/types"; +import {MintableErc20} from "../types/MintableErc20"; +import { + MOCK_USD_PRICE_IN_WEI, + ALL_ASSETS_INITIAL_PRICES, + MOCK_ETH_ADDRESS, + USD_ADDRESS, + MOCK_CHAINLINK_AGGREGATORS_PRICES, + LENDING_RATE_ORACLE_RATES_COMMON, + getReservesConfigByPool, + getFeeDistributionParamsCommon, + ZERO_ADDRESS, +} from "../helpers/constants"; +import {PriceOracle} from "../types/PriceOracle"; +// @ts-ignore +import {accounts} from "../test-wallets.js"; +import {MockAggregator} from "../types/MockAggregator"; +import {LendingRateOracle} from "../types/LendingRateOracle"; +import {LendingPoolCore} from "../types/LendingPoolCore"; +import {LendingPoolConfigurator} from "../types/LendingPoolConfigurator"; + +const deployAllMockTokens = async ( + deployer: Wallet, + useDoppelganger: boolean +) => { + const tokens: {[symbol: string]: MockContract | MintableErc20} = {}; + + for (const tokenSymbol of Object.keys(TokenContractId)) { + if (tokenSymbol !== "ETH") { + tokens[tokenSymbol] = useDoppelganger + ? await deployMockContract(deployer, IERC20MintableBurnableArtifact.abi) + : await deployMintableErc20([tokenSymbol, tokenSymbol, 18]); + } + } + + return tokens; +}; + +const setInitialAssetPricesInOracle = async ( + prices: iAssetBase, + assetsAddresses: iAssetBase, + priceOracleInstance: PriceOracle +) => { + for (const [assetSymbol, price] of Object.entries(prices) as [ + string, + string + ][]) { + const assetAddressIndex = Object.keys(assetsAddresses).findIndex( + (value) => value === assetSymbol + ); + const [, assetAddress] = (Object.entries(assetsAddresses) as [ + string, + string + ][])[assetAddressIndex]; + await waitForTx( + await priceOracleInstance.setAssetPrice(assetAddress, price) + ); + } +}; + +const deployAllMockAggregators = async ( + initialPrices: iAssetAggregatorBase +) => { + const aggregators: {[tokenSymbol: string]: MockAggregator} = {}; + for (const tokenContractName of Object.keys(initialPrices)) { + if (tokenContractName !== "ETH") { + const priceIndex = Object.keys(initialPrices).findIndex( + (value) => value === tokenContractName + ); + const [, price] = (Object.entries(initialPrices) as [string, string][])[ + priceIndex + ]; + aggregators[tokenContractName] = await deployMockAggregator(price); + } + } + return aggregators; +}; + +const getPairsTokenAggregator = ( + allAssetsAddresses: { + [tokenSymbol: string]: tEthereumAddress; + }, + aggregatorsAddresses: {[tokenSymbol: string]: tEthereumAddress} +): [string[], string[]] => { + const {ETH, ...assetsAddressesWithoutEth} = allAssetsAddresses; + + const pairs = Object.entries(assetsAddressesWithoutEth).map( + ([tokenSymbol, tokenAddress]) => { + if (tokenSymbol !== "ETH") { + const aggregatorAddressIndex = Object.keys( + aggregatorsAddresses + ).findIndex((value) => value === tokenSymbol); + const [, aggregatorAddress] = (Object.entries(aggregatorsAddresses) as [ + string, + tEthereumAddress + ][])[aggregatorAddressIndex]; + return [tokenAddress, aggregatorAddress]; + } + } + ); + + const mappedPairs = pairs.map(([asset]) => asset); + const mappedAggregators = pairs.map(([, source]) => source); + + return [mappedPairs, mappedAggregators]; +}; + +const setInitialMarketRatesInRatesOracle = async ( + marketRates: iMultiPoolsAssets, + assetsAddresses: {[x: string]: tEthereumAddress}, + lendingRateOracleInstance: LendingRateOracle +) => { + for (const [assetSymbol, {borrowRate}] of Object.entries(marketRates) as [ + string, + IMarketRates + ][]) { + const assetAddressIndex = Object.keys(assetsAddresses).findIndex( + (value) => value === assetSymbol + ); + const [, assetAddress] = (Object.entries(assetsAddresses) as [ + string, + string + ][])[assetAddressIndex]; + await lendingRateOracleInstance.setMarketBorrowRate( + assetAddress, + borrowRate + ); + } +}; + +const initReserves = async ( + reservesParams: iMultiPoolsAssets, + tokenAddresses: {[symbol: string]: tEthereumAddress}, + lendingPoolAddressesProvider: LendingPoolAddressesProvider, + lendingPoolCore: LendingPoolCore, + lendingPoolConfigurator: LendingPoolConfigurator, + aavePool: AavePools +) => { + if (aavePool !== AavePools.proto && aavePool !== AavePools.secondary) { + console.log(`Invalid Aave pool ${aavePool}`); + process.exit(1); + } + + for (let [assetSymbol, {reserveDecimals}] of Object.entries( + reservesParams + ) as [string, IReserveParams][]) { + const assetAddressIndex = Object.keys(tokenAddresses).findIndex( + (value) => value === assetSymbol + ); + const [, tokenAddress] = (Object.entries(tokenAddresses) as [ + string, + string + ][])[assetAddressIndex]; + const reserveInitialized = await lendingPoolCore.getReserveIsActive( + tokenAddress + ); + + if (reserveInitialized) { + console.log( + `Reserve ${assetSymbol} is already active, skipping configuration` + ); + continue; + } + + try { + const reserveParamIndex = Object.keys(reservesParams).findIndex( + (value) => value === assetSymbol + ); + const [ + , + { + baseVariableBorrowRate, + variableRateSlope1, + variableRateSlope2, + stableRateSlope1, + stableRateSlope2, + }, + ] = (Object.entries(reservesParams) as [string, IReserveParams][])[ + reserveParamIndex + ]; + const rateStrategyContract = await deployDefaultReserveInterestRateStrategy( + [ + tokenAddress, + lendingPoolAddressesProvider.address, + baseVariableBorrowRate, + variableRateSlope1, + variableRateSlope2, + stableRateSlope1, + stableRateSlope2, + ] + ); + + if (process.env.POOL === AavePools.secondary) { + if (assetSymbol.search("UNI") === -1) { + assetSymbol = `Uni${assetSymbol}`; + } else { + assetSymbol = assetSymbol.replace(/_/g, "").replace("UNI", "Uni"); + } + } + + await lendingPoolConfigurator.initReserveWithData( + tokenAddress, + `Aave Interest bearing ${assetSymbol}`, + `a${assetSymbol}`, + reserveDecimals, + rateStrategyContract.address + ); + } catch (e) { + console.log( + `Reserve initialization for ${assetSymbol} failed with error ${e}. Skipped.` + ); + } + } +}; + +const enableReservesToBorrow = async ( + reservesParams: iMultiPoolsAssets, + tokenAddresses: {[symbol: string]: tEthereumAddress}, + lendingPoolCore: LendingPoolCore, + lendingPoolConfigurator: LendingPoolConfigurator +) => { + for (const [ + assetSymbol, + {borrowingEnabled, stableBorrowRateEnabled}, + ] of Object.entries(reservesParams) as [string, IReserveParams][]) { + if (!borrowingEnabled) continue; + try { + const assetAddressIndex = Object.keys(tokenAddresses).findIndex( + (value) => value === assetSymbol + ); + const [, tokenAddress] = (Object.entries(tokenAddresses) as [ + string, + string + ][])[assetAddressIndex]; + const borrowingAlreadyEnabled = await lendingPoolCore.isReserveBorrowingEnabled( + tokenAddress + ); + + if (borrowingAlreadyEnabled) { + console.log( + `Reserve ${assetSymbol} is already enabled for borrowing, skipping` + ); + continue; + } + + await lendingPoolConfigurator.enableBorrowingOnReserve( + tokenAddress, + stableBorrowRateEnabled + ); + } catch (e) { + console.log( + `Enabling reserve for borrowings for ${assetSymbol} failed with error ${e}. Skipped.` + ); + } + } +}; + +const enableReservesAsCollateral = async ( + reservesParams: iMultiPoolsAssets, + tokenAddresses: {[symbol: string]: tEthereumAddress}, + lendingPoolCore: LendingPoolCore, + lendingPoolConfigurator: LendingPoolConfigurator +) => { + for (const [ + assetSymbol, + {baseLTVAsCollateral, liquidationBonus, liquidationThreshold}, + ] of Object.entries(reservesParams) as [string, IReserveParams][]) { + if (baseLTVAsCollateral === "-1") continue; + + const assetAddressIndex = Object.keys(tokenAddresses).findIndex( + (value) => value === assetSymbol + ); + const [, tokenAddress] = (Object.entries(tokenAddresses) as [ + string, + string + ][])[assetAddressIndex]; + const alreadyEnabled = await lendingPoolCore.isReserveUsageAsCollateralEnabled( + tokenAddress + ); + + if (alreadyEnabled) { + console.log( + `Reserve ${assetSymbol} is already enabled as collateral, skipping` + ); + continue; + } + + try { + await lendingPoolConfigurator.enableReserveAsCollateral( + tokenAddress, + baseLTVAsCollateral, + liquidationThreshold, + liquidationBonus + ); + } catch (e) { + console.log( + `Enabling reserve as collateral for ${assetSymbol} failed with error ${e}. Skipped.` + ); + } + } +}; + +const waitForTx = async (tx: ContractTransaction) => await tx.wait(); + +const buildTestEnv = async (deployer: Wallet, secondaryWallet: Wallet) => { + console.time("setup"); + const lendingPoolManager = deployer.address; + + const mockTokens = await deployAllMockTokens(deployer, false); + + const addressesProvider = await deployLendingPoolAddressesProvider(); + await waitForTx( + await addressesProvider.setLendingPoolManager(lendingPoolManager) + ); + + const addressesProviderRegistry = await deployLendingPoolAddressesProviderRegistry(); + await waitForTx( + await addressesProviderRegistry.registerAddressesProvider( + addressesProvider.address, + 0 + ) + ); + + const feeProviderImpl = await deployFeeProvider(); + await waitForTx( + await addressesProvider.setFeeProviderImpl(feeProviderImpl.address) + ); + const feeProviderProxy = await getFeeProvider( + await addressesProvider.getFeeProvider() + ); + await insertContractAddressInDb( + eContractid.FeeProvider, + feeProviderProxy.address + ); + + const parametersProviderImpl = await deployLendingPoolParametersProvider(); + await waitForTx( + await addressesProvider.setLendingPoolParametersProviderImpl( + parametersProviderImpl.address + ) + ); + const parametersProviderProxy = await getLendingPoolParametersProvider( + await addressesProvider.getLendingPoolParametersProvider() + ); + await insertContractAddressInDb( + eContractid.LendingPoolParametersProvider, + parametersProviderProxy.address + ); + + const lendingPoolCoreImpl = await deployLendingPoolCore(); + await waitForTx( + await addressesProvider.setLendingPoolCoreImpl(lendingPoolCoreImpl.address) + ); + const lendingPoolCoreProxy = await getLendingPoolCoreProxy( + await addressesProvider.getLendingPoolCore() + ); + await insertContractAddressInDb( + eContractid.LendingPoolCore, + lendingPoolCoreProxy.address + ); + + const lendingPoolConfiguratorImpl = await deployLendingPoolConfigurator(); + await waitForTx( + await addressesProvider.setLendingPoolConfiguratorImpl( + lendingPoolConfiguratorImpl.address + ) + ); + const lendingPoolConfiguratorProxy = await getLendingPoolConfiguratorProxy( + await addressesProvider.getLendingPoolConfigurator() + ); + await insertContractAddressInDb( + eContractid.LendingPoolConfigurator, + lendingPoolConfiguratorProxy.address + ); + + const dataProviderImpl = await deployLendingPoolDataProvider(); + await waitForTx( + await addressesProvider.setLendingPoolDataProviderImpl( + dataProviderImpl.address + ) + ); + const dataProviderProxy = await getLendingPoolDataProvider( + await addressesProvider.getLendingPoolDataProvider() + ); + await insertContractAddressInDb( + eContractid.LendingPoolDataProvider, + dataProviderProxy.address + ); + + const lendingPoolImpl = await deployLendingPool(); + await waitForTx( + await addressesProvider.setLendingPoolImpl(lendingPoolImpl.address) + ); + const lendingPoolProxy = await getLendingPoolProxy( + await addressesProvider.getLendingPool() + ); + await insertContractAddressInDb( + eContractid.LendingPool, + lendingPoolProxy.address + ); + + await waitForTx( + await lendingPoolConfiguratorProxy.refreshLendingPoolCoreConfiguration() + ); + + const fallbackOracle = await deployPriceOracle(); + await waitForTx(await fallbackOracle.setEthUsdPrice(MOCK_USD_PRICE_IN_WEI)); + await setInitialAssetPricesInOracle( + ALL_ASSETS_INITIAL_PRICES, + { + ETH: MOCK_ETH_ADDRESS, + DAI: mockTokens.DAI.address, + TUSD: mockTokens.TUSD.address, + USDC: mockTokens.USDC.address, + USDT: mockTokens.USDT.address, + SUSD: mockTokens.SUSD.address, + LEND: mockTokens.LEND.address, + BAT: mockTokens.BAT.address, + REP: mockTokens.REP.address, + MKR: mockTokens.MKR.address, + LINK: mockTokens.LINK.address, + KNC: mockTokens.KNC.address, + WBTC: mockTokens.WBTC.address, + MANA: mockTokens.MANA.address, + ZRX: mockTokens.ZRX.address, + SNX: mockTokens.SNX.address, + BUSD: mockTokens.BUSD.address, + + USD: USD_ADDRESS, + + UNI_DAI_ETH: mockTokens.UNI_DAI_ETH.address, + UNI_USDC_ETH: mockTokens.UNI_USDC_ETH.address, + UNI_SETH_ETH: mockTokens.UNI_SETH_ETH.address, + UNI_LEND_ETH: mockTokens.UNI_LEND_ETH.address, + UNI_MKR_ETH: mockTokens.UNI_MKR_ETH.address, + UNI_LINK_ETH: mockTokens.UNI_LINK_ETH.address, + }, + fallbackOracle + ); + + const mockAggregators = await deployAllMockAggregators( + MOCK_CHAINLINK_AGGREGATORS_PRICES + ); + + const allTokenAddresses = Object.entries(mockTokens).reduce( + ( + accum: {[tokenSymbol: string]: tEthereumAddress}, + [tokenSymbol, tokenContract] + ) => ({ + ...accum, + [tokenSymbol]: tokenContract.address, + }), + {} + ); + const allAggregatorsAddresses = Object.entries(mockAggregators).reduce( + ( + accum: {[tokenSymbol: string]: tEthereumAddress}, + [tokenSymbol, aggregator] + ) => ({ + ...accum, + [tokenSymbol]: aggregator.address, + }), + {} + ); + + const [tokens, aggregators] = getPairsTokenAggregator( + allTokenAddresses, + allAggregatorsAddresses + ); + + const chainlinkProxyPriceProvider = await deployChainlinkProxyPriceProvider([ + tokens, + aggregators, + fallbackOracle.address, + ]); + await waitForTx( + await addressesProvider.setPriceOracle(chainlinkProxyPriceProvider.address) + ); + + const lendingRateOracle = await deployLendingRateOracle(); + await waitForTx( + await addressesProvider.setLendingRateOracle(lendingRateOracle.address) + ); + + const {USD, ...tokensAddressesWithoutUsd} = allTokenAddresses; + const allReservesAddresses = { + ETH: MOCK_ETH_ADDRESS, + ...tokensAddressesWithoutUsd, + }; + await setInitialMarketRatesInRatesOracle( + LENDING_RATE_ORACLE_RATES_COMMON, + allReservesAddresses, + lendingRateOracle + ); + + const { + UNI_DAI_ETH, + UNI_USDC_ETH, + UNI_SETH_ETH, + UNI_LINK_ETH, + UNI_MKR_ETH, + UNI_LEND_ETH, + ...protoPoolReservesAddresses + } = <{[symbol: string]: tEthereumAddress}>allReservesAddresses; + + const reservesParams = getReservesConfigByPool(AavePools.proto); + + await initReserves( + reservesParams, + protoPoolReservesAddresses, + addressesProvider, + lendingPoolCoreProxy, + lendingPoolConfiguratorProxy, + AavePools.proto + ); + await enableReservesToBorrow( + reservesParams, + protoPoolReservesAddresses, + lendingPoolCoreProxy, + lendingPoolConfiguratorProxy + ); + await enableReservesAsCollateral( + reservesParams, + protoPoolReservesAddresses, + lendingPoolCoreProxy, + lendingPoolConfiguratorProxy + ); + + const liquidationManager = await deployLendingPoolLiquidationManager(); + await waitForTx( + await addressesProvider.setLendingPoolLiquidationManager( + liquidationManager.address + ) + ); + + const {receivers, percentages} = getFeeDistributionParamsCommon( + deployer.address + ); + + await deployMockOneSplit(tokensAddressesWithoutUsd.LEND); + const oneSplitAdapter = await deployOneSplitAdapter(); + const tokenDistributorImpl = await deployTokenDistributor(); + const tokenDistributorProxy = await deployInitializableAdminUpgradeabilityProxy(); + const implementationParams = tokenDistributorImpl.interface.functions.initialize.encode( + [ + ZERO_ADDRESS, + tokensAddressesWithoutUsd.LEND, + oneSplitAdapter.address, + receivers, + percentages, + Object.values(tokensAddressesWithoutUsd), + ] + ); + await waitForTx( + await tokenDistributorProxy.initialize( + tokenDistributorImpl.address, + secondaryWallet.address, + implementationParams + ) + ); + await waitForTx( + await addressesProvider.setTokenDistributor(tokenDistributorProxy.address) + ); + + await deployMockFlashLoanReceiver(addressesProvider.address); + + await deployWalletBalancerProvider(addressesProvider.address); + + await evmSnapshot(); + + console.timeEnd("setup"); +}; + +before(async () => { + await rawBRE.run("set-bre"); + const deployer = new ethers.Wallet(accounts[0].secretKey); + const secondaryWallet = new ethers.Wallet(accounts[1].secretKey); + await buildTestEnv(deployer, secondaryWallet); + console.log("\n***************"); + console.log("Setup and snapshot finished"); + console.log("***************\n"); +}); diff --git a/test/atoken-modifiers.spec.ts b/test/atoken-modifiers.spec.ts new file mode 100644 index 00000000..e702b7cd --- /dev/null +++ b/test/atoken-modifiers.spec.ts @@ -0,0 +1,61 @@ +import rawBRE from "@nomiclabs/buidler"; +import {expect} from "chai"; +import {MockProvider} from "ethereum-waffle"; +import {BuidlerRuntimeEnvironment} from "@nomiclabs/buidler/types"; +import {LendingPoolAddressesProvider} from "../types/LendingPoolAddressesProvider"; +import {getLendingPoolAddressesProvider} from "../helpers/contracts-helpers"; +import {evmRevert} from "../helpers/misc-utils"; + +describe("AToken: Modifiers", () => { + const wallets = new MockProvider().getWallets(); + let BRE: BuidlerRuntimeEnvironment; + let _addressesProvider: LendingPoolAddressesProvider; + + before(async () => { + await evmRevert("0x1"); + _addressesProvider = await getLendingPoolAddressesProvider(); + console.log(await _addressesProvider.getLendingPoolCore()); + }); + + it("Test the accessibility of the LendingPoolAddressesProvider", async () => {}); +}); + +// contract("AToken: Modifiers", async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _aDAI: ATokenInstance; + +// before("Initializing test variables", async () => { +// console.time("setup-test"); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [ +// deployer, +// ...users, +// ]); + +// const {getATokenInstances} = _testEnvProvider; + +// _aDAI = (await getATokenInstances()).aDAI; + +// console.timeEnd("setup-test"); +// }); + +// it("Tries to invoke mintOnDeposit", async () => { +// await expectRevert( +// _aDAI.mintOnDeposit(deployer, "1"), +// "The caller of this function must be a lending pool" +// ); +// }); + +// it("Tries to invoke burnOnLiquidation", async () => { +// await expectRevert( +// _aDAI.burnOnLiquidation(deployer, "1"), +// "The caller of this function must be a lending pool" +// ); +// }); + +// it("Tries to invoke transferOnLiquidation", async () => { +// await expectRevert( +// _aDAI.transferOnLiquidation(deployer, users[1], "1"), +// "The caller of this function must be a lending pool" +// ); +// }); +// }); diff --git a/test/atoken-transfer.spec.ts b/test/atoken-transfer.spec.ts new file mode 100644 index 00000000..cfad31f6 --- /dev/null +++ b/test/atoken-transfer.spec.ts @@ -0,0 +1,190 @@ +// import { ITestEnvWithoutInstances, RateMode} from '../utils/types'; +// import { +// ATokenInstance, +// LendingPoolInstance, +// MintableERC20Instance, +// LendingPoolCoreInstance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {convertToCurrencyDecimals} from '../utils/misc-utils'; +// import {APPROVAL_AMOUNT_LENDING_POOL_CORE, ETHEREUM_ADDRESS, oneEther, NIL_ADDRESS, MAX_UINT_AMOUNT} from '../utils/constants'; + +// const expectRevert = require('@openzeppelin/test-helpers').expectRevert; + +// contract('AToken: Transfer', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _aDAI: ATokenInstance; +// let _DAI: MintableERC20Instance; +// let _lendingPoolInstance: LendingPoolInstance; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; + +// before('Initializing test variables', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances( +// artifacts, +// [deployer, ...users] +// ); + +// const { +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getAllAssetsInstances, +// getATokenInstances +// } = _testEnvProvider; +// const instances = await Promise.all([ +// getATokenInstances(), getAllAssetsInstances(), getLendingPoolInstance(), getLendingPoolCoreInstance() +// ]) + +// _aDAI = instances[0].aDAI +// _DAI = instances[1].DAI +// _lendingPoolInstance = instances[2]; +// _lendingPoolCoreInstance = instances[3] + +// console.timeEnd('setup-test'); +// }); + +// it('User 0 deposits 1000 DAI, transfers to user 1', async () => { +// await _DAI.mint(await convertToCurrencyDecimals(_DAI.address, '1000'), { +// from: users[0], +// }); + +// await _DAI.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: users[0], +// }); + +// //user 1 deposits 1000 DAI +// const amountDAItoDeposit = await convertToCurrencyDecimals(_DAI.address, '1000'); + +// await _lendingPoolInstance.deposit(_DAI.address, amountDAItoDeposit, '0', { +// from: users[0], +// }); + +// await _aDAI.transfer(users[1], amountDAItoDeposit, {from: users[0]}) + +// const fromBalance = await _aDAI.balanceOf(users[0]) +// const toBalance = await _aDAI.balanceOf(users[1]) + +// expect(fromBalance.toString()).to.be.equal("0", "Invalid from balance after transfer") +// expect(toBalance.toString()).to.be.equal(amountDAItoDeposit.toString(), "Invalid to balance after transfer") + +// }); + + +// it('User 1 redirects interest to user 2, transfers 500 DAI back to user 0', async () => { + +// await _aDAI.redirectInterestStream(users[2], {from: users[1]}); + + +// const aDAIRedirected = await convertToCurrencyDecimals(_DAI.address, '1000'); + +// const aDAItoTransfer = await convertToCurrencyDecimals(_DAI.address, '500'); + + +// const user2RedirectedBalanceBefore = await _aDAI.getRedirectedBalance(users[2]) +// expect(user2RedirectedBalanceBefore.toString()).to.be.equal(aDAIRedirected, "Invalid redirected balance for user 2 before transfer") + +// await _aDAI.transfer(users[0], aDAItoTransfer, {from: users[1]}) + + +// const user2RedirectedBalanceAfter = await _aDAI.getRedirectedBalance(users[2]) +// const user1RedirectionAddress = await _aDAI.getInterestRedirectionAddress(users[1]) + +// expect(user2RedirectedBalanceAfter.toString()).to.be.equal(aDAItoTransfer, "Invalid redirected balance for user 2 after transfer") +// expect(user1RedirectionAddress.toString()).to.be.equal(users[2], "Invalid redirection address for user 1") + +// }); + +// it('User 0 transfers back to user 1', async () => { + + +// const aDAItoTransfer = await convertToCurrencyDecimals(_DAI.address, '500'); + + +// await _aDAI.transfer(users[1], aDAItoTransfer, {from: users[0]}) + + +// const user2RedirectedBalanceAfter = await _aDAI.getRedirectedBalance(users[2]) + +// const user1BalanceAfter = await _aDAI.balanceOf(users[1]) + +// expect(user2RedirectedBalanceAfter.toString()).to.be.equal(user1BalanceAfter.toString(), "Invalid redirected balance for user 2 after transfer") + +// }); + + +// it('User 0 deposits 1 ETH and user tries to borrow, but the aTokens received as a transfer are not available as collateral (revert expected)', async () => { + +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, oneEther, '0', { +// from: users[0], +// value: oneEther.toFixed(0) +// }); + + +// await expectRevert(_lendingPoolInstance.borrow(ETHEREUM_ADDRESS, await convertToCurrencyDecimals(ETHEREUM_ADDRESS,"0.1"), RateMode.Stable, "0", {from: users[1]}), "The collateral balance is 0") + +// }); + +// it('User 1 sets the DAI as collateral and borrows, tries to transfer everything back to user 0 (revert expected)', async () => { + +// await _lendingPoolInstance.setUserUseReserveAsCollateral(_DAI.address, true, {from: users[1]}) + +// const aDAItoTransfer = await convertToCurrencyDecimals(_DAI.address, '1000'); + +// await _lendingPoolInstance.borrow(ETHEREUM_ADDRESS, await convertToCurrencyDecimals(ETHEREUM_ADDRESS,"0.1"), RateMode.Stable, "0", {from: users[1]}) + +// await expectRevert(_aDAI.transfer(users[0], aDAItoTransfer, {from: users[1]}), "Transfer cannot be allowed.") +// }); + + +// it('User 0 tries to transfer 0 balance (revert expected)', async () => { +// await expectRevert(_aDAI.transfer(users[1], "0", {from: users[0]}), "Transferred amount needs to be greater than zero") +// }); + +// it('User 1 repays the borrow, transfers aDAI back to user 0', async () => { + +// await _lendingPoolInstance.repay(ETHEREUM_ADDRESS, MAX_UINT_AMOUNT, users[1], {from: users[1], value: oneEther.toFixed(0)}) + +// const aDAItoTransfer = await convertToCurrencyDecimals(_DAI.address, '1000'); + +// await _aDAI.transfer(users[0], aDAItoTransfer, {from: users[1]}) + +// const user2RedirectedBalanceAfter = await _aDAI.getRedirectedBalance(users[2]) + +// const user1RedirectionAddress = await _aDAI.getInterestRedirectionAddress(users[1]) + +// expect(user2RedirectedBalanceAfter.toString()).to.be.equal("0", "Invalid redirected balance for user 2 after transfer") + +// expect(user1RedirectionAddress.toString()).to.be.equal(NIL_ADDRESS, "Invalid redirected address for user 1") + +// }); + +// it('User 0 redirects interest to user 2, transfers 500 aDAI to user 1. User 1 redirects to user 3. User 0 transfers another 100 aDAI', async () => { + + +// let aDAItoTransfer = await convertToCurrencyDecimals(_DAI.address, '500'); + +// await _aDAI.redirectInterestStream(users[2], {from: users[0]}) + +// await _aDAI.transfer(users[1], aDAItoTransfer, {from: users[0]}) + +// await _aDAI.redirectInterestStream(users[3], {from: users[1]}) + +// aDAItoTransfer = await convertToCurrencyDecimals(_DAI.address, '100'); + +// await _aDAI.transfer(users[1], aDAItoTransfer, {from: users[0]}) + + +// const user2RedirectedBalanceAfter = await _aDAI.getRedirectedBalance(users[2]) +// const user3RedirectedBalanceAfter = await _aDAI.getRedirectedBalance(users[3]) + +// const expectedUser2Redirected = await convertToCurrencyDecimals(_DAI.address, "400") +// const expectedUser3Redirected = await convertToCurrencyDecimals(_DAI.address, "600") + +// expect(user2RedirectedBalanceAfter.toString()).to.be.equal(expectedUser2Redirected, "Invalid redirected balance for user 2 after transfer") +// expect(user3RedirectedBalanceAfter.toString()).to.be.equal(expectedUser3Redirected, "Invalid redirected balance for user 3 after transfer") + + +// }); + + +// }); diff --git a/test/configurator.spec.ts b/test/configurator.spec.ts new file mode 100644 index 00000000..486e9c40 --- /dev/null +++ b/test/configurator.spec.ts @@ -0,0 +1,314 @@ +// import {ITestEnvWithoutInstances} from '../utils/types'; +// import { +// LendingPoolCoreInstance, +// LendingPoolConfiguratorInstance, +// LendingPoolInstance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {RAY, ETHEREUM_ADDRESS, APPROVAL_AMOUNT_LENDING_POOL_CORE} from '../utils/constants'; +// import {convertToCurrencyDecimals} from '../utils/misc-utils'; + +// const expectRevert = require('@openzeppelin/test-helpers').expectRevert; +// const {expect} = require('chai'); + +// contract('LendingPoolConfigurator', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _lendingPoolConfiguratorInstance: LendingPoolConfiguratorInstance; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _lendingPoolInstance: LendingPoolInstance; + +// before('Initializing LendingPoolConfigurator test variables', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getLendingPoolConfiguratorInstance, +// } = _testEnvProvider; +// const instances = await Promise.all([ +// getLendingPoolConfiguratorInstance(), +// getLendingPoolCoreInstance(), +// getLendingPoolInstance(), +// ]); +// _lendingPoolConfiguratorInstance = instances[0]; +// _lendingPoolCoreInstance = instances[1]; +// _lendingPoolInstance = instances[2]; + +// console.timeEnd('setup-test'); +// }); + +// it('Deactivates the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.deactivateReserve(ETHEREUM_ADDRESS); +// const isActive = await _lendingPoolCoreInstance.getReserveIsActive(ETHEREUM_ADDRESS); +// expect(isActive).to.be.equal(false); +// }); + +// it('Rectivates the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.activateReserve(ETHEREUM_ADDRESS); + +// const isActive = await _lendingPoolCoreInstance.getReserveIsActive(ETHEREUM_ADDRESS); +// expect(isActive).to.be.equal(true); +// }); + +// it('Check the onlyLendingPoolManager on deactivateReserve ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.deactivateReserve(ETHEREUM_ADDRESS, {from: users[2]}), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Check the onlyLendingPoolManager on activateReserve ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.activateReserve(ETHEREUM_ADDRESS, {from: users[2]}), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Freezes the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.freezeReserve(ETHEREUM_ADDRESS); +// const isFreezed = await _lendingPoolCoreInstance.getReserveIsFreezed(ETHEREUM_ADDRESS); +// expect(isFreezed).to.be.equal(true); +// }); + +// it('Unfreezes the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.unfreezeReserve(ETHEREUM_ADDRESS); + +// const isFreezed = await _lendingPoolCoreInstance.getReserveIsFreezed(ETHEREUM_ADDRESS); +// expect(isFreezed).to.be.equal(false); +// }); + +// it('Check the onlyLendingPoolManager on freezeReserve ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.freezeReserve(ETHEREUM_ADDRESS, {from: users[2]}), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Check the onlyLendingPoolManager on unfreezeReserve ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.unfreezeReserve(ETHEREUM_ADDRESS, {from: users[2]}), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Deactivates the ETH reserve for borrowing', async () => { +// await _lendingPoolConfiguratorInstance.disableBorrowingOnReserve(ETHEREUM_ADDRESS); +// const isEnabled = await _lendingPoolCoreInstance.isReserveBorrowingEnabled(ETHEREUM_ADDRESS); +// expect(isEnabled).to.be.equal(false); +// }); + +// it('Activates the ETH reserve for borrowing', async () => { +// await _lendingPoolConfiguratorInstance.enableBorrowingOnReserve(ETHEREUM_ADDRESS, true); +// const isEnabled = await _lendingPoolCoreInstance.isReserveBorrowingEnabled(ETHEREUM_ADDRESS); +// const interestIndex = await _lendingPoolCoreInstance.getReserveLiquidityCumulativeIndex( +// ETHEREUM_ADDRESS +// ); +// expect(isEnabled).to.be.equal(true); +// expect(interestIndex.toString()).to.be.equal(RAY); +// }); + +// it('Check the onlyLendingPoolManager on disableBorrowingOnReserve ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.disableBorrowingOnReserve(ETHEREUM_ADDRESS, { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Check the onlyLendingPoolManager on enableBorrowingOnReserve ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.enableBorrowingOnReserve(ETHEREUM_ADDRESS, true, { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Deactivates the ETH reserve as collateral', async () => { +// await _lendingPoolConfiguratorInstance.disableReserveAsCollateral(ETHEREUM_ADDRESS); +// const isEnabled = await _lendingPoolCoreInstance.isReserveUsageAsCollateralEnabled( +// ETHEREUM_ADDRESS +// ); +// expect(isEnabled).to.be.equal(false); +// }); + +// it('Activates the ETH reserve as collateral', async () => { +// await _lendingPoolConfiguratorInstance.enableReserveAsCollateral( +// ETHEREUM_ADDRESS, +// '75', +// '80', +// '105' +// ); + +// const isEnabled = await _lendingPoolCoreInstance.isReserveUsageAsCollateralEnabled( +// ETHEREUM_ADDRESS +// ); +// expect(isEnabled).to.be.equal(true); +// }); + +// it('Check the onlyLendingPoolManager on disableReserveAsCollateral ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.disableReserveAsCollateral(ETHEREUM_ADDRESS, { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Check the onlyLendingPoolManager on enableReserveAsCollateral ', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.enableReserveAsCollateral( +// ETHEREUM_ADDRESS, +// '75', +// '80', +// '105', +// {from: users[2]} +// ), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Disable stable borrow rate on the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.disableReserveStableBorrowRate(ETHEREUM_ADDRESS); +// const isEnabled = await _lendingPoolCoreInstance.getReserveIsStableBorrowRateEnabled( +// ETHEREUM_ADDRESS +// ); +// expect(isEnabled).to.be.equal(false); +// }); + +// it('Enables stable borrow rate on the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.enableReserveStableBorrowRate(ETHEREUM_ADDRESS); +// const isEnabled = await _lendingPoolCoreInstance.getReserveIsStableBorrowRateEnabled( +// ETHEREUM_ADDRESS +// ); +// expect(isEnabled).to.be.equal(true); +// }); + +// it('Check the onlyLendingPoolManager on disableReserveStableBorrowRate', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.disableReserveStableBorrowRate(ETHEREUM_ADDRESS, { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Check the onlyLendingPoolManager on enableReserveStableBorrowRate', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.enableReserveStableBorrowRate(ETHEREUM_ADDRESS, { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Changes LTV of the reserve', async () => { +// await _lendingPoolConfiguratorInstance.setReserveBaseLTVasCollateral(ETHEREUM_ADDRESS, '60'); +// const {ltv}: any = await _lendingPoolInstance.getReserveConfigurationData(ETHEREUM_ADDRESS); +// expect(ltv).to.be.bignumber.equal('60', 'Invalid LTV'); +// }); + +// it('Check the onlyLendingPoolManager on setReserveBaseLTVasCollateral', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.setReserveBaseLTVasCollateral(ETHEREUM_ADDRESS, '75', { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Changes liquidation threshold of the reserve', async () => { +// await _lendingPoolConfiguratorInstance.setReserveLiquidationThreshold(ETHEREUM_ADDRESS, '75'); +// const {liquidationThreshold}: any = await _lendingPoolInstance.getReserveConfigurationData( +// ETHEREUM_ADDRESS +// ); +// expect(liquidationThreshold).to.be.bignumber.equal('75', 'Invalid Liquidation threshold'); +// }); + +// it('Check the onlyLendingPoolManager on setReserveLiquidationThreshold', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.setReserveLiquidationThreshold(ETHEREUM_ADDRESS, '80', { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Changes liquidation bonus of the reserve', async () => { +// await _lendingPoolConfiguratorInstance.setReserveLiquidationBonus(ETHEREUM_ADDRESS, '110'); +// const liquidationBonus = await _lendingPoolCoreInstance.getReserveLiquidationBonus( +// ETHEREUM_ADDRESS +// ); +// expect(liquidationBonus).to.be.bignumber.equal('110', 'Invalid Liquidation discount'); +// }); + +// it('Check the onlyLendingPoolManager on setReserveLiquidationBonus', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.setReserveLiquidationBonus(ETHEREUM_ADDRESS, '80', { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Check the onlyLendingPoolManager on setReserveDecimals', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.setReserveDecimals(ETHEREUM_ADDRESS, '80', {from: users[2]}), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Removes the last added reserve', async () => { +// const reservesBefore = await _lendingPoolInstance.getReserves(); + +// const lastReserve = reservesBefore[reservesBefore.length - 1]; + +// await _lendingPoolConfiguratorInstance.removeLastAddedReserve(lastReserve); + +// const reservesAfter = await _lendingPoolInstance.getReserves(); + +// expect(reservesAfter.length).to.be.equal( +// reservesBefore.length - 1, +// 'Invalid number of reserves after removal' +// ); +// }); + +// it('Check the onlyLendingPoolManager on setReserveLiquidationBonus', async () => { +// await expectRevert( +// _lendingPoolConfiguratorInstance.setReserveLiquidationBonus(ETHEREUM_ADDRESS, '80', { +// from: users[2], +// }), +// 'The caller must be a lending pool manager' +// ); +// }); + +// it('Reverts when trying to disable the DAI reserve with liquidity on it', async () => { +// const {getAllAssetsInstances, getFirstDepositorAddressOnTests} = _testEnvProvider; + +// const daiInstance = (await getAllAssetsInstances()).DAI; + +// const _depositorAddress = await getFirstDepositorAddressOnTests(); + +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, '1000'), { +// from: _depositorAddress, +// }); + +// //approve protocol to access depositor wallet +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: _depositorAddress, +// }); +// const amountDAItoDeposit = await convertToCurrencyDecimals(daiInstance.address, '1000'); + +// //user 1 deposits 1000 DAI +// await _lendingPoolInstance.deposit(daiInstance.address, amountDAItoDeposit, '0', { +// from: _depositorAddress, +// }); + +// await expectRevert( +// _lendingPoolConfiguratorInstance.deactivateReserve(daiInstance.address), +// 'The liquidity of the reserve needs to be 0' +// ); +// }); +// }); diff --git a/test/core-modifiers.spec.ts b/test/core-modifiers.spec.ts new file mode 100644 index 00000000..5fb68450 --- /dev/null +++ b/test/core-modifiers.spec.ts @@ -0,0 +1,284 @@ +// import {ITestEnvWithoutInstances, iAssetsWithoutETH, RateMode} from '../utils/types'; +// import { +// LendingPoolCoreInstance, +// MintableERC20Instance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import { ETHEREUM_ADDRESS} from '../utils/constants'; + +// const expectRevert = require('@openzeppelin/test-helpers').expectRevert; + +// contract('LendingPoolCore: Modifiers', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _tokenInstances: iAssetsWithoutETH; + +// before('Initializing tests', async () => { +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const {getAllAssetsInstances, getLendingPoolCoreInstance} = _testEnvProvider; +// const instances = await Promise.all([getLendingPoolCoreInstance(), getAllAssetsInstances()]); +// _lendingPoolCoreInstance = instances[0]; +// _tokenInstances = instances[1]; +// }); + +// it('Tries invoke updateStateOnDeposit ', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnDeposit(daiInstance.address, deployer, '0', false), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke updateStateOnRedeem', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnRedeem(daiInstance.address, deployer, '0', false), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke updateStateOnBorrow', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnBorrow( +// daiInstance.address, +// deployer, +// '0', +// '0', +// RateMode.Stable +// ), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke updateStateOnRepay', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnRepay( +// daiInstance.address, +// deployer, +// '0', +// '0', +// '0', +// false +// ), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke updateStateOnSwapRate', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnSwapRate( +// daiInstance.address, +// deployer, +// '0', +// '0', +// '0', +// RateMode.Stable +// ), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke updateStateOnRebalance', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnRebalance(daiInstance.address, deployer, '0'), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke updateStateOnLiquidation', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.updateStateOnLiquidation( +// ETHEREUM_ADDRESS, +// daiInstance.address, +// deployer, +// '0', +// '0', +// '0', +// '0', +// '0', +// false +// ), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke setUserUseReserveAsCollateral', async () => { +// await expectRevert( +// _lendingPoolCoreInstance.setUserUseReserveAsCollateral(ETHEREUM_ADDRESS, deployer, false), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke transferToUser', async () => { +// await expectRevert( +// _lendingPoolCoreInstance.transferToUser(ETHEREUM_ADDRESS, deployer, '0'), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke transferToReserve', async () => { +// await expectRevert( +// _lendingPoolCoreInstance.transferToReserve(ETHEREUM_ADDRESS, deployer, '0'), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke transferToFeeCollectionAddress', async () => { +// await expectRevert( +// _lendingPoolCoreInstance.transferToFeeCollectionAddress( +// ETHEREUM_ADDRESS, +// deployer, +// '0', +// deployer +// ), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke liquidateFee', async () => { +// await expectRevert( +// _lendingPoolCoreInstance.liquidateFee(ETHEREUM_ADDRESS, '0', deployer), +// 'The caller must be a lending pool contract' +// ); +// }); + +// it('Tries invoke initReserve', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.initReserve( +// daiInstance.address, +// daiInstance.address, +// '18', +// deployer +// ), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke refreshConfiguration', async () => { +// await expectRevert( +// _lendingPoolCoreInstance.refreshConfiguration(), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke enableBorrowingOnReserve, disableBorrowingOnReserve', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.enableBorrowingOnReserve(daiInstance.address, false), +// 'The caller must be a lending pool configurator contract' +// ); +// await expectRevert( +// _lendingPoolCoreInstance.refreshConfiguration(), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke freezeReserve, unfreezeReserve', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.freezeReserve(daiInstance.address), +// 'The caller must be a lending pool configurator contract' +// ); +// await expectRevert( +// _lendingPoolCoreInstance.unfreezeReserve(daiInstance.address), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke enableReserveAsCollateral, disableReserveAsCollateral', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.enableReserveAsCollateral(daiInstance.address, 0, 0, 0), +// 'The caller must be a lending pool configurator contract' +// ); +// await expectRevert( +// _lendingPoolCoreInstance.disableReserveAsCollateral(daiInstance.address), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke enableReserveStableBorrowRate, disableReserveStableBorrowRate', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.enableReserveStableBorrowRate(daiInstance.address), +// 'The caller must be a lending pool configurator contract' +// ); +// await expectRevert( +// _lendingPoolCoreInstance.disableReserveStableBorrowRate(daiInstance.address), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke setReserveDecimals', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.setReserveDecimals(daiInstance.address, '0'), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke removeLastAddedReserve', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.removeLastAddedReserve(daiInstance.address), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke setReserveBaseLTVasCollateral', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.setReserveBaseLTVasCollateral(daiInstance.address, '0'), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke setReserveLiquidationBonus', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.setReserveLiquidationBonus(daiInstance.address, '0'), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke setReserveLiquidationThreshold', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.setReserveLiquidationThreshold(daiInstance.address, '0'), +// 'The caller must be a lending pool configurator contract' +// ); +// }); + +// it('Tries invoke setReserveInterestRateStrategyAddress', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await expectRevert( +// _lendingPoolCoreInstance.setReserveInterestRateStrategyAddress(daiInstance.address, deployer), +// 'The caller must be a lending pool configurator contract' +// ); +// }); +// }); diff --git a/test/core.spec.ts b/test/core.spec.ts new file mode 100644 index 00000000..48ed0ace --- /dev/null +++ b/test/core.spec.ts @@ -0,0 +1,111 @@ +// import { ITestEnv, ContractsInstancesOrigin } from "../utils/types"; +// import { LendingPoolCoreInstance, LendingPoolAddressesProviderInstance } from "../utils/typechain-types/truffle-contracts"; +// import { testEnvProvider } from "../utils/truffle/dlp-tests-env"; +// import { RAY, WAD, ETHEREUM_ADDRESS } from "../utils/constants"; +// import BigNumber from "bignumber.js"; + +// /*contract("LendingPoolCore", async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnv +// let _addressesProviderInstance: LendingPoolAddressesProviderInstance +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _lendAddress: string; + +// before("Initializing LendingPoolCore test variables", async () => { +// _testEnvProvider = await testEnvProvider(artifacts, [deployer, ...users], ContractsInstancesOrigin.TruffleArtifacts) + +// const { +// deployedInstances: { +// lendingPoolAddressesProviderInstance, +// lendingPoolCoreInstance, +// }, +// getAllAssetsAddresses +// } = _testEnvProvider +// _addressesProviderInstance = lendingPoolAddressesProviderInstance +// _lendingPoolCoreInstance = lendingPoolCoreInstance +// _lendAddress = (await getAllAssetsAddresses()).LEND +// }) + +// it("Configure the lending pool address to the owner address to allow invocation of the methods", async () => { +// await _addressesProviderInstance.setLendingPoolConfiguratorImpl(deployer) +// await _addressesProviderInstance.setLendingPoolImpl(deployer) +// await _lendingPoolCoreInstance.refreshConfiguration() +// const providerAddress = await _addressesProviderInstance.getLendingPoolConfigurator() +// expect(providerAddress).to.be.equal(deployer) +// const poolAddress = await _addressesProviderInstance.getLendingPool() +// expect(poolAddress).to.be.equal(deployer) +// }) + +// it("Increases the stable total borrows of a reserve", async () => { +// await _lendingPoolCoreInstance.increaseReserveTotalBorrowsStableAndUpdateAverageRate( +// ETHEREUM_ADDRESS, +// WAD, +// new BigNumber(RAY).multipliedBy(10).toFixed(), +// ) //10% interest + +// const totalBorrows = await _lendingPoolCoreInstance.getReserveTotalBorrowsStable(ETHEREUM_ADDRESS) + +// expect(totalBorrows.toString()).to.be.equal(WAD) +// }) + +// it("Increases the variable total borrows of a reserve", async () => { +// await _lendingPoolCoreInstance.increaseReserveTotalBorrowsVariable(ETHEREUM_ADDRESS, WAD) //10% interest + +// const totalBorrows = await _lendingPoolCoreInstance.getReserveTotalBorrowsVariable(ETHEREUM_ADDRESS) + +// expect(totalBorrows.toString()).to.be.equal(WAD) +// }) + +// it("Decreases the stable total borrows of a reserve", async () => { +// await _lendingPoolCoreInstance.decreaseReserveTotalBorrowsStableAndUpdateAverageRate( +// ETHEREUM_ADDRESS, +// WAD, +// new BigNumber(RAY).multipliedBy(10).toFixed(), +// ) + +// const totalBorrows = await _lendingPoolCoreInstance.getReserveTotalBorrowsStable(ETHEREUM_ADDRESS) + +// expect(totalBorrows.toString()).to.be.equal("0") +// }) + +// it("Decreases the variable total borrows of a reserve", async () => { +// await _lendingPoolCoreInstance.decreaseReserveTotalBorrowsVariable(ETHEREUM_ADDRESS, WAD) + +// const totalBorrows = await _lendingPoolCoreInstance.getReserveTotalBorrowsVariable(ETHEREUM_ADDRESS) + +// expect(totalBorrows.toString()).to.be.equal("0") +// }) + +// it("Updates the variable borrow index, checks that is equal to 1 as there are no borrows from the user", async () => { +// await _lendingPoolCoreInstance.updateUserLastVariableBorrowCumulativeIndex(_lendAddress, deployer) +// await _lendingPoolCoreInstance.updateUserLastVariableBorrowCumulativeIndex(ETHEREUM_ADDRESS, deployer) + +// const indexLEND = await _lendingPoolCoreInstance.getUserVariableBorrowCumulativeIndex( +// _lendAddress, +// deployer, +// ) +// const indexETH = await _lendingPoolCoreInstance.getUserVariableBorrowCumulativeIndex(ETHEREUM_ADDRESS, deployer) + +// expect(indexLEND.toString()).to.be.equal(RAY, "Invalid user borrow index for LEND") +// expect(indexETH.toString()).to.be.equal(RAY, "Invalid user borrow index for ETH") +// }) + +// it("Disables the LEND collateral", async () => { +// await _lendingPoolCoreInstance.disableReserveAsCollateral(_lendAddress) + +// const collateralEnabled = await _lendingPoolCoreInstance.isReserveUsageAsCollateralEnabled( +// _lendAddress, +// ) + +// expect(collateralEnabled).to.be.equal(false) +// }) + +// it("Deactivates the ETH reserve", async () => { +// await _lendingPoolCoreInstance.disableBorrowingOnReserve(ETHEREUM_ADDRESS) + +// const isEnabled = await _lendingPoolCoreInstance.isReserveBorrowingEnabled(ETHEREUM_ADDRESS) + +// expect(isEnabled).to.be.equal(false) +// }) + +// }) +// */ \ No newline at end of file diff --git a/test/flashloan.spec.ts b/test/flashloan.spec.ts new file mode 100644 index 00000000..b0f3ecb3 --- /dev/null +++ b/test/flashloan.spec.ts @@ -0,0 +1,278 @@ +// import { +// LendingPoolInstance, +// LendingPoolCoreInstance, +// IPriceOracleInstance, +// MockFlashLoanReceiverInstance, +// TokenDistributorInstance, +// MintableERC20Instance, +// ATokenInstance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {iATokenBase, iAssetsWithoutETH, ITestEnvWithoutInstances} from '../utils/types'; +// import BigNumber from 'bignumber.js'; +// import { +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// oneEther, +// oneRay, +// ETHEREUM_ADDRESS, +// } from '../utils/constants'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {convertToCurrencyDecimals} from '../utils/misc-utils'; + +// const expectRevert = require('@openzeppelin/test-helpers').expectRevert; + +// const {expect} = require('chai'); + +// contract('LendingPool FlashLoan function', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _lendingPoolInstance: LendingPoolInstance; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _mockFlashLoanReceiverInstance: MockFlashLoanReceiverInstance; +// let _priceOracleInstance: IPriceOracleInstance; +// let _aTokenInstances: iATokenBase; +// let _tokenInstances: iAssetsWithoutETH; +// let _tokenDistributor: TokenDistributorInstance; +// let _daiAddress: string; +// let _depositorAddress: string; +// let _web3: Web3; +// let _initialDepositorETHBalance: string; + +// before('Initializing LendingPool test variables', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getWeb3, +// getAllAssetsInstances, +// getFirstDepositorAddressOnTests, +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getPriceOracleInstance, +// getATokenInstances, +// getMockFlashLoanReceiverInstance, +// getTokenDistributorInstance, +// } = _testEnvProvider; + +// const instances = await Promise.all([ +// getLendingPoolInstance(), +// getLendingPoolCoreInstance(), +// getPriceOracleInstance(), +// getATokenInstances(), +// getMockFlashLoanReceiverInstance(), +// getAllAssetsInstances(), +// getTokenDistributorInstance(), +// ]); + +// _lendingPoolInstance = instances[0]; +// _lendingPoolCoreInstance = instances[1]; +// _priceOracleInstance = instances[2]; +// _aTokenInstances = instances[3]; +// _mockFlashLoanReceiverInstance = instances[4]; +// _tokenInstances = instances[5]; +// _daiAddress = _tokenInstances.DAI.address; +// _depositorAddress = await getFirstDepositorAddressOnTests(); +// _tokenDistributor = instances[6]; + +// _web3 = await getWeb3(); +// _initialDepositorETHBalance = await _web3.eth.getBalance(_depositorAddress); + +// console.timeEnd('setup-test'); +// }); + +// it('Deposits ETH into the reserve', async () => { +// const amountToDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, '1'); + +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountToDeposit, '0', { +// from: _depositorAddress, +// value: amountToDeposit, +// }); +// }); + +// it('Takes ETH flashloan, returns the funds correctly', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// let send = web3.eth.sendTransaction({ +// from: deployer, +// to: _mockFlashLoanReceiverInstance.address, +// value: web3.utils.toWei('0.5', 'ether'), +// }); + +// const txResult = await _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// ETHEREUM_ADDRESS, +// new BigNumber(0.8).multipliedBy(oneEther), +// '0x10' +// ); + +// const reserveData: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); +// const tokenDistributorBalance = await _web3.eth.getBalance(_tokenDistributor.address); + +// const currentLiquidityRate = reserveData.liquidityRate; +// const currentLiquidityIndex = reserveData.liquidityIndex; + +// expect(reserveData.totalLiquidity.toString()).to.be.equal('1000504000000000000'); +// expect(currentLiquidityRate.toString()).to.be.equal('0'); +// expect(currentLiquidityIndex.toString()).to.be.equal('1000504000000000000000000000'); +// expect(tokenDistributorBalance.toString()).to.be.equal('216000000000000'); +// }); + +// it('Takes an ETH flashloan as big as the available liquidity', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// let send = web3.eth.sendTransaction({ +// from: deployer, +// to: _mockFlashLoanReceiverInstance.address, +// value: web3.utils.toWei('0.5', 'ether'), +// }); + +// const txResult = await _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// ETHEREUM_ADDRESS, +// '1000504000000000000', +// '0x10' +// ); + +// const reserveData: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); +// const tokenDistributorBalance = await _web3.eth.getBalance(_tokenDistributor.address); + +// const currentLiqudityRate = reserveData.liquidityRate; +// const currentLiquidityIndex = reserveData.liquidityIndex; + +// expect(reserveData.totalLiquidity.toString()).to.be.equal('1001134317520000000'); +// expect(currentLiqudityRate.toString()).to.be.equal('0'); +// expect(currentLiquidityIndex.toString()).to.be.equal('1001134317520000000000000000'); +// expect(tokenDistributorBalance.toString()).to.be.equal('486136080000000'); +// }); + +// it('Takes ETH flashloan, does not return the funds (revert expected)', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// let send = web3.eth.sendTransaction({ +// from: deployer, +// to: _mockFlashLoanReceiverInstance.address, +// value: web3.utils.toWei('0.5', 'ether'), +// }); + +// await _mockFlashLoanReceiverInstance.setFailExecutionTransfer(true); + +// await expectRevert( +// _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// ETHEREUM_ADDRESS, +// new BigNumber(0.8).multipliedBy(oneEther), +// '0x10' +// ), +// 'The actual balance of the protocol is inconsistent' +// ); +// }); + +// it('tries to take a very small flashloan, which would result in 0 fees (revert expected)', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// await expectRevert( +// _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// ETHEREUM_ADDRESS, +// '1', //1 wei loan +// '0x10' +// ), +// 'The requested amount is too small for a flashLoan.' +// ); +// }); + +// it('tries to take a flashloan that is bigger than the available liquidity (revert expected)', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// await expectRevert( +// _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// ETHEREUM_ADDRESS, +// '1004415000000000000', //slightly higher than the available liquidity +// '0x10' +// ), +// 'There is not enough liquidity available to borrow' +// ); +// }); + +// it('tries to take a flashloan using a non contract address as receiver (revert expected)', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// await expectRevert( +// _lendingPoolInstance.flashLoan(deployer, ETHEREUM_ADDRESS, '1000000000000000000', '0x10'), +// 'revert' +// ); +// }); + +// it('Deposits DAI into the reserve', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// //mints DAI to depositor +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, '1000'), { +// from: _depositorAddress, +// }); + +// //approve protocol to access depositor wallet +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: _depositorAddress, +// }); + +// const amountToDeposit = await convertToCurrencyDecimals(_daiAddress, '1000'); + +// await _lendingPoolInstance.deposit(daiInstance.address, amountToDeposit, '0', { +// from: _depositorAddress, +// }); +// }); + +// it('Takes out a 500 DAI flashloan, returns the funds correctly', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// await _mockFlashLoanReceiverInstance.setFailExecutionTransfer(false); + +// await _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// _daiAddress, +// new BigNumber(500).multipliedBy(oneEther), +// '0x10' +// ); + +// const reserveData: any = await _lendingPoolInstance.getReserveData(_daiAddress); +// const userData: any = await _lendingPoolInstance.getUserReserveData(_daiAddress, deployer); + +// const totalLiquidity = reserveData.totalLiquidity.toString(); +// const currentLiqudityRate = reserveData.liquidityRate.toString(); +// const currentLiquidityIndex = reserveData.liquidityIndex.toString(); +// const currentUserBalance = userData.currentATokenBalance.toString(); + +// const expectedLiquidity = new BigNumber('1000.315').multipliedBy(oneEther).toFixed(); + +// const tokenDistributorBalance = await daiInstance.balanceOf(_tokenDistributor.address); + +// expect(totalLiquidity).to.be.equal(expectedLiquidity, 'Invalid total liquidity'); +// expect(currentLiqudityRate).to.be.equal('0', 'Invalid liquidity rate'); +// expect(currentLiquidityIndex).to.be.equal( +// new BigNumber('1.000315').multipliedBy(oneRay).toFixed(), +// 'Invalid liquidity index' +// ); +// expect(currentUserBalance.toString()).to.be.equal(expectedLiquidity, 'Invalid user balance'); + +// expect(tokenDistributorBalance.toString()).to.be.equal( +// new BigNumber('0.135').multipliedBy(oneEther).toFixed(), +// 'Invalid token distributor balance' +// ); +// }); + +// it('Takes out a 500 DAI flashloan, does not return the funds (revert expected)', async () => { +// //move funds to the MockFlashLoanReceiver contract + +// await _mockFlashLoanReceiverInstance.setFailExecutionTransfer(true); + +// await expectRevert( +// _lendingPoolInstance.flashLoan( +// _mockFlashLoanReceiverInstance.address, +// _daiAddress, +// new BigNumber(500).multipliedBy(oneEther), +// '0x10' +// ), +// 'The actual balance of the protocol is inconsistent' +// ); +// }); +// }); diff --git a/test/helpers/actions.ts b/test/helpers/actions.ts new file mode 100644 index 00000000..73f4049e --- /dev/null +++ b/test/helpers/actions.ts @@ -0,0 +1,884 @@ +// import {convertToCurrencyDecimals} from '../../utils/misc-utils'; +// import { +// LendingPoolInstance, +// LendingPoolCoreInstance, +// ATokenContract, +// ATokenInstance, +// ERC20Instance, +// ERC20DetailedInstance, +// MintableERC20Instance, +// } from '../../utils/typechain-types/truffle-contracts'; +// import BigNumber from 'bignumber.js'; +// import {getTruffleContractInstance} from '../../utils/truffle/truffle-core-utils'; +// import {ContractId} from '../../utils/types'; +// import { +// calcExpectedReserveDataAfterDeposit, +// calcExpectedReserveDataAfterRedeem, +// calcExpectedUserDataAfterDeposit, +// calcExpectedUserDataAfterRedeem, +// calcExpectedReserveDataAfterBorrow, +// calcExpectedUserDataAfterBorrow, +// calcExpectedReserveDataAfterRepay, +// calcExpectedUserDataAfterRepay, +// calcExpectedUserDataAfterSetUseAsCollateral, +// calcExpectedUserDataAfterSwapRateMode, +// calcExpectedReserveDataAfterSwapRateMode, +// calcExpectedReserveDataAfterStableRateRebalance, +// calcExpectedUserDataAfterStableRateRebalance, +// calcExpectedUsersDataAfterRedirectInterest, +// } from '../utils/calculations'; +// import {getReserveAddressFromSymbol, getReserveData, getUserData} from '../utils/helpers'; +// import {UserReserveData, ReserveData} from '../utils/interfaces'; +// import {ONE_YEAR, MAX_UINT_AMOUNT, NIL_ADDRESS} from '../../utils/constants'; +// import {TransactionObject} from 'web3/eth/types'; + +// const {time, expectRevert} = require('@openzeppelin/test-helpers'); + +// const truffleAssert = require('truffle-assertions'); + +// const chai = require('chai'); + +// const {expect} = chai; + +// const almostEqualOrEqual = function( +// this: any, +// expected: ReserveData | UserReserveData, +// actual: ReserveData | UserReserveData +// ) { +// const keys = Object.keys(actual); + +// keys.forEach(key => { +// if ( +// key === 'lastUpdateTimestamp' || +// key === 'marketStableRate' || +// key === 'symbol' || +// key === 'aTokenAddress' || +// key === 'initialATokenExchangeRate' || +// key === 'decimals' +// ) { +// //skipping consistency check on accessory data +// return; +// } + +// this.assert(actual[key] != undefined, `Property ${key} is undefined in the actual data`); +// expect(expected[key] != undefined, `Property ${key} is undefined in the expected data`); + +// if (actual[key] instanceof BigNumber) { +// const actualValue = (actual[key]).decimalPlaces(0, BigNumber.ROUND_DOWN); +// const expectedValue = (expected[key]).decimalPlaces(0, BigNumber.ROUND_DOWN); + +// this.assert( +// actualValue.eq(expectedValue) || +// actualValue.plus(1).eq(expectedValue) || +// actualValue.eq(expectedValue.plus(1)) || +// actualValue.plus(2).eq(expectedValue) || +// actualValue.eq(expectedValue.plus(2)) || +// actualValue.plus(3).eq(expectedValue) || +// actualValue.eq(expectedValue.plus(3)), +// `expected #{act} to be almost equal or equal #{exp} for property ${key}`, +// `expected #{act} to be almost equal or equal #{exp} for property ${key}`, +// expectedValue.toFixed(0), +// actualValue.toFixed(0) +// ); +// } else { +// this.assert( +// actual[key] !== null && +// expected[key] !== null && +// actual[key].toString() === expected[key].toString(), +// `expected #{act} to be equal #{exp} for property ${key}`, +// `expected #{act} to be equal #{exp} for property ${key}`, +// expected[key], +// actual[key] +// ); +// } +// }); +// }; + +// chai.use(function(chai: any, utils: any) { +// chai.Assertion.overwriteMethod('almostEqualOrEqual', function(original: any) { +// return function(this: any, expected: ReserveData | UserReserveData) { +// const actual = (expected as ReserveData) +// ? this._obj +// : this._obj; + +// almostEqualOrEqual.apply(this, [expected, actual]); +// }; +// }); +// }); + +// interface ActionsConfig { +// lendingPoolInstance: LendingPoolInstance; +// lendingPoolCoreInstance: LendingPoolCoreInstance; +// ethereumAddress: string; +// artifacts: Truffle.Artifacts; +// web3: Web3; +// skipIntegrityCheck: boolean; +// } + +// export const configuration: ActionsConfig = {}; + +// export const mint = async (reserveSymbol: string, amount: string, user: string) => { +// const {ethereumAddress, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// if (ethereumAddress === reserve.toLowerCase()) { +// throw 'Cannot mint ethereum. Mint action is most likely not needed in this story'; +// } + +// const tokenInstance: MintableERC20Instance = await getTruffleContractInstance( +// artifacts, +// ContractId.MintableERC20, +// reserve +// ); + +// const tokensToMint = await convertToCurrencyDecimals(reserve, amount); + +// const txOptions: any = { +// from: user, +// }; +// await tokenInstance.mint(tokensToMint, txOptions); +// }; + +// export const approve = async (reserveSymbol: string, user: string) => { +// const {ethereumAddress, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// if (ethereumAddress === reserve) { +// throw 'Cannot mint ethereum. Mint action is most likely not needed in this story'; +// } + +// const tokenInstance: ERC20Instance = await getTruffleContractInstance( +// artifacts, +// ContractId.ERC20, +// reserve +// ); + +// const txOptions: any = { +// from: user, +// }; +// await tokenInstance.approve( +// configuration.lendingPoolCoreInstance.address, +// '100000000000000000000000000000', +// txOptions +// ); +// }; + +// export const deposit = async ( +// reserveSymbol: string, +// amount: string, +// user: string, +// sendValue: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {ethereumAddress, lendingPoolInstance, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + + +// const amountToDeposit = await convertToCurrencyDecimals(reserve, amount); + +// const txOptions: any = { +// from: user, +// }; + +// const {reserveData: reserveDataBefore, userData: userDataBefore} = await getContractsData( +// reserve, +// user +// ); + + +// if (ethereumAddress === reserve) { +// if (sendValue) { +// const valueToSend = await convertToCurrencyDecimals(reserve, sendValue); +// txOptions.value = valueToSend; +// } else { +// txOptions.value = amountToDeposit; +// } +// } +// if (expectedResult === 'success') { +// const txResult = await lendingPoolInstance.deposit(reserve, amountToDeposit, '0', txOptions); + +// const { +// reserveData: reserveDataAfter, +// userData: userDataAfter, +// timestamp, +// } = await getContractsData(reserve, user); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const expectedReserveData = calcExpectedReserveDataAfterDeposit( +// amountToDeposit, +// reserveDataBefore, +// txTimestamp +// ); + +// const expectedUserReserveData = calcExpectedUserDataAfterDeposit( +// amountToDeposit, +// reserveDataBefore, +// expectedReserveData, +// userDataBefore, +// txTimestamp, +// timestamp, +// txCost +// ); + +// expectEqual(reserveDataAfter, expectedReserveData); +// expectEqual(userDataAfter, expectedUserReserveData); + +// truffleAssert.eventEmitted(txResult, 'Deposit', (ev: any) => { +// const {_reserve, _user, _amount} = ev; +// return ( +// _reserve === reserve && +// _user === user && +// new BigNumber(_amount).isEqualTo(new BigNumber(amountToDeposit)) +// ); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert( +// lendingPoolInstance.deposit(reserve, amountToDeposit, '0', txOptions), +// revertMessage +// ); +// } +// }; + +// export const redeem = async ( +// reserveSymbol: string, +// amount: string, +// user: string, +// expectedResult: string, +// revertMessage?: string +// ) => { + +// const { +// aTokenInstance, +// reserve, +// txOptions, +// userData: userDataBefore, +// reserveData: reserveDataBefore, +// } = await getDataBeforeAction(reserveSymbol, user); + +// let amountToRedeem = '0'; + +// if (amount !== '-1') { +// amountToRedeem = await convertToCurrencyDecimals(reserve, amount); +// } else { +// amountToRedeem = MAX_UINT_AMOUNT; +// } + +// if (expectedResult === 'success') { +// const txResult = await aTokenInstance.redeem(amountToRedeem, txOptions); + +// const { +// reserveData: reserveDataAfter, +// userData: userDataAfter, +// timestamp, +// } = await getContractsData(reserve, user); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const expectedReserveData = calcExpectedReserveDataAfterRedeem( +// amountToRedeem, +// reserveDataBefore, +// userDataBefore, +// txTimestamp +// ); + +// const expectedUserData = calcExpectedUserDataAfterRedeem( +// amountToRedeem, +// reserveDataBefore, +// expectedReserveData, +// userDataBefore, +// txTimestamp, +// timestamp, +// txCost +// ); + +// const actualAmountRedeemed = userDataBefore.currentATokenBalance.minus( +// expectedUserData.currentATokenBalance +// ); + +// expectEqual(reserveDataAfter, expectedReserveData); +// expectEqual(userDataAfter, expectedUserData); + +// truffleAssert.eventEmitted(txResult, 'Redeem', (ev: any) => { +// const {_from, _value} = ev; +// return _from === user && new BigNumber(_value).isEqualTo(actualAmountRedeemed); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert(aTokenInstance.redeem(amountToRedeem, txOptions), revertMessage); +// } +// }; + +// export const borrow = async ( +// reserveSymbol: string, +// amount: string, +// interestRateMode: string, +// user: string, +// timeTravel: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {lendingPoolInstance, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// const {reserveData: reserveDataBefore, userData: userDataBefore} = await getContractsData( +// reserve, +// user +// ); + +// const amountToBorrow = await convertToCurrencyDecimals(reserve, amount); + +// const txOptions: any = { +// from: user, +// }; + +// if (expectedResult === 'success') { +// const txResult = await lendingPoolInstance.borrow( +// reserve, +// amountToBorrow, +// interestRateMode, +// '0', +// txOptions +// ); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// if (timeTravel) { +// const secondsToTravel = new BigNumber(timeTravel) +// .multipliedBy(ONE_YEAR) +// .div(365) +// .toNumber(); + +// await time.increase(secondsToTravel); +// } + +// const { +// reserveData: reserveDataAfter, +// userData: userDataAfter, +// timestamp, +// } = await getContractsData(reserve, user); + +// const expectedReserveData = calcExpectedReserveDataAfterBorrow( +// amountToBorrow, +// interestRateMode, +// reserveDataBefore, +// userDataBefore, +// txTimestamp, +// timestamp +// ); + +// const expectedUserData = calcExpectedUserDataAfterBorrow( +// amountToBorrow, +// interestRateMode, +// reserveDataBefore, +// expectedReserveData, +// userDataBefore, +// txTimestamp, +// timestamp, +// txCost +// ); +// expectEqual(reserveDataAfter, expectedReserveData); +// expectEqual(userDataAfter, expectedUserData); + +// truffleAssert.eventEmitted(txResult, 'Borrow', (ev: any) => { +// const {_reserve, _user, _amount, _borrowRateMode, _borrowRate, _originationFee} = ev; +// return ( +// _reserve.toLowerCase() === reserve.toLowerCase() && +// _user.toLowerCase() === user.toLowerCase() && +// new BigNumber(_amount).eq(amountToBorrow) && +// new BigNumber(_borrowRateMode).eq(expectedUserData.borrowRateMode) && +// new BigNumber(_borrowRate).eq(expectedUserData.borrowRate) && +// new BigNumber(_originationFee).eq( +// expectedUserData.originationFee.minus(userDataBefore.originationFee) +// ) +// ); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert( +// lendingPoolInstance.borrow(reserve, amountToBorrow, interestRateMode, '0', txOptions), +// revertMessage +// ); +// } +// }; + +// export const repay = async ( +// reserveSymbol: string, +// amount: string, +// user: string, +// onBehalfOf: string, +// sendValue: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {lendingPoolInstance, artifacts, ethereumAddress} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// const {reserveData: reserveDataBefore, userData: userDataBefore} = await getContractsData( +// reserve, +// onBehalfOf +// ); + +// let amountToRepay = '0'; + +// if (amount !== '-1') { +// amountToRepay = await convertToCurrencyDecimals(reserve, amount); +// } else { +// amountToRepay = MAX_UINT_AMOUNT; +// } + +// const txOptions: any = { +// from: user, +// }; + +// if (ethereumAddress === reserve) { +// if (sendValue) { +// if (sendValue !== '-1') { +// const valueToSend = await convertToCurrencyDecimals(reserve, sendValue); +// txOptions.value = valueToSend; +// } else { +// txOptions.value = userDataBefore.currentBorrowBalance +// .plus(await convertToCurrencyDecimals(reserve, '0.1')) +// .toFixed(0); //add 0.1 ETH to the repayment amount to cover for accrued interest during tx execution +// } +// } else { +// txOptions.value = amountToRepay; +// } +// } + +// if (expectedResult === 'success') { +// const txResult = await lendingPoolInstance.repay(reserve, amountToRepay, onBehalfOf, txOptions); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const { +// reserveData: reserveDataAfter, +// userData: userDataAfter, +// timestamp, +// } = await getContractsData(reserve, onBehalfOf); + +// const expectedReserveData = calcExpectedReserveDataAfterRepay( +// amountToRepay, +// reserveDataBefore, +// userDataBefore, +// txTimestamp, +// timestamp +// ); + +// const expectedUserData = calcExpectedUserDataAfterRepay( +// amountToRepay, +// reserveDataBefore, +// expectedReserveData, +// userDataBefore, +// user, +// onBehalfOf, +// txTimestamp, +// timestamp, +// txCost +// ); + +// expectEqual(reserveDataAfter, expectedReserveData); +// expectEqual(userDataAfter, expectedUserData); + +// truffleAssert.eventEmitted(txResult, 'Repay', (ev: any) => { +// const {_reserve, _user, _repayer} = ev; + +// return ( +// _reserve.toLowerCase() === reserve.toLowerCase() && +// _user.toLowerCase() === onBehalfOf.toLowerCase() && +// _repayer.toLowerCase() === user.toLowerCase() +// ); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert( +// lendingPoolInstance.repay(reserve, amountToRepay, onBehalfOf, txOptions), +// revertMessage +// ); +// } +// }; + +// export const setUseAsCollateral = async ( +// reserveSymbol: string, +// user: string, +// useAsCollateral: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {lendingPoolInstance, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// const {reserveData: reserveDataBefore, userData: userDataBefore} = await getContractsData( +// reserve, +// user +// ); + +// const txOptions: any = { +// from: user, +// }; + +// const useAsCollateralBool = useAsCollateral.toLowerCase() === 'true'; + +// if (expectedResult === 'success') { +// const txResult = await lendingPoolInstance.setUserUseReserveAsCollateral( +// reserve, +// useAsCollateralBool, +// txOptions +// ); + +// const {txCost} = await getTxCostAndTimestamp(txResult); + +// const {userData: userDataAfter} = await getContractsData(reserve, user); + +// const expectedUserData = calcExpectedUserDataAfterSetUseAsCollateral( +// useAsCollateral.toLocaleLowerCase() === 'true', +// reserveDataBefore, +// userDataBefore, +// txCost +// ); + +// expectEqual(userDataAfter, expectedUserData); +// if (useAsCollateralBool) { +// truffleAssert.eventEmitted(txResult, 'ReserveUsedAsCollateralEnabled', (ev: any) => { +// const {_reserve, _user} = ev; +// return _reserve === reserve && _user === user; +// }); +// } else { +// truffleAssert.eventEmitted(txResult, 'ReserveUsedAsCollateralDisabled', (ev: any) => { +// const {_reserve, _user} = ev; +// return _reserve === reserve && _user === user; +// }); +// } +// } else if (expectedResult === 'revert') { +// await expectRevert( +// lendingPoolInstance.setUserUseReserveAsCollateral(reserve, useAsCollateralBool, txOptions), +// revertMessage +// ); +// } +// }; + +// export const swapBorrowRateMode = async ( +// reserveSymbol: string, +// user: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {lendingPoolInstance, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// const {reserveData: reserveDataBefore, userData: userDataBefore} = await getContractsData( +// reserve, +// user +// ); + +// const txOptions: any = { +// from: user, +// }; + +// if (expectedResult === 'success') { +// const txResult = await lendingPoolInstance.swapBorrowRateMode(reserve, txOptions); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const {reserveData: reserveDataAfter, userData: userDataAfter} = await getContractsData( +// reserve, +// user +// ); + +// const expectedReserveData = calcExpectedReserveDataAfterSwapRateMode( +// reserveDataBefore, +// userDataBefore, +// txTimestamp +// ); + +// const expectedUserData = calcExpectedUserDataAfterSwapRateMode( +// reserveDataBefore, +// expectedReserveData, +// userDataBefore, +// txCost, +// txTimestamp +// ); + +// expectEqual(reserveDataAfter, expectedReserveData); +// expectEqual(userDataAfter, expectedUserData); + +// truffleAssert.eventEmitted(txResult, 'Swap', (ev: any) => { +// const {_user, _reserve, _newRateMode, _newRate} = ev; +// return ( +// _user === user && +// _reserve == reserve && +// new BigNumber(_newRateMode).eq(expectedUserData.borrowRateMode) && +// new BigNumber(_newRate).eq(expectedUserData.borrowRate) +// ); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert(lendingPoolInstance.swapBorrowRateMode(reserve, txOptions), revertMessage); +// } +// }; + +// export const rebalanceStableBorrowRate = async ( +// reserveSymbol: string, +// user: string, +// target: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {lendingPoolInstance, artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// const {reserveData: reserveDataBefore, userData: userDataBefore} = await getContractsData( +// reserve, +// target +// ); + +// const txOptions: any = { +// from: user, +// }; + +// if (expectedResult === 'success') { +// const txResult = await lendingPoolInstance.rebalanceStableBorrowRate( +// reserve, +// target, +// txOptions +// ); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const {reserveData: reserveDataAfter, userData: userDataAfter} = await getContractsData( +// reserve, +// target +// ); + +// const expectedReserveData = calcExpectedReserveDataAfterStableRateRebalance( +// reserveDataBefore, +// userDataBefore, +// txTimestamp +// ); + +// const expectedUserData = calcExpectedUserDataAfterStableRateRebalance( +// reserveDataBefore, +// expectedReserveData, +// userDataBefore, +// txCost, +// txTimestamp +// ); + +// expectEqual(reserveDataAfter, expectedReserveData); +// expectEqual(userDataAfter, expectedUserData); + +// truffleAssert.eventEmitted(txResult, 'RebalanceStableBorrowRate', (ev: any) => { +// const {_user, _reserve, _newStableRate} = ev; +// return ( +// _user.toLowerCase() === target.toLowerCase() && +// _reserve.toLowerCase() === reserve.toLowerCase() && +// new BigNumber(_newStableRate).eq(expectedUserData.borrowRate) +// ); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert( +// lendingPoolInstance.rebalanceStableBorrowRate(reserve, target, txOptions), +// revertMessage +// ); +// } +// }; + +// export const redirectInterestStream = async ( +// reserveSymbol: string, +// user: string, +// to: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const { +// aTokenInstance, +// reserve, +// txOptions, +// userData: fromDataBefore, +// reserveData: reserveDataBefore, +// } = await getDataBeforeAction(reserveSymbol, user); + +// const {userData: toDataBefore} = await getContractsData(reserve, to); + +// if (expectedResult === 'success') { +// const txResult = await aTokenInstance.redirectInterestStream(to, txOptions); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const {userData: fromDataAfter} = await getContractsData(reserve, user); + +// const {userData: toDataAfter} = await getContractsData(reserve, to); + +// const [expectedFromData, expectedToData] = calcExpectedUsersDataAfterRedirectInterest( +// reserveDataBefore, +// fromDataBefore, +// toDataBefore, +// user, +// to, +// true, +// txCost, +// txTimestamp +// ); + +// expectEqual(fromDataAfter, expectedFromData); +// expectEqual(toDataAfter, expectedToData); + +// truffleAssert.eventEmitted(txResult, 'InterestStreamRedirected', (ev: any) => { +// const {_from, _to} = ev; +// return _from === user +// && _to === (to === user ? NIL_ADDRESS : to); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert(aTokenInstance.redirectInterestStream(to, txOptions), revertMessage); +// } +// }; + +// export const redirectInterestStreamOf = async ( +// reserveSymbol: string, +// user: string, +// from: string, +// to: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const { +// aTokenInstance, +// reserve, +// txOptions, +// userData: fromDataBefore, +// reserveData: reserveDataBefore, +// } = await getDataBeforeAction(reserveSymbol, from); + +// const {userData: toDataBefore} = await getContractsData(reserve, user); + +// if (expectedResult === 'success') { +// const txResult = await aTokenInstance.redirectInterestStreamOf(from, to, txOptions); + +// const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); + +// const {userData: fromDataAfter} = await getContractsData(reserve, from); + +// const {userData: toDataAfter} = await getContractsData(reserve, to); + +// const [expectedFromData, exptectedToData] = calcExpectedUsersDataAfterRedirectInterest( +// reserveDataBefore, +// fromDataBefore, +// toDataBefore, +// from, +// to, +// from === user, +// txCost, +// txTimestamp +// ); + +// expectEqual(fromDataAfter, expectedFromData); +// expectEqual(toDataAfter, exptectedToData); + +// truffleAssert.eventEmitted(txResult, 'InterestStreamRedirected', (ev: any) => { +// const {_from, _to} = ev; +// return _from.toLowerCase() === from.toLowerCase() && _to.toLowerCase() === to.toLowerCase(); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert(aTokenInstance.redirectInterestStreamOf(from, to, txOptions), revertMessage); +// } +// }; + +// export const allowInterestRedirectionTo = async ( +// reserveSymbol: string, +// user: string, +// to: string, +// expectedResult: string, +// revertMessage?: string +// ) => { +// const {aTokenInstance, txOptions} = await getDataBeforeAction(reserveSymbol, user); + +// if (expectedResult === 'success') { +// const txResult = await aTokenInstance.allowInterestRedirectionTo(to, txOptions); + +// truffleAssert.eventEmitted(txResult, 'InterestRedirectionAllowanceChanged', (ev: any) => { +// const {_from, _to} = ev; +// return _from.toLowerCase() === user.toLowerCase() && _to.toLowerCase() === to.toLowerCase(); +// }); +// } else if (expectedResult === 'revert') { +// await expectRevert(aTokenInstance.allowInterestRedirectionTo(to, txOptions), revertMessage); +// } +// }; + +// const expectEqual = ( +// actual: UserReserveData | ReserveData, +// expected: UserReserveData | ReserveData +// ) => { +// if (!configuration.skipIntegrityCheck) { +// expect(actual).to.be.almostEqualOrEqual(expected); +// } +// }; + +// interface ActionData { +// reserve: string; +// reserveData: ReserveData; +// userData: UserReserveData; +// aTokenInstance: ATokenInstance; +// txOptions: any; +// } + +// const getDataBeforeAction = async (reserveSymbol: string, user: string): Promise => { +// const {artifacts} = configuration; + +// const reserve = await getReserveAddressFromSymbol(reserveSymbol, artifacts); + +// const {reserveData, userData} = await getContractsData(reserve, user); + +// const {aTokenAddress} = reserveData; + +// const aTokenInstance: ATokenInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.AToken, +// aTokenAddress +// ); + +// const txOptions: any = { +// from: user, +// }; + +// return { +// reserve, +// reserveData, +// userData, +// aTokenInstance, +// txOptions, +// }; +// }; + +// const getTxCostAndTimestamp = async (tx: any) => { +// const txTimestamp = new BigNumber((await web3.eth.getBlock(tx.receipt.blockNumber)).timestamp); + +// const txInfo = await configuration.web3.eth.getTransaction(tx.receipt.transactionHash); +// const txCost = new BigNumber(tx.receipt.gasUsed).multipliedBy(txInfo.gasPrice); + +// return {txCost, txTimestamp}; +// }; + +// const getContractsData = async (reserve: string, user: string) => { +// const [reserveData, userData, timestamp] = await Promise.all([ +// getReserveData(configuration.lendingPoolInstance, reserve, artifacts), +// getUserData( +// configuration.lendingPoolInstance, +// configuration.lendingPoolCoreInstance, +// reserve, +// user, +// artifacts +// ), +// time.latest(), +// ]); + +// return { +// reserveData, +// userData, +// timestamp: new BigNumber(timestamp), +// }; +// }; diff --git a/test/helpers/scenario-engine.ts b/test/helpers/scenario-engine.ts new file mode 100644 index 00000000..5cb12a10 --- /dev/null +++ b/test/helpers/scenario-engine.ts @@ -0,0 +1,233 @@ +// import { +// deposit, +// mint, +// approve, +// redeem, +// borrow, +// repay, +// setUseAsCollateral, +// swapBorrowRateMode, +// rebalanceStableBorrowRate, +// allowInterestRedirectionTo, +// redirectInterestStream, +// redirectInterestStreamOf, +// } from '../actions'; +// import {on} from 'cluster'; +// import { RateMode } from '../../utils/types'; + +// export interface Action { +// name: string; +// args?: any; +// expected: string; +// revertMessage?: string; +// } + +// export interface Story { +// description: string; +// actions: Action[]; +// } + +// export interface Scenario { +// title: string; +// description: string; +// stories: Story[]; +// } + +// export const executeStory = async (story: Story, users: string[]) => { +// for (const action of story.actions) { +// await executeAction(action, users); +// } +// }; + +// const executeAction = async (action: Action, users: string[]) => { +// const {reserve, user} = action.args; +// const {name, expected, revertMessage} = action; + +// if (!name || name === '') { +// throw 'Action name is missing'; +// } +// if (!reserve || reserve === '') { +// throw 'Invalid reserve selected for deposit'; +// } +// if (!user || user === '') { +// throw `Invalid user selected to deposit into the ${reserve} reserve`; +// } + +// if (!expected || expected === '') { +// throw `An expected resut for action ${name} is required`; +// } + +// const userAddress = users[parseInt(user)]; + +// switch (name) { +// case 'mint': +// const {amount} = action.args; + +// if (!amount || amount === '') { +// throw `Invalid amount of ${reserve} to mint`; +// } + +// await mint(reserve, amount, userAddress); +// break; + +// case 'approve': +// await approve(reserve, userAddress); +// break; + +// case 'deposit': +// { +// const {amount, sendValue} = action.args; + +// if (!amount || amount === '') { +// throw `Invalid amount to deposit into the ${reserve} reserve`; +// } + +// await deposit(reserve, amount, userAddress, sendValue, expected, revertMessage); +// } +// break; + +// case 'redeem': +// { +// const {amount} = action.args; + +// if (!amount || amount === '') { +// throw `Invalid amount to redeem from the ${reserve} reserve`; +// } + +// await redeem(reserve, amount, userAddress, expected, revertMessage); +// } +// break; +// case 'borrow': +// { +// const {amount, borrowRateMode, timeTravel} = action.args; + +// if (!amount || amount === '') { +// throw `Invalid amount to borrow from the ${reserve} reserve`; +// } + +// let rateMode: string = RateMode.None; + +// if (borrowRateMode === 'none') { +// RateMode.None; +// } else if (borrowRateMode === 'stable') { +// rateMode = RateMode.Stable; +// } else if (borrowRateMode === 'variable') { +// rateMode = RateMode.Variable; +// } else { +// //random value, to test improper selection of the parameter +// rateMode = '4'; +// } + +// await borrow(reserve, amount, rateMode, userAddress, timeTravel, expected, revertMessage); +// } +// break; + +// case 'repay': +// { +// const {amount, sendValue} = action.args; +// let {onBehalfOf} = action.args; + +// if (!amount || amount === '') { +// throw `Invalid amount to repay into the ${reserve} reserve`; +// } + +// if (!onBehalfOf || onBehalfOf === '') { +// console.log( +// 'WARNING: No onBehalfOf specified for a repay action. Defaulting to the repayer address' +// ); +// onBehalfOf = userAddress; +// } else { +// onBehalfOf = users[parseInt(onBehalfOf)]; +// } + +// await repay(reserve, amount, userAddress, onBehalfOf, sendValue, expected, revertMessage); +// } +// break; + +// case 'setUseAsCollateral': +// { +// const {useAsCollateral} = action.args; + +// if (!useAsCollateral || useAsCollateral === '') { +// throw `A valid value for useAsCollateral needs to be set when calling setUseReserveAsCollateral on reserve ${reserve}`; +// } +// await setUseAsCollateral(reserve, userAddress, useAsCollateral, expected, revertMessage); +// } +// break; + +// case 'swapBorrowRateMode': +// await swapBorrowRateMode(reserve, userAddress, expected, revertMessage); +// break; + +// case 'rebalanceStableBorrowRate': +// { +// const {target} = action.args; + +// if (!target || target === '') { +// throw `A target must be selected when trying to rebalance a stable rate`; +// } +// const targetAddress = users[parseInt(target)]; + +// await rebalanceStableBorrowRate( +// reserve, +// userAddress, +// targetAddress, +// expected, +// revertMessage +// ); +// } +// break; + +// case 'redirectInterestStream': +// { +// const {to} = action.args; + +// if (!to || to === '') { +// throw `A target must be selected when trying to redirect the interest`; +// } +// const toAddress = users[parseInt(to)]; + +// await redirectInterestStream(reserve, userAddress, toAddress, expected, revertMessage); +// } +// break; + +// case 'redirectInterestStreamOf': +// { +// const {from, to} = action.args; + +// if (!from || from === '') { +// throw `A from address must be specified when trying to redirect the interest`; +// } +// if (!to || to === '') { +// throw `A target must be selected when trying to redirect the interest`; +// } +// const toAddress = users[parseInt(to)]; +// const fromAddress = users[parseInt(from)]; + +// await redirectInterestStreamOf( +// reserve, +// userAddress, +// fromAddress, +// toAddress, +// expected, +// revertMessage +// ); +// } +// break; + +// case 'allowInterestRedirectionTo': +// { +// const {to} = action.args; + +// if (!to || to === '') { +// throw `A target must be selected when trying to redirect the interest`; +// } +// const toAddress = users[parseInt(to)]; + +// await allowInterestRedirectionTo(reserve, userAddress, toAddress, expected, revertMessage); +// } +// break; +// default: +// throw `Invalid action requested: ${name}`; +// } +// }; diff --git a/test/helpers/scenarios/borrow-negatives.json b/test/helpers/scenarios/borrow-negatives.json new file mode 100644 index 00000000..be2382db --- /dev/null +++ b/test/helpers/scenarios/borrow-negatives.json @@ -0,0 +1,111 @@ +{ + "title": "LendingPool: Borrow negatives (reverts)", + "description": "Test cases for the deposit function.", + "stories": [ + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 1 ETH as collateral and tries to borrow 100 DAI with rate mode NONE (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "none", + "user": "1" + }, + "expected": "revert", + "revertMessage" : "Invalid interest rate mode selected" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 1 ETH as collateral and tries to borrow 100 DAI with an invalid rate mode (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "invalid", + "user": "1" + }, + "expected": "revert", + "revertMessage" : "Invalid interest rate mode selected" + } + ] + } + ] + } + \ No newline at end of file diff --git a/test/helpers/scenarios/borrow-repay-stable.json b/test/helpers/scenarios/borrow-repay-stable.json new file mode 100644 index 00000000..5dea86b9 --- /dev/null +++ b/test/helpers/scenarios/borrow-repay-stable.json @@ -0,0 +1,709 @@ +{ + "title": "LendingPool: Borrow/repay (stable rate)", + "description": "Test cases for the borrow function, stable mode.", + "stories": [ + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 1 ETH as collateral and borrows 100 DAI at stable rate", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 tries to borrow the rest of the DAI liquidity (revert expected)", + "actions": [ + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "900", + "borrowRateMode": "stable", + "user": "1" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + } + ] + }, + { + "description": "User 1 repays the DAI borrow after one year", + "actions": [ + { + "name": "mint", + "description": "Mint 15 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "15", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems the deposited DAI plus interest", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 deposits 1000 DAI, user 2 tries to borrow 1000 DAI at a stable rate without any collateral (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "1000", + "borrowRateMode": "stable", + "user": "2" + }, + "expected": "revert", + "revertMessage": "The collateral balance is 0" + } + ] + }, + { + "description": "User 1 deposits 1000 DAI, user 2 deposits 0.92267103215 ETH, tries to borrow 187.5 DAI which is the maximum amount he can borrow, if fees were not considered. (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.92267103215", + "user": "2", + "sendValue": "0.92267103215" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "187.5", + "borrowRateMode": "stable", + "user": "2" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 deposits 1000 USDC, user 2 deposits 0.91928534104 ETH, tries to borrow 187.5 USDC which is the maximum amount he can borrow, if fees were not considered. (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.91928534104", + "user": "2", + "sendValue": "0.91928534104" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "USDC", + "amount": "187.5", + "borrowRateMode": "stable", + "user": "2" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "USDC", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 deposits 1.5 ETH, user 2 deposits 100 DAI, tries to borrow 0.276801309645 ETH which is the maximum amount he can borrow, if fees were not considered. (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1.5", + "user": "1", + "sendValue": "1.5" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "2" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "2" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "ETH", + "amount": "0.276801309645", + "borrowRateMode": "stable", + "user": "2" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 1,2,3,4 deposit 1 ETH each and borrow 100 DAI at stable rate. Everything is repaid, user 0 redeems", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "2", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "2", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "3", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "3", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "4", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "4", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 15 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "15", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 15 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "15", + "user": "2" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "2" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "2", + "onBehalfOf": "2" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 30 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "30", + "user": "3" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "3" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "3", + "onBehalfOf": "3" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 30 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "30", + "user": "4" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "4" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "4", + "onBehalfOf": "4" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 2 ETH and borrow 100 DAI at stable rate first, then 100 DAI at variable rate, repays everything. User 0 redeems", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "2", + "user": "1", + "sendValue": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 50 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "50", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + } + ] +} \ No newline at end of file diff --git a/test/helpers/scenarios/borrow-repay-variable.json b/test/helpers/scenarios/borrow-repay-variable.json new file mode 100644 index 00000000..2c4265f5 --- /dev/null +++ b/test/helpers/scenarios/borrow-repay-variable.json @@ -0,0 +1,1027 @@ +{ + "title": "LendingPool: Borrow/repay (variable rate)", + "description": "Test cases for the borrow function, variable mode.", + "stories": [ + { + "description": "User 2 deposits 1 DAI to account for rounding errors", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "2" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1", + "user": "2" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 1 ETH as collateral and borrows 100 DAI at variable rate", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 tries to borrow a very small amount of DAI, which would result in 0 fee accrued (revert expected)", + "actions": [ + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "0.000000000000000001", + "borrowRateMode": "variable", + "user": "1" + }, + "expected": "revert", + "revertMessage": "The amount to borrow is too small" + } + ] + }, + { + "description": "User 1 tries to borrow the rest of the DAI liquidity (revert expected)", + "actions": [ + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "900", + "borrowRateMode": "variable", + "user": "1" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + } + ] + }, + { + "description": "User 1 tries to repay 0 DAI (revert expected)", + "actions": [ + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "0", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "revert", + "revertMessage": "Amount must be greater than 0" + } + ] + }, + { + "description": "User 1 repays a small amount of DAI, enough to cover the origination fee + a small part of the interest", + "actions": [ + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "1.25", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 repays the DAI borrow after one year", + "actions": [ + { + "name": "mint", + "description": "Mint 10 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "10", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems the deposited DAI plus interest", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 redeems the collateral", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 2 deposits a small amount of ETH to account for rounding errors", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.001", + "user": "2", + "sendValue": "0.001" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1 ETH, user 1 deposits 100 LINK as collateral and borrows 0.5 ETH at variable rate", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "0", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "LINK", + "amount": "100", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "LINK", + "user": "1" + }, + "expected": "success" + }, + + { + "name": "deposit", + "args": { + "reserve": "LINK", + "amount": "100", + "user": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "ETH", + "amount": "0.5", + "borrowRateMode": "variable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 tries to repay 0 ETH", + "actions": [ + { + "name": "repay", + "args": { + "reserve": "ETH", + "amount": "0", + "user": "1", + "onBehalfOf": "1", + "sendValue": "0" + }, + "expected": "revert", + "revertMessage": "Amount must be greater than 0" + } + ] + }, + { + "description": "User 1 tries to repay without sending any ETH value (revert expected)", + "actions": [ + { + "name": "repay", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "1", + "onBehalfOf": "1", + "sendValue": "0" + }, + "expected": "revert", + "revertMessage": "Invalid msg.value sent for the repayment" + } + ] + }, + { + "description": "User 2 tries to repay everything on behalf of user 1 using uint(-1) (revert expected)", + "actions": [ + { + "name": "repay", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "2", + "onBehalfOf": "1", + "sendValue": "-1" + }, + "expected": "revert", + "revertMessage": "To repay on behalf of an user an explicit amount to repay is needed" + } + ] + }, + { + "description": "User 3 repays a small amount of ETH on behalf of user 1", + "actions": [ + { + "name": "repay", + "args": { + "reserve": "ETH", + "amount": "0.2", + "user": "3", + "onBehalfOf": "1", + "sendValue": "0.2" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 repays the ETH borrow after one year", + "actions": [ + { + "name": "repay", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "1", + "onBehalfOf": "1", + "sendValue": "-1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems the deposited ETH plus interest", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 redeems the collateral", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "LINK", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + + { + "description": "User 2 deposits 1 USDC to account for rounding errors", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "2" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1", + "user": "2" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 USDC, user 1 deposits 1 ETH as collateral and borrows 100 USDC at variable rate", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "USDC", + "amount": "100", + "borrowRateMode": "variable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 tries to borrow the rest of the USDC liquidity (revert expected)", + "actions": [ + { + "name": "borrow", + "args": { + "reserve": "USDC", + "amount": "900", + "borrowRateMode": "variable", + "user": "1" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + } + ] + }, + { + "description": "User 1 repays the USDC borrow after one year", + "actions": [ + { + "name": "mint", + "description": "Mint 10 USDC to cover the interest", + "args": { + "reserve": "USDC", + "amount": "10", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "USDC", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems the deposited USDC plus interest", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "USDC", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 redeems the collateral", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 deposits 1000 DAI, user 3 tries to borrow 1000 DAI without any collateral (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "1000", + "borrowRateMode": "variable", + "user": "3" + }, + "expected": "revert", + "revertMessage": "The collateral balance is 0" + } + ] + }, + { + "description": "user 3 deposits 0.1 ETH collateral to borrow 100 DAI; 0.1 ETH is not enough to borrow 100 DAI (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.1", + "user": "3", + "sendValue": "0.1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "3" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + } + ] + }, + { + "description": "user 3 redeems the 0.1 ETH", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "3" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 deposits 1000 USDC, user 3 tries to borrow 1000 USDC without any collateral (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "USDC", + "amount": "1000", + "borrowRateMode": "variable", + "user": "3" + }, + "expected": "revert", + "revertMessage": "The collateral balance is 0" + } + ] + }, + { + "description": "user 3 deposits 0.1 ETH collateral to borrow 100 USDC; 0.1 ETH is not enough to borrow 100 USDC (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.1", + "user": "3", + "sendValue": "0.1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "USDC", + "amount": "100", + "borrowRateMode": "variable", + "user": "3" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + } + ] + }, + { + "description": "user 3 redeems the 0.1 ETH", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "3" + }, + "expected": "success" + } + ] + }, + { + "description": "User 4 deposits 1000 DAI, user 5 deposits 0.92267103215 ETH, tries to borrow 187.5 DAI which is the maximum amount he can borrow, if fees were not considered. (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "4" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "4" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "4" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.92267103215", + "user": "5", + "sendValue": "0.92267103215" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "187.5", + "borrowRateMode": "variable", + "user": "5" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "5" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "4" + }, + "expected": "success" + } + ] + }, + { + "description": "User 4 deposits 1000 USDC, user 5 deposits 0.91928534104 ETH, tries to borrow 187.5 USDC which is the maximum amount he can borrow, if fees were not considered. (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "4" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "4" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "4" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "0.91928534104", + "user": "5", + "sendValue": "0.91928534104" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "USDC", + "amount": "187.5", + "borrowRateMode": "variable", + "user": "5" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "5" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "USDC", + "amount": "-1", + "user": "4" + }, + "expected": "success" + } + ] + }, + { + "description": "User 4 deposits 1.5 ETH, user 5 deposits 100 DAI, tries to borrow 0.276801309645 ETH which is the maximum amount he can borrow, if fees were not considered. (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1.5", + "user": "4", + "sendValue": "1.5" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount" : "100", + "user": "5" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "5" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "5" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "ETH", + "amount": "0.276801309645", + "borrowRateMode": "variable", + "user": "5" + }, + "expected": "revert", + "revertMessage": "There is not enough collateral to cover a new borrow" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "5" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "4" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 6 deposits 2 ETH and borrow 100 DAI at variable rate first, then 100 DAI at stable rate, repays everything. User 0 redeems", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "2", + "user": "6", + "sendValue": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "6", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "6", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 50 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "50", + "user": "6" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "6" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "6", + "onBehalfOf": "6" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + } + ] +} diff --git a/test/helpers/scenarios/deposit.json b/test/helpers/scenarios/deposit.json new file mode 100644 index 00000000..1fd6fa5a --- /dev/null +++ b/test/helpers/scenarios/deposit.json @@ -0,0 +1,232 @@ +{ + "title" : "LendingPool: Deposit", + "description" : "Test cases for the deposit function.", + "stories": [ + { + "description" : "User 0 Deposits 1000 DAI in an empty reserve", + "actions" : [ + { + "name" : "mint", + "args" : { + "reserve" : "DAI", + "amount" : "1000", + "user" : "0" + }, + "expected": "success" + }, + { + "name" : "approve", + "args" : { + "reserve" : "DAI", + "user" : "0" + }, + "expected": "success" + }, + { + "name" : "deposit", + "args" : { + "reserve" : "DAI", + "amount" : "1000", + "user" : "0" + }, + "expected": "success" + } + ] + + }, + { + "description" : "User 1 deposits 1000 DAI after user 1", + "actions" : [ + { + "name" : "mint", + "args" : { + "reserve" : "DAI", + "amount" : "1000", + "user" : "1" + }, + "expected": "success" + }, + { + "name" : "approve", + "args" : { + "reserve" : "DAI", + "user" : "1" + }, + "expected": "success" + }, + { + "name" : "deposit", + "args" : { + "reserve" : "DAI", + "amount" : "1000", + "user" : "1" + }, + "expected": "success" + } + ] + + }, + { + "description" : "User 0 deposits 1000 USDC in an empty reserve", + "actions" : [ + { + "name" : "mint", + "args" : { + "reserve" : "USDC", + "amount" : "1000", + "user" : "0" + }, + "expected": "success" + }, + { + "name" : "approve", + "args" : { + "reserve" : "USDC", + "user" : "0" + }, + "expected": "success" + }, + { + "name" : "deposit", + "args" : { + "reserve" : "USDC", + "amount" : "1000", + "user" : "0" + }, + "expected": "success" + } + ] + + }, + { + "description" : "User 1 deposits 1000 USDC after user 0", + "actions" : [ + { + "name" : "mint", + "args" : { + "reserve" : "USDC", + "amount" : "1000", + "user" : "1" + }, + "expected": "success" + }, + { + "name" : "approve", + "args" : { + "reserve" : "USDC", + "user" : "1" + }, + "expected": "success" + }, + { + "name" : "deposit", + "args" : { + "reserve" : "USDC", + "amount" : "1000", + "user" : "1" + }, + "expected": "success" + } + ] + + }, + { + "description" : "User 0 deposits 1 ETH in an empty reserve", + "actions" : [ + { + "name" : "deposit", + "args" : { + "reserve" : "ETH", + "amount" : "1", + "user" : "0", + "sendValue" : "1" + }, + "expected": "success" + } + ] + + }, + { + "description" : "User 1 deposits 1 ETH after user 0", + "actions" : [ + { + "name" : "deposit", + "args" : { + "reserve" : "ETH", + "amount" : "1", + "user" : "1", + "sendValue" : "1" + }, + "expected": "success" + } + ] + + }, + { + "description" : "User 1 deposits 0 ETH (revert expected)", + "actions" : [ + { + "name" : "deposit", + "args" : { + "reserve" : "ETH", + "amount" : "0", + "user" : "1" + }, + "expected": "revert", + "revertMessage" : "Amount must be greater than 0" + } + ] + + }, + { + "description" : "User 1 deposits 0 DAI", + "actions" : [ + { + "name" : "deposit", + "args" : { + "reserve" : "DAI", + "amount" : "0", + "user" : "1" + }, + "expected": "revert", + "revertMessage" : "Amount must be greater than 0" + } + ] + + }, + { + "description" : "User 1 tries to deposit ETH without sending any value", + "actions" : [ + { + "name" : "deposit", + "args" : { + "reserve" : "ETH", + "amount" : "1", + "user" : "1", + "sendValue" : "0" + }, + "expected": "revert", + "revertMessage" : "The amount and the value sent to deposit do not match" + } + ] + + }, + { + "description" : "User 1 tries to deposit ETH by sending less value than required", + "actions" : [ + { + "name" : "deposit", + "args" : { + "reserve" : "ETH", + "amount" : "1", + "user" : "1", + "sendValue" : "0.5" + }, + "expected": "revert", + "revertMessage" : "The amount and the value sent to deposit do not match" + } + ] + + } + ] +} \ No newline at end of file diff --git a/test/helpers/scenarios/interest-redirection-negatives.json b/test/helpers/scenarios/interest-redirection-negatives.json new file mode 100644 index 00000000..acdc62d4 --- /dev/null +++ b/test/helpers/scenarios/interest-redirection-negatives.json @@ -0,0 +1,102 @@ +{ + "title": "AToken: interest rate redirection negative test cases", + "description": "Test cases for the aToken interest rate redirection.", + "stories": [ + { + "description": "User 0 deposits 1000 DAI, tries to give allowance to redirect interest to himself (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "allowInterestRedirectionTo", + "args": { + "reserve": "DAI", + "user": "0", + "to": "0" + }, + "expected": "revert", + "revertMessage": "User cannot give allowance to himself" + } + ] + }, + { + "description": "User 1 tries to redirect the interest of user 0 without allowance (revert expected)", + "actions": [ + { + "name": "redirectInterestStreamOf", + "args": { + "reserve": "DAI", + "user": "1", + "from": "0", + "to": "2" + }, + "expected": "revert", + "revertMessage": "Caller is not allowed to redirect the interest of the user" + } + ] + }, + { + "description": "User 0 tries to redirect the interest to user 2 twice (revert expected)", + "actions": [ + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "0", + "to": "2" + }, + "expected": "success" + }, + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "0", + "to": "2" + }, + "expected": "revert", + "revertMessage": "Interest is already redirected to the user" + } + ] + }, + { + "description": "User 3 with 0 balance tries to redirect the interest to user 2 (revert expected)", + "actions": [ + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "3", + "to": "2" + }, + "expected": "revert", + "revertMessage" : "Interest stream can only be redirected if there is a valid balance" + } + ] + } + ] +} diff --git a/test/helpers/scenarios/interest-redirection.json b/test/helpers/scenarios/interest-redirection.json new file mode 100644 index 00000000..e89c8620 --- /dev/null +++ b/test/helpers/scenarios/interest-redirection.json @@ -0,0 +1,386 @@ +{ + "title": "AToken: interest rate redirection", + "description": "Test cases for the aToken interest rate redirection.", + "stories": [ + { + "description": "User 0 deposits 1000 DAI, redirects the interest to user 2", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "0", + "to": "2" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 deposits 1 ETH, borrows 100 DAI, repays after one year. Users 0 deposits another 1000 DAI. Redirected balance of user 2 is updated", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "2", + "user": "1", + "sendValue": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 borrows another 100 DAI, repay the whole amount. Users 0 and User 2 redeem", + "actions": [ + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "2" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, redirects interest to user 2, user 1 borrows 100 DAI. After one year, user 0 redirects interest back to himself, user 1 borrows another 100 DAI and after another year repays the whole amount. Users 0 and User 2 redeem", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "0", + "to": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "0", + "to": "0" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "2" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, redirects interest to user 2, user 1 borrows 100 DAI. After one year, user 2 redirects interest to user 3. user 1 borrows another 100 DAI, user 0 deposits another 100 DAI. User 1 repays the whole amount. Users 0, 2 first 1 DAI, then everything. User 3 redeems", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "0", + "to": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "redirectInterestStream", + "args": { + "reserve": "DAI", + "user": "2", + "to": "3" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "0" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "1", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "2" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "3" + }, + "expected": "success" + } + + ] + } + ] +} diff --git a/test/helpers/scenarios/rebalance-stable-rate.json b/test/helpers/scenarios/rebalance-stable-rate.json new file mode 100644 index 00000000..93c44801 --- /dev/null +++ b/test/helpers/scenarios/rebalance-stable-rate.json @@ -0,0 +1,175 @@ +{ + "title": "LendingPool: Rebalance stable rate", + "description": "Test cases for the rebalanceStableBorrowRate() function.", + "stories": [ + { + "description": "User 0 tries to rebalance user 1 who has no borrows in progress (revert expected)", + "actions": [ + { + "name": "rebalanceStableBorrowRate", + "args": { + "reserve": "DAI", + "user": "0", + "target": "1" + }, + "expected": "revert", + "revertMessage": "User does not have any borrow for this reserve" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 1 ETH, borrows 100 DAI at a variable rate, user 0 rebalances user 1 (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "rebalanceStableBorrowRate", + "args": { + "reserve": "DAI", + "user": "0", + "target": "1" + }, + "expected": "revert", + "revertMessage": "The user borrow is variable and cannot be rebalanced" + } + ] + }, + { + "description": "User 1 swaps to stable, user 0 tries to rebalance but the conditions are not met (revert expected)", + "actions": [ + { + "name": "swapBorrowRateMode", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "rebalanceStableBorrowRate", + "args": { + "reserve": "DAI", + "user": "0", + "target": "1" + }, + "expected": "revert", + "revertMessage": "Interest rate rebalance conditions were not met" + } + ] + }, + { + "description": "User 2 deposits ETH and borrows the remaining DAI, causing the stable rates to rise (liquidity rate < user 1 borrow rate). User 0 tries to rebalance user 1 (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "5", + "user": "2", + "sendValue": "5" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "2" + }, + "expected": "success" + }, + { + "name": "rebalanceStableBorrowRate", + "args": { + "reserve": "DAI", + "user": "0", + "target": "1" + }, + "expected": "revert", + "revertMessage": "Interest rate rebalance conditions were not met" + } + ] + }, + { + "description": "User 2 borrows more DAI, causing the liquidity rate to rise above user 1 stable borrow rate User 0 rebalances user 1", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "3", + "user": "2", + "sendValue": "3" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "700", + "borrowRateMode": "variable", + "user": "2" + }, + "expected": "success" + }, + { + "name": "rebalanceStableBorrowRate", + "args": { + "reserve": "DAI", + "user": "0", + "target": "1" + }, + "expected": "success" + } + ] + } + ] +} diff --git a/test/helpers/scenarios/redeem-negatives.json b/test/helpers/scenarios/redeem-negatives.json new file mode 100644 index 00000000..3b3a1985 --- /dev/null +++ b/test/helpers/scenarios/redeem-negatives.json @@ -0,0 +1,98 @@ +{ + "title": "LendingPool: Redeem negative test cases", + "description": "Redeem function.", + "stories": [ + { + "description": "Users 0 Deposits 1000 DAI and tries to redeem 0 DAI (revert expected)", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "0", + "user": "0" + }, + "expected": "revert", + "revertMessage": "Amount to redeem needs to be > 0" + } + ] + }, + { + "description": "Users 0 tries to redeem 1100 DAI from the 1000 DAI deposited (revert expected)", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "1100", + "user": "0" + }, + "expected": "revert", + "revertMessage": "User cannot redeem more than the available balance" + } + ] + }, + { + "description": "Users 1 deposits 1 ETH, borrows 100 DAI, tries to redeem the 1 ETH deposited (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "1", + "borrowRateMode": "stable" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "1" + }, + "expected": "revert", + "revertMessage" : "Transfer cannot be allowed." + } + ] + } + ] +} diff --git a/test/helpers/scenarios/redeem.json b/test/helpers/scenarios/redeem.json new file mode 100644 index 00000000..4b670c2c --- /dev/null +++ b/test/helpers/scenarios/redeem.json @@ -0,0 +1,311 @@ +{ + "title": "LendingPool: Redeem", + "description": "Redeem function.", + "stories": [ + { + "description": "User 0 Deposits 1000 DAI in an empty reserve", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems half of the deposited DAI", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "500", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems remaining half of the deposited DAI", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 Deposits 1000 USDC in an empty reserve", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems half of the deposited USDC", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "USDC", + "amount": "500", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems remaining half of the deposited USDC", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "USDC", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 Deposits 1 ETH in an empty reserve", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "0", + "sendValue": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems half of the deposited ETH", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "0.5", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "User 0 redeems remaining half of the deposited ETH", + "actions": [ + { + "name": "redeem", + "args": { + "reserve": "ETH", + "amount": "-1", + "user": "0" + }, + "expected": "success" + } + ] + }, + { + "description": "Users 0 and 1 Deposit 1000 DAI, both redeem", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "0" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "Users 0 deposits 1000 DAI, user 1 Deposit 1000 USDC and 1 ETH, borrows 100 DAI. User 1 tries to redeem all the USDC", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "mint", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "USDC", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "USDC", + "amount": "1000", + "user": "1" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "1", + "user": "1", + "sendValue": "1" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "user": "1", + "borrowRateMode": "stable" + }, + "expected": "success" + }, + { + "name": "redeem", + "args": { + "reserve": "USDC", + "amount": "-1", + "user": "1" + }, + "expected": "success" + } + ] + } + ] +} diff --git a/test/helpers/scenarios/set-use-as-collateral.json b/test/helpers/scenarios/set-use-as-collateral.json new file mode 100644 index 00000000..fe93ffc2 --- /dev/null +++ b/test/helpers/scenarios/set-use-as-collateral.json @@ -0,0 +1,133 @@ +{ + "title": "LendingPool: Usage as collateral", + "description": "Test cases for the setUserUseReserveAsCollateral() function.", + "stories": [ + { + "description": "User 0 Deposits 1000 DAI, disables DAI as collateral", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "setUseAsCollateral", + "args": { + "reserve": "DAI", + "user": "0", + "useAsCollateral": "false" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 Deposits 2 ETH, disables ETH as collateral, borrows 400 DAI (revert expected)", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "2", + "user": "1", + "sendValue": "2" + }, + "expected": "success" + }, + { + "name": "setUseAsCollateral", + "args": { + "reserve": "ETH", + "user": "1", + "useAsCollateral": "false" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "400", + "borrowRateMode": "variable", + "user": "1" + }, + "expected": "revert", + "revertMessage": "The collateral balance is 0" + } + ] + }, + { + "description": "User 1 enables ETH as collateral, borrows 400 DAI", + "actions": [ + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "2", + "user": "1", + "sendValue": "2" + }, + "expected": "success" + }, + { + "name": "setUseAsCollateral", + "args": { + "reserve": "ETH", + "user": "1", + "useAsCollateral": "true" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "400", + "borrowRateMode": "variable", + "user": "1" + }, + "expected": "success" + } + + ] + }, + { + "description": "User 1 disables ETH as collateral (revert expected)", + "actions": [ + { + "name": "setUseAsCollateral", + "args": { + "reserve": "ETH", + "user": "1", + "useAsCollateral": "false" + }, + "expected": "revert", + "revertMessage" : "User deposit is already being used as collateral" + } + ] + } + ] +} + + diff --git a/test/helpers/scenarios/swap-rate-mode.json b/test/helpers/scenarios/swap-rate-mode.json new file mode 100644 index 00000000..e0bbf3c5 --- /dev/null +++ b/test/helpers/scenarios/swap-rate-mode.json @@ -0,0 +1,132 @@ +{ + "title": "LendingPool: Swap rate mode", + "description": "Test cases for the swapBorrowRateMode() function.", + "stories": [ + { + "description": "User 0 tries to swap rate mode without any borrow in progress (revert expected)", + "actions": [ + { + "name": "swapBorrowRateMode", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "revert", + "revertMessage": "User does not have a borrow in progress on this reserve" + } + ] + }, + { + "description": "User 0 deposits 1000 DAI, user 1 deposits 2 ETH as collateral, borrows 100 DAI at variable rate and swaps to stable after one year", + "actions": [ + { + "name": "mint", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "DAI", + "amount": "1000", + "user": "0" + }, + "expected": "success" + }, + { + "name": "deposit", + "args": { + "reserve": "ETH", + "amount": "2", + "user": "1", + "sendValue": "2" + }, + "expected": "success" + }, + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "variable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "swapBorrowRateMode", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + } + ] + }, + { + "description": "User 1 borrows another 100 DAI, and swaps back to variable after one year, repays the loan", + "actions": [ + { + "name": "borrow", + "args": { + "reserve": "DAI", + "amount": "100", + "borrowRateMode": "stable", + "user": "1", + "timeTravel": "365" + }, + "expected": "success" + }, + { + "name": "swapBorrowRateMode", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "mint", + "description": "Mint 50 DAI to cover the interest", + "args": { + "reserve": "DAI", + "amount": "50", + "user": "1" + }, + "expected": "success" + }, + { + "name": "approve", + "args": { + "reserve": "DAI", + "user": "1" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "1", + "onBehalfOf": "1" + }, + "expected": "success" + } + ] + } + ] +} diff --git a/test/helpers/utils/calculations.ts b/test/helpers/utils/calculations.ts new file mode 100644 index 00000000..1b9f8f0f --- /dev/null +++ b/test/helpers/utils/calculations.ts @@ -0,0 +1,1383 @@ +// import BigNumber from 'bignumber.js'; +// import { +// ONE_YEAR, +// RAY, +// MAX_UINT_AMOUNT, +// OPTIMAL_UTILIZATION_RATE, +// EXCESS_UTILIZATION_RATE, +// NIL_ADDRESS, +// } from '../../utils/constants'; +// import {IReserveParams, iAavePoolAssets, RateMode} from '../../utils/types'; +// import './math'; +// import {ReserveData, UserReserveData} from './interfaces'; + +// export const strToBN = (amount: string): BigNumber => new BigNumber(amount); + +// interface Configuration { +// reservesParams: iAavePoolAssets; +// web3: Web3; +// ethereumAddress: string; +// } + +// export const configuration: Configuration = {}; + +// export const calcExpectedUserDataAfterDeposit = ( +// amountDeposited: string, +// reserveDataBeforeAction: ReserveData, +// reserveDataAfterAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber, +// currentTimestamp: BigNumber, +// txCost: BigNumber +// ): UserReserveData => { +// const expectedUserData = {}; + +// expectedUserData.currentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedUserData.principalBorrowBalance = userDataBeforeAction.principalBorrowBalance; +// expectedUserData.borrowRateMode = userDataBeforeAction.borrowRateMode; + +// if (userDataBeforeAction.borrowRateMode === RateMode.None) { +// expectedUserData.borrowRate = new BigNumber('0'); +// } else { +// expectedUserData.borrowRate = userDataBeforeAction.borrowRate; +// } + +// expectedUserData.liquidityRate = reserveDataAfterAction.liquidityRate; + +// expectedUserData.originationFee = userDataBeforeAction.originationFee; + +// expectedUserData.currentATokenBalance = userDataBeforeAction.currentATokenBalance.plus( +// amountDeposited +// ); + +// if (userDataBeforeAction.currentATokenBalance.eq(0)) { +// expectedUserData.usageAsCollateralEnabled = true; +// } else { +// //if user is redeeming everything, usageAsCollateralEnabled must be false +// if (expectedUserData.currentATokenBalance.eq(0)) { +// expectedUserData.usageAsCollateralEnabled = false; +// } else { +// expectedUserData.usageAsCollateralEnabled = userDataBeforeAction.usageAsCollateralEnabled; +// } +// } + +// expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; + +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance +// .minus(txCost) +// .minus(amountDeposited); +// } else { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.minus(amountDeposited); +// } + +// expectedUserData.principalATokenBalance = expectedUserData.currentATokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// userDataBeforeAction, +// txTimestamp +// ).plus(amountDeposited); + +// expectedUserData.redirectedBalance = userDataBeforeAction.redirectedBalance; +// expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; +// expectedUserData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedUserData.currentATokenBalance, +// expectedUserData.redirectedBalance, +// txTimestamp +// ); + +// expectedUserData.redirectionAddressRedirectedBalance = calcExpectedRedirectedBalance( +// userDataBeforeAction, +// expectedUserData, +// userDataBeforeAction.redirectionAddressRedirectedBalance, +// new BigNumber(amountDeposited), +// new BigNumber(0) +// ); + +// return expectedUserData; +// }; + +// export const calcExpectedUserDataAfterRedeem = ( +// amountRedeemed: string, +// reserveDataBeforeAction: ReserveData, +// reserveDataAfterAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber, +// currentTimestamp: BigNumber, +// txCost: BigNumber +// ): UserReserveData => { +// const expectedUserData = {}; + +// const aTokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// userDataBeforeAction, +// txTimestamp +// ); + +// if (amountRedeemed == MAX_UINT_AMOUNT) { +// amountRedeemed = aTokenBalance.toFixed(0); +// } +// expectedUserData.principalATokenBalance = expectedUserData.currentATokenBalance = aTokenBalance.minus( +// amountRedeemed +// ); +// expectedUserData.currentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedUserData.principalBorrowBalance = userDataBeforeAction.principalBorrowBalance; +// expectedUserData.borrowRateMode = userDataBeforeAction.borrowRateMode; + +// expectedUserData.borrowRateMode = userDataBeforeAction.borrowRateMode; + +// if (userDataBeforeAction.borrowRateMode === RateMode.None) { +// expectedUserData.borrowRate = new BigNumber('0'); +// } else { +// expectedUserData.borrowRate = userDataBeforeAction.borrowRate; +// } + +// expectedUserData.liquidityRate = reserveDataAfterAction.liquidityRate; + +// expectedUserData.originationFee = userDataBeforeAction.originationFee; + +// if (userDataBeforeAction.currentATokenBalance.eq(0)) { +// expectedUserData.usageAsCollateralEnabled = true; +// } else { +// //if user is redeeming everything, usageAsCollateralEnabled must be false +// if (expectedUserData.currentATokenBalance.eq(0)) { +// expectedUserData.usageAsCollateralEnabled = false; +// } else { +// expectedUserData.usageAsCollateralEnabled = userDataBeforeAction.usageAsCollateralEnabled; +// } +// } + +// expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; + +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance +// .minus(txCost) +// .plus(amountRedeemed); +// } else { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.plus(amountRedeemed); +// } + +// expectedUserData.redirectedBalance = userDataBeforeAction.redirectedBalance; + +// if (expectedUserData.currentATokenBalance.eq(0) && expectedUserData.redirectedBalance.eq(0)) { +// expectedUserData.interestRedirectionAddress = NIL_ADDRESS; +// } else { +// expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; +// } +// expectedUserData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedUserData.currentATokenBalance, +// expectedUserData.redirectedBalance, +// txTimestamp +// ); + +// expectedUserData.redirectionAddressRedirectedBalance = calcExpectedRedirectedBalance( +// userDataBeforeAction, +// expectedUserData, +// userDataBeforeAction.redirectionAddressRedirectedBalance, +// new BigNumber(0), +// new BigNumber(amountRedeemed) +// ); + +// return expectedUserData; +// }; + +// export const calcExpectedReserveDataAfterDeposit = ( +// amountDeposited: string, +// reserveDataBeforeAction: ReserveData, +// txTimestamp: BigNumber +// ): ReserveData => { +// const expectedReserveData: ReserveData = {}; + +// expectedReserveData.address = reserveDataBeforeAction.address; + +// expectedReserveData.totalLiquidity = new BigNumber(reserveDataBeforeAction.totalLiquidity).plus( +// amountDeposited +// ); +// expectedReserveData.availableLiquidity = new BigNumber( +// reserveDataBeforeAction.availableLiquidity +// ).plus(amountDeposited); + +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable; +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; + +// expectedReserveData.utilizationRate = calcExpectedUtilizationRate( +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.totalLiquidity +// ); +// const rates = calcExpectedInterestRates( +// reserveDataBeforeAction.symbol, +// reserveDataBeforeAction.marketStableRate, +// expectedReserveData.utilizationRate, +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.averageStableBorrowRate +// ); +// expectedReserveData.liquidityRate = rates[0]; +// expectedReserveData.stableBorrowRate = rates[1]; +// expectedReserveData.variableBorrowRate = rates[2]; + +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; +// expectedReserveData.liquidityIndex = calcExpectedLiquidityIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedReserveData.variableBorrowIndex = calcExpectedVariableBorrowIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); + +// return expectedReserveData; +// }; + +// export const calcExpectedReserveDataAfterRedeem = ( +// amountRedeemed: string, +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber +// ): ReserveData => { +// const expectedReserveData: ReserveData = {}; + +// expectedReserveData.address = reserveDataBeforeAction.address; + +// if (amountRedeemed == MAX_UINT_AMOUNT) { +// amountRedeemed = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// userDataBeforeAction, +// txTimestamp +// ).toFixed(); +// } + +// expectedReserveData.totalLiquidity = new BigNumber(reserveDataBeforeAction.totalLiquidity).minus( +// amountRedeemed +// ); +// expectedReserveData.availableLiquidity = new BigNumber( +// reserveDataBeforeAction.availableLiquidity +// ).minus(amountRedeemed); + +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable; +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; + +// expectedReserveData.utilizationRate = calcExpectedUtilizationRate( +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.totalLiquidity +// ); +// const rates = calcExpectedInterestRates( +// reserveDataBeforeAction.symbol, +// reserveDataBeforeAction.marketStableRate, +// expectedReserveData.utilizationRate, +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.averageStableBorrowRate +// ); +// expectedReserveData.liquidityRate = rates[0]; +// expectedReserveData.stableBorrowRate = rates[1]; +// expectedReserveData.variableBorrowRate = rates[2]; + +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; +// expectedReserveData.liquidityIndex = calcExpectedLiquidityIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedReserveData.variableBorrowIndex = calcExpectedVariableBorrowIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); + +// return expectedReserveData; +// }; + +// export const calcExpectedReserveDataAfterBorrow = ( +// amountBorrowed: string, +// borrowRateMode: string, +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber, +// currentTimestamp: BigNumber +// ): ReserveData => { +// const expectedReserveData = {}; + +// expectedReserveData.address = reserveDataBeforeAction.address; + +// let userBalanceIncrease: BigNumber = new BigNumber(0); +// let userCurrentBorrowBalance: BigNumber = new BigNumber(0); + +// const amountBorrowedBN = new BigNumber(amountBorrowed); + +// if (userDataBeforeAction.currentBorrowBalance.gt(0)) { +// //if the user performing the action had already a borrow, we need to compound the balance until the action + +// userCurrentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// userBalanceIncrease = userCurrentBorrowBalance.minus( +// userDataBeforeAction.principalBorrowBalance +// ); + +// expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus( +// userBalanceIncrease +// ); +// } else { +// expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity; +// } + +// expectedReserveData.availableLiquidity = reserveDataBeforeAction.availableLiquidity.minus( +// amountBorrowedBN +// ); + +// //substract the previous principal from the total borrows, depending on which borrow mode the previous borrow was +// if (userDataBeforeAction.borrowRateMode == RateMode.Stable) { +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable.minus( +// userDataBeforeAction.principalBorrowBalance +// ); +// expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( +// reserveDataBeforeAction.averageStableBorrowRate, +// reserveDataBeforeAction.totalBorrowsStable, +// userDataBeforeAction.principalBorrowBalance.negated(), +// userDataBeforeAction.borrowRate +// ); +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; +// } else if (userDataBeforeAction.borrowRateMode == RateMode.Variable) { +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable.minus( +// userDataBeforeAction.principalBorrowBalance +// ); +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable; +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; +// } else { +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable; +// } + +// //add the previous principal + new amount borrowed + accrued interest to the total borrows, depending +// //on the new borrow rate mode +// if (borrowRateMode === RateMode.Stable) { +// expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( +// expectedReserveData.averageStableBorrowRate, +// expectedReserveData.totalBorrowsStable, +// userDataBeforeAction.principalBorrowBalance.plus(amountBorrowedBN).plus(userBalanceIncrease), +// reserveDataBeforeAction.stableBorrowRate +// ); + +// expectedReserveData.totalBorrowsStable = expectedReserveData.totalBorrowsStable +// .plus(userDataBeforeAction.principalBorrowBalance) +// .plus(userBalanceIncrease) +// .plus(amountBorrowedBN); +// } else { +// expectedReserveData.totalBorrowsVariable = expectedReserveData.totalBorrowsVariable +// .plus(userDataBeforeAction.principalBorrowBalance) +// .plus(userBalanceIncrease) +// .plus(amountBorrowedBN); +// } + +// expectedReserveData.utilizationRate = calcExpectedUtilizationRate( +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.totalLiquidity +// ); + +// const rates = calcExpectedInterestRates( +// reserveDataBeforeAction.symbol, +// reserveDataBeforeAction.marketStableRate, +// expectedReserveData.utilizationRate, +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.averageStableBorrowRate +// ); +// expectedReserveData.liquidityRate = rates[0]; + +// expectedReserveData.stableBorrowRate = rates[1]; + +// expectedReserveData.variableBorrowRate = rates[2]; + +// expectedReserveData.liquidityIndex = calcExpectedLiquidityIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedReserveData.variableBorrowIndex = calcExpectedVariableBorrowIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); + +// return expectedReserveData; +// }; + +// export const calcExpectedReserveDataAfterRepay = ( +// amountRepaid: string, +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber, +// currentTimestamp: BigNumber +// ): ReserveData => { +// const expectedReserveData: ReserveData = {}; + +// expectedReserveData.address = reserveDataBeforeAction.address; + +// let amountRepaidBN = new BigNumber(amountRepaid); + +// const userCurrentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// const userBalanceIncrease = userCurrentBorrowBalance.minus( +// userDataBeforeAction.principalBorrowBalance +// ); + +// expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus( +// userBalanceIncrease +// ); + +// //if amount repaid = MAX_UINT_AMOUNT, user is repaying everything +// if (amountRepaidBN.abs().eq(MAX_UINT_AMOUNT)) { +// amountRepaidBN = userCurrentBorrowBalance; +// } else { +// amountRepaidBN = userDataBeforeAction.originationFee.gt(amountRepaidBN) +// ? new BigNumber('0') +// : amountRepaidBN.minus(userDataBeforeAction.originationFee); +// } + +// if (amountRepaidBN.eq(0)) { +// //user is only repaying part or all the utilization fee +// expectedReserveData.availableLiquidity = reserveDataBeforeAction.availableLiquidity; +// } else { +// expectedReserveData.availableLiquidity = reserveDataBeforeAction.availableLiquidity.plus( +// amountRepaidBN +// ); +// } + +// if (userDataBeforeAction.borrowRateMode === RateMode.Stable) { +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable +// .plus(userBalanceIncrease) +// .minus(amountRepaidBN); + +// const avgStableRateAfterBalanceIncrease = calcExpectedAverageStableBorrowRate( +// reserveDataBeforeAction.averageStableBorrowRate, +// reserveDataBeforeAction.totalBorrowsStable, +// userBalanceIncrease, +// userDataBeforeAction.borrowRate +// ); + +// expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( +// avgStableRateAfterBalanceIncrease, +// reserveDataBeforeAction.totalBorrowsStable.plus(userBalanceIncrease), +// amountRepaidBN.negated(), +// userDataBeforeAction.borrowRate +// ); +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; +// } else if (userDataBeforeAction.borrowRateMode === RateMode.Variable) { +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable +// .plus(userBalanceIncrease) +// .minus(amountRepaidBN); +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable; +// expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; +// } else { +// throw `Invalid rate mode found: Expected stable or variable but found ${userDataBeforeAction.borrowRateMode}`; +// } + +// expectedReserveData.utilizationRate = calcExpectedUtilizationRate( +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.totalLiquidity +// ); + +// const rates = calcExpectedInterestRates( +// reserveDataBeforeAction.symbol, +// reserveDataBeforeAction.marketStableRate, +// expectedReserveData.utilizationRate, +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.averageStableBorrowRate +// ); +// expectedReserveData.liquidityRate = rates[0]; + +// expectedReserveData.stableBorrowRate = rates[1]; + +// expectedReserveData.variableBorrowRate = rates[2]; + +// expectedReserveData.liquidityIndex = calcExpectedLiquidityIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedReserveData.variableBorrowIndex = calcExpectedVariableBorrowIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); + +// return expectedReserveData; +// }; + +// export const calcExpectedUserDataAfterBorrow = ( +// amountBorrowed: string, +// interestRateMode: string, +// reserveDataBeforeAction: ReserveData, +// expectedDataAfterAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber, +// currentTimestamp: BigNumber, +// txCost: BigNumber +// ): UserReserveData => { +// const expectedUserData = {}; + +// const originationFee = calcExpectedOriginationFee(amountBorrowed); + +// const borrowBalanceBeforeTx = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// expectedUserData.principalBorrowBalance = borrowBalanceBeforeTx.plus(amountBorrowed); + +// if (currentTimestamp.gt(txTimestamp)) { +// //calculate also the accrued balance after the time passed +// const borrowBalanceAfterTx = calcExpectedCompoundedBorrowBalance( +// { +// ...userDataBeforeAction, +// borrowRateMode: interestRateMode, +// borrowRate: +// interestRateMode === RateMode.Stable +// ? reserveDataBeforeAction.stableBorrowRate +// : expectedDataAfterAction.variableBorrowRate, +// principalBorrowBalance: borrowBalanceBeforeTx.plus(amountBorrowed), +// variableBorrowIndex: expectedDataAfterAction.variableBorrowIndex, +// lastUpdateTimestamp: txTimestamp, +// }, +// expectedDataAfterAction, +// currentTimestamp +// ); + +// expectedUserData.currentBorrowBalance = borrowBalanceAfterTx; +// } else { +// expectedUserData.currentBorrowBalance = expectedUserData.principalBorrowBalance; +// } + +// if (interestRateMode === RateMode.Stable) { +// expectedUserData.borrowRate = reserveDataBeforeAction.stableBorrowRate; +// expectedUserData.variableBorrowIndex = new BigNumber(0); +// } else if (interestRateMode === RateMode.Variable) { +// expectedUserData.borrowRate = expectedDataAfterAction.variableBorrowRate; +// expectedUserData.variableBorrowIndex = expectedDataAfterAction.variableBorrowIndex; +// } + +// expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate; + +// expectedUserData.originationFee = userDataBeforeAction.originationFee.plus(originationFee); + +// expectedUserData.usageAsCollateralEnabled = userDataBeforeAction.usageAsCollateralEnabled; + +// expectedUserData.borrowRateMode = interestRateMode; + +// expectedUserData.currentATokenBalance = calcExpectedATokenBalance( +// expectedDataAfterAction, +// userDataBeforeAction, +// currentTimestamp +// ); +// expectedUserData.principalATokenBalance = userDataBeforeAction.principalATokenBalance; +// expectedUserData.redirectedBalance = userDataBeforeAction.redirectedBalance; +// expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; +// expectedUserData.redirectionAddressRedirectedBalance = +// userDataBeforeAction.redirectionAddressRedirectedBalance; +// expectedUserData.currentATokenUserIndex = userDataBeforeAction.currentATokenUserIndex +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance +// .minus(txCost) +// .plus(amountBorrowed); +// } else { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.plus(amountBorrowed); +// } + +// return expectedUserData; +// }; + +// export const calcExpectedUserDataAfterRepay = ( +// totalRepaid: string, +// reserveDataBeforeAction: ReserveData, +// expectedDataAfterAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// user: string, +// onBehalfOf: string, +// txTimestamp: BigNumber, +// currentTimestamp: BigNumber, +// txCost: BigNumber +// ): UserReserveData => { +// const expectedUserData = {}; + +// const userCurrentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// const userBalanceIncrease = userCurrentBorrowBalance.minus( +// userDataBeforeAction.principalBorrowBalance +// ); + +// if (new BigNumber(totalRepaid).abs().eq(MAX_UINT_AMOUNT)) { +// //full repay in progress +// totalRepaid = userCurrentBorrowBalance.plus(userDataBeforeAction.originationFee).toFixed(0); +// } + +// if (userDataBeforeAction.originationFee.lt(totalRepaid)) { +// expectedUserData.originationFee = new BigNumber(0); + +// const totalRepaidMinusFees = new BigNumber(totalRepaid).minus( +// userDataBeforeAction.originationFee +// ); + +// expectedUserData.principalBorrowBalance = userDataBeforeAction.principalBorrowBalance +// .plus(userBalanceIncrease) +// .minus(totalRepaidMinusFees); +// expectedUserData.currentBorrowBalance = userCurrentBorrowBalance.minus(totalRepaidMinusFees); +// } else { +// expectedUserData.originationFee = userDataBeforeAction.originationFee.minus(totalRepaid); +// expectedUserData.principalBorrowBalance = userCurrentBorrowBalance; +// expectedUserData.currentBorrowBalance = userCurrentBorrowBalance; +// } + +// if (expectedUserData.currentBorrowBalance.eq('0')) { +// //user repaid everything +// expectedUserData.borrowRate = new BigNumber('0'); +// expectedUserData.borrowRateMode = RateMode.None; +// expectedUserData.variableBorrowIndex = new BigNumber('0'); +// } else { +// if (userDataBeforeAction.borrowRateMode === RateMode.Stable) { +// expectedUserData.borrowRate = userDataBeforeAction.borrowRate; +// expectedUserData.variableBorrowIndex = new BigNumber('0'); +// } else { +// expectedUserData.borrowRate = expectedDataAfterAction.variableBorrowRate; +// expectedUserData.variableBorrowIndex = expectedDataAfterAction.variableBorrowIndex; +// } +// expectedUserData.borrowRateMode = userDataBeforeAction.borrowRateMode; +// } + +// expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate; + +// expectedUserData.usageAsCollateralEnabled = userDataBeforeAction.usageAsCollateralEnabled; + +// expectedUserData.currentATokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// userDataBeforeAction, +// txTimestamp +// ); +// expectedUserData.principalATokenBalance = userDataBeforeAction.principalATokenBalance; +// expectedUserData.redirectedBalance = userDataBeforeAction.redirectedBalance; +// expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; +// expectedUserData.redirectionAddressRedirectedBalance = +// userDataBeforeAction.redirectionAddressRedirectedBalance; +// expectedUserData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedUserData.currentATokenBalance, +// expectedUserData.redirectedBalance, +// txTimestamp +// ); + +// if (user === onBehalfOf) { +// //if user repaid for himself, update the wallet balances +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance +// .minus(txCost) +// .minus(totalRepaid); +// } else { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.minus(totalRepaid); +// } +// } else { +// //wallet balance didn't change +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance; +// } + +// return expectedUserData; +// }; + +// export const calcExpectedUserDataAfterSetUseAsCollateral = ( +// useAsCollateral: boolean, +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txCost: BigNumber +// ): UserReserveData => { +// const expectedUserData = {...userDataBeforeAction}; + +// expectedUserData.usageAsCollateralEnabled = useAsCollateral; + +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.minus(txCost); +// } + +// return expectedUserData; +// }; + +// export const calcExpectedReserveDataAfterSwapRateMode = ( +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber +// ): ReserveData => { +// const expectedReserveData: ReserveData = {}; + +// expectedReserveData.address = reserveDataBeforeAction.address; + +// let userBalanceIncrease: BigNumber = new BigNumber(0); +// let userCurrentBorrowBalance: BigNumber = new BigNumber(0); + +// userCurrentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// userBalanceIncrease = userCurrentBorrowBalance.minus(userDataBeforeAction.principalBorrowBalance); + +// expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus( +// userBalanceIncrease +// ); + +// expectedReserveData.availableLiquidity = reserveDataBeforeAction.availableLiquidity; + +// if (userDataBeforeAction.borrowRateMode === RateMode.Stable) { +// //swap to variable +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable +// .plus(userBalanceIncrease) +// .minus(userCurrentBorrowBalance); + +// expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( +// reserveDataBeforeAction.averageStableBorrowRate, +// reserveDataBeforeAction.totalBorrowsStable.plus(userBalanceIncrease), +// userCurrentBorrowBalance.negated(), +// userDataBeforeAction.borrowRate +// ); +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable.plus( +// userCurrentBorrowBalance +// ); +// } else { +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable +// .plus(userBalanceIncrease) +// .minus(userCurrentBorrowBalance); +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable.plus( +// userCurrentBorrowBalance +// ); +// expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( +// reserveDataBeforeAction.averageStableBorrowRate, +// reserveDataBeforeAction.totalBorrowsStable, +// userCurrentBorrowBalance, +// reserveDataBeforeAction.stableBorrowRate +// ); +// } + +// expectedReserveData.utilizationRate = calcExpectedUtilizationRate( +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.totalLiquidity +// ); + +// const rates = calcExpectedInterestRates( +// reserveDataBeforeAction.symbol, +// reserveDataBeforeAction.marketStableRate, +// expectedReserveData.utilizationRate, +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.averageStableBorrowRate +// ); +// expectedReserveData.liquidityRate = rates[0]; + +// expectedReserveData.stableBorrowRate = rates[1]; + +// expectedReserveData.variableBorrowRate = rates[2]; + +// expectedReserveData.liquidityIndex = calcExpectedLiquidityIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedReserveData.variableBorrowIndex = calcExpectedVariableBorrowIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); + +// return expectedReserveData; +// }; + +// export const calcExpectedUserDataAfterSwapRateMode = ( +// reserveDataBeforeAction: ReserveData, +// expectedDataAfterAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txCost: BigNumber, +// txTimestamp: BigNumber +// ): UserReserveData => { +// const expectedUserData = {...userDataBeforeAction}; + +// const borrowBalanceBeforeTx = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// expectedUserData.currentATokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// userDataBeforeAction, +// txTimestamp +// ); +// expectedUserData.principalATokenBalance = userDataBeforeAction.principalATokenBalance; +// expectedUserData.redirectedBalance = userDataBeforeAction.redirectedBalance; +// expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; +// expectedUserData.redirectionAddressRedirectedBalance = +// userDataBeforeAction.redirectionAddressRedirectedBalance; +// expectedUserData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedUserData.currentATokenBalance, +// expectedUserData.redirectedBalance, +// txTimestamp +// ); + +// expectedUserData.currentBorrowBalance = expectedUserData.principalBorrowBalance = borrowBalanceBeforeTx; + +// if (userDataBeforeAction.borrowRateMode === RateMode.Stable) { +// expectedUserData.borrowRateMode = RateMode.Variable; +// expectedUserData.borrowRate = expectedDataAfterAction.variableBorrowRate; +// expectedUserData.variableBorrowIndex = expectedDataAfterAction.variableBorrowIndex; +// } else { +// expectedUserData.borrowRateMode = RateMode.Stable; +// expectedUserData.borrowRate = reserveDataBeforeAction.stableBorrowRate; +// expectedUserData.variableBorrowIndex = new BigNumber(0); +// } + +// expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate; + +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.minus(txCost); +// } +// return expectedUserData; +// }; + +// export const calcExpectedReserveDataAfterStableRateRebalance = ( +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txTimestamp: BigNumber +// ): ReserveData => { +// const expectedReserveData: ReserveData = {}; + +// expectedReserveData.address = reserveDataBeforeAction.address; + +// let userBalanceIncrease: BigNumber = new BigNumber(0); +// let userCurrentBorrowBalance: BigNumber = new BigNumber(0); + +// userCurrentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// userBalanceIncrease = userCurrentBorrowBalance.minus(userDataBeforeAction.principalBorrowBalance); + +// expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus( +// userBalanceIncrease +// ); + +// expectedReserveData.availableLiquidity = reserveDataBeforeAction.availableLiquidity; + +// expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable.plus( +// userBalanceIncrease +// ); + +// expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( +// reserveDataBeforeAction.averageStableBorrowRate, +// reserveDataBeforeAction.totalBorrowsStable, +// userBalanceIncrease, +// userDataBeforeAction.borrowRate +// ); + +// expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; + +// expectedReserveData.utilizationRate = calcExpectedUtilizationRate( +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.totalLiquidity +// ); + +// const rates = calcExpectedInterestRates( +// reserveDataBeforeAction.symbol, +// reserveDataBeforeAction.marketStableRate, +// expectedReserveData.utilizationRate, +// expectedReserveData.totalBorrowsStable, +// expectedReserveData.totalBorrowsVariable, +// expectedReserveData.averageStableBorrowRate +// ); +// expectedReserveData.liquidityRate = rates[0]; + +// expectedReserveData.stableBorrowRate = rates[1]; + +// expectedReserveData.variableBorrowRate = rates[2]; + +// expectedReserveData.liquidityIndex = calcExpectedLiquidityIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); +// expectedReserveData.variableBorrowIndex = calcExpectedVariableBorrowIndex( +// reserveDataBeforeAction, +// txTimestamp +// ); + +// return expectedReserveData; +// }; + +// export const calcExpectedUserDataAfterStableRateRebalance = ( +// reserveDataBeforeAction: ReserveData, +// expectedDataAfterAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// txCost: BigNumber, +// txTimestamp: BigNumber +// ): UserReserveData => { +// const expectedUserData = {...userDataBeforeAction}; + +// const borrowBalanceBeforeTx = calcExpectedCompoundedBorrowBalance( +// userDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// expectedUserData.currentBorrowBalance = expectedUserData.principalBorrowBalance = borrowBalanceBeforeTx; + +// expectedUserData.borrowRateMode = RateMode.Stable; +// expectedUserData.borrowRate = reserveDataBeforeAction.stableBorrowRate; + +// expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate; + +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedUserData.walletBalance = userDataBeforeAction.walletBalance.minus(txCost); +// } + +// expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate; + +// expectedUserData.currentATokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// userDataBeforeAction, +// txTimestamp +// ); +// expectedUserData.principalATokenBalance = userDataBeforeAction.principalATokenBalance; +// expectedUserData.redirectedBalance = userDataBeforeAction.redirectedBalance; +// expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; +// expectedUserData.redirectionAddressRedirectedBalance = +// userDataBeforeAction.redirectionAddressRedirectedBalance; + +// expectedUserData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedUserData.currentATokenBalance, +// expectedUserData.redirectedBalance, +// txTimestamp +// ); + +// return expectedUserData; +// }; + +// export const calcExpectedUsersDataAfterRedirectInterest = ( +// reserveDataBeforeAction: ReserveData, +// fromDataBeforeAction: UserReserveData, +// toDataBeforeAction: UserReserveData, +// fromAddress: string, +// toAddress: string, +// isFromExecutingTx: boolean, +// txCost: BigNumber, +// txTimestamp: BigNumber +// ): UserReserveData[] => { +// const expectedFromData = {...fromDataBeforeAction}; +// const expectedToData = {...toDataBeforeAction}; + +// expectedFromData.currentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// fromDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// expectedToData.currentBorrowBalance = calcExpectedCompoundedBorrowBalance( +// toDataBeforeAction, +// reserveDataBeforeAction, +// txTimestamp +// ); + +// expectedFromData.principalATokenBalance = expectedFromData.currentATokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// fromDataBeforeAction, +// txTimestamp +// ); + +// expectedToData.principalATokenBalance = expectedToData.currentATokenBalance = calcExpectedATokenBalance( +// reserveDataBeforeAction, +// toDataBeforeAction, +// txTimestamp +// ); + +// if (isFromExecutingTx) { +// if (reserveDataBeforeAction.address === configuration.ethereumAddress) { +// expectedFromData.walletBalance = fromDataBeforeAction.walletBalance.minus(txCost); +// } +// } + +// expectedToData.redirectedBalance = toDataBeforeAction.redirectedBalance.plus( +// expectedFromData.currentATokenBalance +// ); + +// if (fromAddress === toAddress) { +// expectedFromData.interestRedirectionAddress = NIL_ADDRESS; +// expectedFromData.redirectedBalance = new BigNumber(0); +// expectedFromData.redirectionAddressRedirectedBalance = new BigNumber(0); +// expectedToData.interestRedirectionAddress = NIL_ADDRESS; +// expectedToData.redirectedBalance = new BigNumber(0); +// expectedToData.redirectionAddressRedirectedBalance = new BigNumber(0); +// } else { +// expectedFromData.interestRedirectionAddress = toAddress; + +// expectedFromData.redirectionAddressRedirectedBalance = calcExpectedRedirectedBalance( +// toDataBeforeAction, +// expectedFromData, +// toDataBeforeAction.redirectedBalance, +// expectedFromData.currentATokenBalance, +// new BigNumber(0) +// ); +// } + +// expectedFromData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedFromData.currentATokenBalance, +// expectedFromData.redirectedBalance, +// txTimestamp +// ); + +// expectedToData.currentATokenUserIndex = calcExpectedATokenUserIndex( +// reserveDataBeforeAction, +// expectedToData.currentATokenBalance, +// expectedToData.redirectedBalance, +// txTimestamp +// ); + +// return [expectedFromData, expectedToData]; +// }; + +// const calcExpectedATokenUserIndex = ( +// reserveDataBeforeAction: ReserveData, +// expectedUserBalanceAfterAction: BigNumber, +// expectedUserRedirectedBalanceAterAction: BigNumber, +// currentTimestamp: BigNumber +// ) => { +// if (expectedUserBalanceAfterAction.eq(0) && expectedUserRedirectedBalanceAterAction.eq(0)) { +// return new BigNumber(0); +// } +// return calcExpectedReserveNormalizedIncome(reserveDataBeforeAction, currentTimestamp); +// }; + +// const calcExpectedATokenBalance = ( +// reserveDataBeforeAction: ReserveData, +// userDataBeforeAction: UserReserveData, +// currentTimestamp: BigNumber +// ) => { +// const income = calcExpectedReserveNormalizedIncome(reserveDataBeforeAction, currentTimestamp); + +// const { +// interestRedirectionAddress, +// currentATokenUserIndex: userIndexBeforeAction, +// redirectedBalance, +// principalATokenBalance: principalBalanceBeforeAction, +// } = userDataBeforeAction; + +// if (userIndexBeforeAction.eq(0)) { +// return principalBalanceBeforeAction; +// } +// if (interestRedirectionAddress === NIL_ADDRESS) { +// return principalBalanceBeforeAction +// .plus(redirectedBalance) +// .wadToRay() +// .rayMul(income) +// .rayDiv(userIndexBeforeAction) +// .rayToWad() +// .minus(redirectedBalance); +// } else { +// return principalBalanceBeforeAction.plus( +// redirectedBalance +// .wadToRay() +// .rayMul(income) +// .rayDiv(userIndexBeforeAction) +// .rayToWad() +// .minus(redirectedBalance) +// ); +// } +// }; + +// const calcExpectedRedirectedBalance = ( +// userDataBeforeAction: UserReserveData, +// expectedUserDataAfterAction: UserReserveData, +// redirectedBalanceBefore: BigNumber, +// amountToAdd: BigNumber, +// amountToSubstract: BigNumber +// ): BigNumber => { +// const balanceIncrease = userDataBeforeAction.currentATokenBalance.minus( +// userDataBeforeAction.principalATokenBalance +// ); + +// return expectedUserDataAfterAction.interestRedirectionAddress !== NIL_ADDRESS +// ? redirectedBalanceBefore +// .plus(balanceIncrease) +// .plus(amountToAdd) +// .minus(amountToSubstract) +// : new BigNumber('0'); +// }; +// const calcExpectedAverageStableBorrowRate = ( +// avgStableRateBefore: BigNumber, +// totalBorrowsStableBefore: BigNumber, +// amountChanged: string | BigNumber, +// rate: BigNumber +// ) => { +// const weightedTotalBorrows = avgStableRateBefore.multipliedBy(totalBorrowsStableBefore); +// const weightedAmountBorrowed = rate.multipliedBy(amountChanged); +// const totalBorrowedStable = totalBorrowsStableBefore.plus(new BigNumber(amountChanged)); + +// if (totalBorrowedStable.eq(0)) return new BigNumber('0'); + +// return weightedTotalBorrows +// .plus(weightedAmountBorrowed) +// .div(totalBorrowedStable) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); +// }; + +// const calcExpectedCompoundedBorrowBalance = ( +// userData: UserReserveData, +// reserveData: ReserveData, +// timestamp: BigNumber +// ): BigNumber => { +// if (userData.principalBorrowBalance.eq(0)) { +// return strToBN('0'); +// } + +// const cumulatedInterest = calcCompoundedInterest( +// userData.borrowRate, +// timestamp, +// userData.lastUpdateTimestamp +// ); + +// const borrowBalanceRay = userData.principalBorrowBalance.wadToRay(); + +// if (userData.borrowRateMode === RateMode.Stable) { +// return borrowBalanceRay.rayMul(cumulatedInterest).rayToWad(); +// } +// // variable +// const cumulatedInterestVariable = cumulatedInterest +// .rayMul(reserveData.variableBorrowIndex) +// .rayDiv(userData.variableBorrowIndex); + +// return borrowBalanceRay.rayMul(cumulatedInterestVariable).rayToWad(); +// }; + +// const calcLinearInterest = ( +// rate: BigNumber, +// currentTimestamp: BigNumber, +// lastUpdateTimestamp: BigNumber +// ) => { +// const timeDifference = currentTimestamp.minus(lastUpdateTimestamp).wadToRay(); + +// const timeDelta = timeDifference.rayDiv(new BigNumber(ONE_YEAR).wadToRay()); + +// const cumulatedInterest = rate.rayMul(timeDelta).plus(RAY); + +// return cumulatedInterest; +// }; + +// const calcCompoundedInterest = ( +// rate: BigNumber, +// currentTimestamp: BigNumber, +// lastUpdateTimestamp: BigNumber +// ) => { +// const timeDifference = currentTimestamp.minus(lastUpdateTimestamp); + +// const ratePerSecond = rate.div(ONE_YEAR); + +// const compoundedInterest = ratePerSecond.plus(RAY).rayPow(timeDifference); + +// return compoundedInterest; +// }; + +// const calcExpectedInterestRates = ( +// reserveSymbol: string, +// marketStableRate: BigNumber, +// utilizationRate: BigNumber, +// totalBorrowsStable: BigNumber, +// totalBorrowsVariable: BigNumber, +// averageStableBorrowRate: BigNumber +// ): BigNumber[] => { +// const {reservesParams} = configuration; + +// const reserveIndex = Object.keys(reservesParams).findIndex(value => value === reserveSymbol) +// const [, reserveConfiguration] = (Object.entries(reservesParams) as [string, IReserveParams][])[reserveIndex] + +// let stableBorrowRate: BigNumber = marketStableRate; +// let variableBorrowRate: BigNumber = new BigNumber(reserveConfiguration.baseVariableBorrowRate); + +// if (utilizationRate.gt(OPTIMAL_UTILIZATION_RATE)) { +// const excessUtilizationRateRatio = utilizationRate +// .minus(OPTIMAL_UTILIZATION_RATE) +// .rayDiv(EXCESS_UTILIZATION_RATE); + +// stableBorrowRate = stableBorrowRate +// .plus(reserveConfiguration.stableRateSlope1) +// .plus( +// new BigNumber(reserveConfiguration.stableRateSlope2).rayMul(excessUtilizationRateRatio) +// ); + +// variableBorrowRate = variableBorrowRate +// .plus(reserveConfiguration.variableRateSlope1) +// .plus( +// new BigNumber(reserveConfiguration.variableRateSlope2).rayMul(excessUtilizationRateRatio) +// ); +// } else { +// stableBorrowRate = stableBorrowRate.plus( +// new BigNumber(reserveConfiguration.stableRateSlope1).rayMul( +// utilizationRate.rayDiv(new BigNumber(OPTIMAL_UTILIZATION_RATE)) +// ) +// ); + +// variableBorrowRate = variableBorrowRate.plus( +// utilizationRate +// .rayDiv(OPTIMAL_UTILIZATION_RATE) +// .rayMul(new BigNumber(reserveConfiguration.variableRateSlope1)) +// ); +// } + +// const expectedOverallRate = calcExpectedOverallBorrowRate( +// totalBorrowsStable, +// totalBorrowsVariable, +// variableBorrowRate, +// averageStableBorrowRate +// ); +// const liquidityRate = expectedOverallRate.rayMul(utilizationRate); + +// return [liquidityRate, stableBorrowRate, variableBorrowRate]; +// }; + +// const calcExpectedOverallBorrowRate = ( +// totalBorrowsStable: BigNumber, +// totalBorrowsVariable: BigNumber, +// currentVariableBorrowRate: BigNumber, +// currentAverageStableBorrowRate: BigNumber +// ): BigNumber => { +// const totalBorrows = totalBorrowsStable.plus(totalBorrowsVariable); + +// if (totalBorrows.eq(0)) return strToBN('0'); + +// const weightedVariableRate = totalBorrowsVariable.wadToRay().rayMul(currentVariableBorrowRate); + +// const weightedStableRate = totalBorrowsStable.wadToRay().rayMul(currentAverageStableBorrowRate); + +// const overallBorrowRate = weightedVariableRate +// .plus(weightedStableRate) +// .rayDiv(totalBorrows.wadToRay()); + +// return overallBorrowRate; +// }; + +// const calcExpectedUtilizationRate = ( +// totalBorrowsStable: BigNumber, +// totalBorrowsVariable: BigNumber, +// totalLiquidity: BigNumber +// ): BigNumber => { +// if (totalBorrowsStable.eq('0') && totalBorrowsVariable.eq('0')) { +// return strToBN('0'); +// } + +// const utilization = totalBorrowsStable.plus(totalBorrowsVariable).rayDiv(totalLiquidity); + +// return utilization; +// }; + +// const calcExpectedReserveNormalizedIncome = ( +// reserveData: ReserveData, +// currentTimestamp: BigNumber +// ) => { +// const {liquidityRate, liquidityIndex, lastUpdateTimestamp} = reserveData; + +// //if utilization rate is 0, nothing to compound +// if (liquidityRate.eq('0')) { +// return liquidityIndex; +// } + +// const cumulatedInterest = calcLinearInterest( +// liquidityRate, +// currentTimestamp, +// lastUpdateTimestamp +// ); + +// const income = cumulatedInterest.rayMul(liquidityIndex); + +// return income; +// }; + +// const calcExpectedLiquidityIndex = (reserveData: ReserveData, timestamp: BigNumber) => { +// //if utilization rate is 0, nothing to compound +// if (reserveData.utilizationRate.eq('0')) { +// return reserveData.liquidityIndex; +// } + +// const cumulatedInterest = calcLinearInterest( +// reserveData.liquidityRate, +// timestamp, +// reserveData.lastUpdateTimestamp +// ); + +// return cumulatedInterest.rayMul(reserveData.liquidityIndex); +// }; + +// const calcExpectedVariableBorrowIndex = (reserveData: ReserveData, timestamp: BigNumber) => { +// //if utilization rate is 0, nothing to compound +// if (reserveData.utilizationRate.eq('0')) { +// return reserveData.variableBorrowIndex; +// } + +// const cumulatedInterest = calcCompoundedInterest( +// reserveData.variableBorrowRate, +// timestamp, +// reserveData.lastUpdateTimestamp +// ); + +// return cumulatedInterest.rayMul(reserveData.variableBorrowIndex); +// }; + +// const calcExpectedOriginationFee = (amount: string): BigNumber => { +// return new BigNumber(amount).multipliedBy(0.0025).decimalPlaces(0, BigNumber.ROUND_DOWN); +// }; + +// export const calculateHealthFactorFromBalances = ( +// collateralBalanceETH: BigNumber, +// borrowBalanceETH: BigNumber, +// currentLiquidationThreshold: BigNumber +// ): BigNumber => { +// if (borrowBalanceETH.eq(0)) { +// return strToBN('-1'); // invalid number +// } +// return collateralBalanceETH.multipliedBy(currentLiquidationThreshold).div(borrowBalanceETH); +// }; + +// const calculateAvailableBorrowsETH = ( +// collateralBalanceETH: BigNumber, +// borrowBalanceETH: BigNumber, +// currentLtv: BigNumber +// ): BigNumber => { +// if (currentLtv.eq(0)) { +// return strToBN('0'); +// } +// let availableBorrowsETH = collateralBalanceETH.multipliedBy(currentLtv); +// if (availableBorrowsETH.lt(borrowBalanceETH)) { +// return strToBN('0'); +// } +// availableBorrowsETH = availableBorrowsETH.minus(borrowBalanceETH); +// const borrowFee = availableBorrowsETH.multipliedBy(0.0025); +// return availableBorrowsETH.minus(borrowFee); +// }; diff --git a/test/helpers/utils/helpers.ts b/test/helpers/utils/helpers.ts new file mode 100644 index 00000000..8e1eb29c --- /dev/null +++ b/test/helpers/utils/helpers.ts @@ -0,0 +1,172 @@ +// import { +// ERC20DetailedInstance, +// LendingPoolInstance, +// LendingRateOracleInstance, +// ATokenInstance, +// LendingPoolCoreInstance, +// } from '../../utils/typechain-types/truffle-contracts'; +// import {getTruffleContractInstance} from '../../utils/truffle/truffle-core-utils'; +// import {ContractId} from '../../utils/types'; +// import {ReserveData, UserReserveData} from './interfaces'; +// import BigNumber from 'bignumber.js'; +// import {configuration} from '../actions'; +// import {NIL_ADDRESS, ETHEREUM_ADDRESS} from '../../utils/constants'; + +// export const getReserveData = async ( +// poolInstance: LendingPoolInstance, +// reserve: string, +// artifacts: Truffle.Artifacts +// ): Promise => { +// const data: any = await poolInstance.getReserveData(reserve); +// const rateOracle: LendingRateOracleInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.LendingRateOracle +// ); + +// const rate = await rateOracle.getMarketBorrowRate(reserve); + +// const isEthReserve = reserve === ETHEREUM_ADDRESS; +// let symbol = 'ETH'; +// let decimals = new BigNumber(18); +// if (!isEthReserve) { +// const contractInstance: ERC20DetailedInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.ERC20Detailed, +// reserve +// ); +// symbol = await contractInstance.symbol(); +// decimals = new BigNumber(await contractInstance.decimals()); +// } + +// return { +// totalLiquidity: new BigNumber(data.totalLiquidity), +// availableLiquidity: new BigNumber(data.availableLiquidity), +// totalBorrowsStable: new BigNumber(data.totalBorrowsStable), +// totalBorrowsVariable: new BigNumber(data.totalBorrowsVariable), +// liquidityRate: new BigNumber(data.liquidityRate), +// variableBorrowRate: new BigNumber(data.variableBorrowRate), +// stableBorrowRate: new BigNumber(data.stableBorrowRate), +// averageStableBorrowRate: new BigNumber(data.averageStableBorrowRate), +// utilizationRate: new BigNumber(data.utilizationRate), +// liquidityIndex: new BigNumber(data.liquidityIndex), +// variableBorrowIndex: new BigNumber(data.variableBorrowIndex), +// lastUpdateTimestamp: new BigNumber(data.lastUpdateTimestamp), +// address: reserve, +// aTokenAddress: data.aTokenAddress, +// symbol, +// decimals, +// marketStableRate: new BigNumber(rate), +// }; +// }; + +// export const getUserData = async ( +// poolInstance: LendingPoolInstance, +// coreInstance: LendingPoolCoreInstance, +// reserve: string, +// user: string, +// artifacts: Truffle.Artifacts +// ): Promise => { +// const {web3} = configuration; + +// const [data, aTokenData] = await Promise.all([ +// poolInstance.getUserReserveData(reserve, user), +// getATokenUserData(reserve, user, coreInstance), +// ]); + +// const [ +// userIndex, +// redirectedBalance, +// principalATokenBalance, +// redirectionAddressRedirectedBalance, +// interestRedirectionAddress, +// ] = aTokenData; + +// let walletBalance; + +// if (reserve === ETHEREUM_ADDRESS) { +// walletBalance = new BigNumber(await web3.eth.getBalance(user)); +// } else { +// const reserveInstance: ERC20DetailedInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.ERC20Detailed, +// reserve +// ); +// walletBalance = new BigNumber(await reserveInstance.balanceOf(user)); +// } + +// const userData : any = data + +// return { +// principalATokenBalance: new BigNumber(principalATokenBalance), +// interestRedirectionAddress, +// redirectionAddressRedirectedBalance: new BigNumber(redirectionAddressRedirectedBalance), +// redirectedBalance: new BigNumber(redirectedBalance), +// currentATokenUserIndex: new BigNumber(userIndex), +// currentATokenBalance: new BigNumber(userData.currentATokenBalance), +// currentBorrowBalance: new BigNumber(userData.currentBorrowBalance), +// principalBorrowBalance: new BigNumber(userData.principalBorrowBalance), +// borrowRateMode: userData.borrowRateMode.toString(), +// borrowRate: new BigNumber(userData.borrowRate), +// liquidityRate: new BigNumber(userData.liquidityRate), +// originationFee: new BigNumber(userData.originationFee), +// variableBorrowIndex: new BigNumber(userData.variableBorrowIndex), +// lastUpdateTimestamp: new BigNumber(userData.lastUpdateTimestamp), +// usageAsCollateralEnabled: userData.usageAsCollateralEnabled, +// walletBalance, +// }; +// }; + +// export const getReserveAddressFromSymbol = async (symbol: string, artifacts: Truffle.Artifacts) => { +// if (symbol.toUpperCase() === 'ETH') { +// return ETHEREUM_ADDRESS; +// } + +// const contractName: string = 'Mock' + symbol.toUpperCase(); + +// const contractInstance: ERC20DetailedInstance = await getTruffleContractInstance(artifacts, < +// ContractId +// >contractName); + +// if (!contractInstance) { +// throw `Could not find instance for contract ${contractName}`; +// } +// return contractInstance.address; +// }; + +// const getATokenUserData = async ( +// reserve: string, +// user: string, +// coreInstance: LendingPoolCoreInstance +// ) => { +// const aTokenAddress: string = await coreInstance.getReserveATokenAddress(reserve); + +// const aTokenInstance: ATokenInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.AToken, +// aTokenAddress +// ); +// const [ +// userIndex, +// interestRedirectionAddress, +// redirectedBalance, +// principalTokenBalance, +// ] = await Promise.all([ +// aTokenInstance.getUserIndex(user), +// aTokenInstance.getInterestRedirectionAddress(user), +// aTokenInstance.getRedirectedBalance(user), +// aTokenInstance.principalBalanceOf(user), +// ]); + +// const redirectionAddressRedirectedBalance = +// interestRedirectionAddress !== NIL_ADDRESS +// ? new BigNumber(await aTokenInstance.getRedirectedBalance(interestRedirectionAddress)) +// : new BigNumber('0'); + +// return [ +// userIndex.toString(), +// redirectedBalance.toString(), +// principalTokenBalance.toString(), +// redirectionAddressRedirectedBalance.toString(), +// interestRedirectionAddress, +// ]; +// }; diff --git a/test/helpers/utils/interfaces/index.ts b/test/helpers/utils/interfaces/index.ts new file mode 100644 index 00000000..ef2603b2 --- /dev/null +++ b/test/helpers/utils/interfaces/index.ts @@ -0,0 +1,42 @@ +import BigNumber from "bignumber.js"; + +export interface UserReserveData { + principalATokenBalance: BigNumber + currentATokenBalance: BigNumber + currentATokenUserIndex: BigNumber + interestRedirectionAddress: string + redirectionAddressRedirectedBalance: BigNumber + redirectedBalance: BigNumber + principalBorrowBalance: BigNumber + borrowRateMode: string + borrowRate: BigNumber + liquidityRate: BigNumber + originationFee: BigNumber + variableBorrowIndex: BigNumber + lastUpdateTimestamp: BigNumber + usageAsCollateralEnabled: Boolean + walletBalance: BigNumber + currentBorrowBalance: BigNumber + [key: string]: BigNumber | string | Boolean + } + + export interface ReserveData { + address: string + symbol: string + decimals: BigNumber + totalLiquidity: BigNumber + availableLiquidity: BigNumber + totalBorrowsStable: BigNumber + totalBorrowsVariable: BigNumber + averageStableBorrowRate: BigNumber + variableBorrowRate: BigNumber + stableBorrowRate: BigNumber + utilizationRate: BigNumber + liquidityIndex: BigNumber + variableBorrowIndex: BigNumber + aTokenAddress: string + marketStableRate: BigNumber + lastUpdateTimestamp: BigNumber + liquidityRate: BigNumber + [key: string]: BigNumber | string + } \ No newline at end of file diff --git a/test/helpers/utils/math.ts b/test/helpers/utils/math.ts new file mode 100644 index 00000000..3fc9fcb9 --- /dev/null +++ b/test/helpers/utils/math.ts @@ -0,0 +1,80 @@ +// import {RAY, WAD, HALF_RAY, HALF_WAD, WAD_RAY_RATIO} from "../../utils/constants" +// import BigNumber from "bignumber.js" + + +// declare module "bignumber.js" { +// interface BigNumber { +// ray: () => BigNumber +// wad: () => BigNumber +// halfRay: () => BigNumber +// halfWad: () => BigNumber +// wadMul: (a: BigNumber) => BigNumber +// wadDiv: (a: BigNumber) => BigNumber +// rayMul: (a: BigNumber) => BigNumber +// rayDiv: (a: BigNumber) => BigNumber +// rayToWad: () => BigNumber +// wadToRay: () => BigNumber +// rayPow: (n: BigNumber) => BigNumber +// } +// } + +// BigNumber.prototype.ray = (): BigNumber => { +// return new BigNumber(RAY).decimalPlaces(0) +// } +// BigNumber.prototype.wad = (): BigNumber => { +// return new BigNumber(WAD).decimalPlaces(0) +// } + +// BigNumber.prototype.halfRay = (): BigNumber => { +// return new BigNumber(HALF_RAY).decimalPlaces(0, BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.halfWad = (): BigNumber => { +// return new BigNumber(HALF_WAD).decimalPlaces(0, BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.wadMul = function(b: BigNumber): BigNumber { +// return this.halfWad().plus(this.multipliedBy(b)).div(WAD).decimalPlaces(0,BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.wadDiv = function(a: BigNumber) : BigNumber { +// const halfA = a.div(2).decimalPlaces(0,BigNumber.ROUND_DOWN) + +// return halfA.plus(this.multipliedBy(WAD)).div(a).decimalPlaces(0, BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.rayMul = function(a: BigNumber) : BigNumber { +// return this.halfRay().plus(this.multipliedBy(a)).div(RAY).decimalPlaces(0, BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.rayDiv = function(a: BigNumber) : BigNumber{ +// const halfA = a.div(2).decimalPlaces(0,BigNumber.ROUND_DOWN) + +// return halfA.plus(this.multipliedBy(RAY)).decimalPlaces(0,BigNumber.ROUND_DOWN).div(a).decimalPlaces(0,BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.rayToWad = function(): BigNumber{ +// const halfRatio = new BigNumber(WAD_RAY_RATIO).div(2); + +// return halfRatio.plus(this).div(WAD_RAY_RATIO).decimalPlaces(0, BigNumber.ROUND_DOWN) +// } + +// BigNumber.prototype.wadToRay = function() : BigNumber { +// return this.multipliedBy(WAD_RAY_RATIO).decimalPlaces(0, BigNumber.ROUND_DOWN) +// } + + +// BigNumber.prototype.rayPow = function(n: BigNumber) : BigNumber { + +// let z = !n.modulo(2).eq(0) ? this : new BigNumber(RAY); +// let x = new BigNumber(this) + +// for (n = n.div(2); !n.eq(0); n = n.div(2)) { +// x = x.rayMul(x); + +// if (!n.modulo(2).eq(0)) { +// z = z.rayMul(x); +// } +// } +// return z; +// } \ No newline at end of file diff --git a/test/liquidation-atoken.spec.ts b/test/liquidation-atoken.spec.ts new file mode 100644 index 00000000..fd0c03a7 --- /dev/null +++ b/test/liquidation-atoken.spec.ts @@ -0,0 +1,493 @@ +// import { +// LendingPoolInstance, +// LendingPoolCoreInstance, +// IPriceOracleInstance, +// ATokenInstance, +// LendingPoolAddressesProviderInstance, +// MintableERC20Instance, +// } from '../utils/typechain-types/truffle-contracts'; +// import { +// ContractId, +// IReserveParams, +// iATokenBase, +// iAavePoolAssets, +// iAssetsWithoutETH, +// ITestEnvWithoutInstances, +// RateMode, +// } from '../utils/types'; +// import BigNumber from 'bignumber.js'; +// import { +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// oneEther, +// ETHEREUM_ADDRESS, +// } from '../utils/constants'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {convertToCurrencyDecimals} from '../utils/misc-utils'; +// import {getTruffleContractInstance} from '../utils/truffle/truffle-core-utils'; + +// const expectRevert = require('@openzeppelin/test-helpers').expectRevert; + +// const {expect} = require('chai'); + +// const almostEqual: any = function(this: any, expected: any, actual: any): any { +// this.assert( +// expected.plus(new BigNumber(1)).eq(actual) || +// expected.plus(new BigNumber(2)).eq(actual) || +// actual.plus(new BigNumber(1)).eq(expected) || +// actual.plus(new BigNumber(2)).eq(expected) || +// expected.eq(actual), +// 'expected #{act} to be almost equal #{exp}', +// 'expected #{act} to be different from #{exp}', +// expected.toString(), +// actual.toString() +// ); +// }; + +// require('chai').use(function(chai: any, utils: any) { +// chai.Assertion.overwriteMethod('almostEqual', function(original: any) { +// return function(this: any, value: any) { +// if (utils.flag(this, 'bignumber')) { +// var expected = new BigNumber(value); +// var actual = new BigNumber(this._obj); +// almostEqual.apply(this, [expected, actual]); +// } else { +// original.apply(this, arguments); +// } +// }; +// }); +// }); + +// contract('LendingPool liquidation - liquidator receiving aToken', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _lendingPoolInstance: LendingPoolInstance; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _lendingPoolAddressesProviderInstance: LendingPoolAddressesProviderInstance; +// let _priceOracleInstance: IPriceOracleInstance; +// let _aTokenInstances: iATokenBase; +// let _tokenInstances: iAssetsWithoutETH; + +// let _daiAddress: string; + +// let _reservesParams: iAavePoolAssets; + +// let _depositorAddress: string; +// let _borrowerAddress: string; + +// let _web3: Web3; + +// let _initialDepositorETHBalance: string; + +// before('Initializing LendingPool test variables', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getWeb3, +// getAllAssetsInstances, +// getFirstBorrowerAddressOnTests, +// getFirstDepositorAddressOnTests, +// getAavePoolReservesParams, +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getPriceOracleInstance, +// getATokenInstances, +// getLendingPoolAddressesProviderInstance, +// } = _testEnvProvider; + +// const instances = await Promise.all([ +// getLendingPoolInstance(), +// getLendingPoolCoreInstance(), +// getPriceOracleInstance(), +// getATokenInstances(), +// getLendingPoolAddressesProviderInstance(), +// getAllAssetsInstances(), +// ]); + +// _reservesParams = await getAavePoolReservesParams(); +// _lendingPoolInstance = instances[0]; +// _lendingPoolCoreInstance = instances[1]; +// _priceOracleInstance = instances[2]; +// _aTokenInstances = instances[3]; +// _lendingPoolAddressesProviderInstance = instances[4]; +// _tokenInstances = instances[5]; +// _daiAddress = _tokenInstances.DAI.address; +// _depositorAddress = await getFirstDepositorAddressOnTests(); +// _borrowerAddress = await getFirstBorrowerAddressOnTests(); + +// _web3 = await getWeb3(); +// _initialDepositorETHBalance = await _web3.eth.getBalance(_depositorAddress); +// console.timeEnd('setup-test'); +// }); + +// it('LIQUIDATION - Deposits ETH, borrows DAI/Check liquidation fails because health factor is above 1', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// const aEthInstance: ATokenInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.AToken, +// await _lendingPoolCoreInstance.getReserveATokenAddress(ETHEREUM_ADDRESS) +// ); + +// //mints DAI to depositor +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, '1000'), { +// from: _depositorAddress, +// }); + +// //approve protocol to access depositor wallet +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: _depositorAddress, +// }); + +// //user 1 deposits 1000 DAI +// const amountDAItoDeposit = await convertToCurrencyDecimals(_daiAddress, '1000'); + +// await _lendingPoolInstance.deposit(_daiAddress, amountDAItoDeposit, '0', { +// from: _depositorAddress, +// }); + +// //user 2 deposits 1 ETH +// const amountETHtoDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, '1'); + +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountETHtoDeposit, '0', { +// from: _borrowerAddress, +// value: amountETHtoDeposit, +// }); + +// //user 2 borrows + +// const userGlobalData: any = await _lendingPoolInstance.getUserAccountData(_borrowerAddress); +// const daiPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// const amountDAIToBorrow = await convertToCurrencyDecimals( +// _daiAddress, +// new BigNumber(userGlobalData.availableBorrowsETH) +// .div(daiPrice) +// .multipliedBy(0.95) +// .toFixed(0) +// ); + +// await _lendingPoolInstance.borrow(_daiAddress, amountDAIToBorrow, RateMode.Stable, '0', { +// from: _borrowerAddress, +// }); + +// const userGlobalDataAfter: any = await _lendingPoolInstance.getUserAccountData( +// _borrowerAddress +// ); + +// expect(userGlobalDataAfter.currentLiquidationThreshold).to.be.bignumber.equal( +// '80', +// 'Invalid liquidation threshold' +// ); + +// //user 2 tries to borrow +// await expectRevert( +// _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// _daiAddress, +// _borrowerAddress, +// amountDAIToBorrow, +// true +// ), +// 'Health factor is not below the threshold' +// ); +// }); + +// it('LIQUIDATION - Drop the health factor below 1', async () => { +// const daiPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// //halving the price of ETH - means doubling the DAIETH exchange rate + +// await _priceOracleInstance.setAssetPrice( +// _daiAddress, +// new BigNumber(daiPrice).multipliedBy(1.15).toFixed(0) +// ); + +// const userGlobalData: any = await _lendingPoolInstance.getUserAccountData(_borrowerAddress); + +// expect(userGlobalData.healthFactor).to.be.bignumber.lt( +// oneEther.toFixed(0), +// 'Invalid health factor' +// ); +// }); + +// it('LIQUIDATION - Tries to liquidate a different currency than the loan principal', async () => { +// //user 2 tries to borrow +// await expectRevert( +// _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// ETHEREUM_ADDRESS, +// _borrowerAddress, +// oneEther, +// true +// ), +// 'User did not borrow the specified currency' +// ); +// }); + +// it('LIQUIDATION - Tries to liquidate a different collateral than the borrower collateral', async () => { +// //user 2 tries to borrow +// await expectRevert( +// _lendingPoolInstance.liquidationCall( +// _daiAddress, +// _daiAddress, +// _borrowerAddress, +// oneEther, +// true +// ), +// 'Invalid collateral to liquidate' +// ); +// }); + +// it('LIQUIDATION - Liquidates the borrow', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// //mints dai to the caller + +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, '1000')); + +// //approve protocol to access depositor wallet +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE); + +// const userReserveDataBefore: any = await _lendingPoolInstance.getUserReserveData( +// _daiAddress, +// _borrowerAddress +// ); + +// const daiReserveDataBefore: any = await _lendingPoolInstance.getReserveData(_daiAddress); +// const ethReserveDataBefore: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .div(2) +// .toFixed(0); + +// await _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// _daiAddress, +// _borrowerAddress, +// amountToLiquidate, +// true +// ); + +// const userReserveDataAfter: any = await _lendingPoolInstance.getUserReserveData( +// _daiAddress, +// _borrowerAddress +// ); + +// const userGlobalDataAfter: any = await _lendingPoolInstance.getUserAccountData( +// _borrowerAddress +// ); + +// const daiReserveDataAfter: any = await _lendingPoolInstance.getReserveData(_daiAddress); +// const ethReserveDataAfter: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const feeAddress = await _lendingPoolAddressesProviderInstance.getTokenDistributor(); + +// const feeAddressBalance = await web3.eth.getBalance(feeAddress); + +// const collateralPrice = await _priceOracleInstance.getAssetPrice(ETHEREUM_ADDRESS); +// const principalPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// const collateralDecimals = await _lendingPoolCoreInstance.getReserveDecimals(ETHEREUM_ADDRESS); +// const principalDecimals = await _lendingPoolCoreInstance.getReserveDecimals(_daiAddress); + +// const expectedCollateralLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(amountToLiquidate).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// const expectedFeeLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(userReserveDataBefore.originationFee).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .div(100) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// expect(userGlobalDataAfter.healthFactor).to.be.bignumber.gt( +// oneEther.toFixed(0), +// 'Invalid health factor' +// ); + +// expect(userReserveDataAfter.originationFee).to.be.bignumber.eq( +// '0', +// 'Origination fee should be repaid' +// ); + +// expect(feeAddressBalance).to.be.bignumber.gt('0'); + +// expect(userReserveDataAfter.principalBorrowBalance).to.be.bignumber.almostEqual( +// new BigNumber(userReserveDataBefore.currentBorrowBalance).minus(amountToLiquidate).toFixed(0), +// 'Invalid user borrow balance after liquidation' +// ); + +// expect(daiReserveDataAfter.availableLiquidity).to.be.bignumber.almostEqual( +// new BigNumber(daiReserveDataBefore.availableLiquidity).plus(amountToLiquidate).toFixed(0), +// 'Invalid principal available liquidity' +// ); + +// expect(ethReserveDataAfter.availableLiquidity).to.be.bignumber.almostEqual( +// new BigNumber(ethReserveDataBefore.availableLiquidity) +// .minus(expectedFeeLiquidated) +// .toFixed(0), +// 'Invalid collateral available liquidity' +// ); +// }); + +// it('User 3 deposits 1000 USDC, user 4 1 ETH, user 4 borrows - drops HF, liquidates the borrow', async () => { +// const {USDC: usdcInstance} = _tokenInstances; + +// //mints USDC to depositor +// await usdcInstance.mint(await convertToCurrencyDecimals(usdcInstance.address, '1000'), { +// from: users[3], +// }); + +// //approve protocol to access depositor wallet +// await usdcInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// { +// from: users[3], +// } +// ); + +// //user 3 deposits 1000 USDC +// const amountUSDCtoDeposit = await convertToCurrencyDecimals(usdcInstance.address, '1000'); + +// await _lendingPoolInstance.deposit(usdcInstance.address, amountUSDCtoDeposit, '0', { +// from: users[3], +// }); + +// //user 4 deposits 1 ETH +// const amountETHtoDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, '1'); + +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountETHtoDeposit, '0', { +// from: users[4], +// value: amountETHtoDeposit, +// }); + +// //user 4 borrows +// const userGlobalData: any = await _lendingPoolInstance.getUserAccountData(users[4]); + +// const usdcPrice = await _priceOracleInstance.getAssetPrice(usdcInstance.address); + +// const amountUSDCToBorrow = await convertToCurrencyDecimals( +// usdcInstance.address, +// new BigNumber(userGlobalData.availableBorrowsETH) +// .div(usdcPrice) +// .multipliedBy(0.95) +// .toFixed(0) +// ); + +// await _lendingPoolInstance.borrow( +// usdcInstance.address, +// amountUSDCToBorrow, +// RateMode.Stable, +// '0', +// { +// from: users[4], +// } +// ); + +// //drops HF below 1 + +// await _priceOracleInstance.setAssetPrice( +// usdcInstance.address, +// new BigNumber(usdcPrice).multipliedBy(1.2).toFixed(0) +// ); + +// //mints dai to the liquidator + +// await usdcInstance.mint(await convertToCurrencyDecimals(usdcInstance.address, '1000')); + +// //approve protocol to access depositor wallet +// await usdcInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE); + +// const userReserveDataBefore: any = await _lendingPoolInstance.getUserReserveData( +// usdcInstance.address, +// users[4] +// ); + +// const usdcReserveDataBefore: any = await _lendingPoolInstance.getReserveData( +// usdcInstance.address +// ); +// const ethReserveDataBefore: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .div(2) +// .toFixed(0); + +// await _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// usdcInstance.address, +// users[4], +// amountToLiquidate, +// true +// ); + +// const userReserveDataAfter: any = await _lendingPoolInstance.getUserReserveData( +// usdcInstance.address, +// users[4] +// ); + +// const userGlobalDataAfter: any = await _lendingPoolInstance.getUserAccountData(users[4]); + +// const usdcReserveDataAfter: any = await _lendingPoolInstance.getReserveData( +// usdcInstance.address +// ); +// const ethReserveDataAfter: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const feeAddress = await _lendingPoolAddressesProviderInstance.getTokenDistributor(); + +// const feeAddressBalance = await web3.eth.getBalance(feeAddress); + +// const collateralPrice = await _priceOracleInstance.getAssetPrice(ETHEREUM_ADDRESS); +// const principalPrice = await _priceOracleInstance.getAssetPrice(usdcInstance.address); + +// const collateralDecimals = await _lendingPoolCoreInstance.getReserveDecimals(ETHEREUM_ADDRESS); +// const principalDecimals = await _lendingPoolCoreInstance.getReserveDecimals( +// usdcInstance.address +// ); + +// const expectedCollateralLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(amountToLiquidate).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// const expectedFeeLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(userReserveDataBefore.originationFee).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .div(100) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// expect(userGlobalDataAfter.healthFactor).to.be.bignumber.gt( +// oneEther.toFixed(0), +// 'Invalid health factor' +// ); + +// expect(userReserveDataAfter.originationFee).to.be.bignumber.eq( +// '0', +// 'Origination fee should be repaid' +// ); + +// expect(feeAddressBalance).to.be.bignumber.gt('0'); + +// expect(userReserveDataAfter.principalBorrowBalance).to.be.bignumber.almostEqual( +// new BigNumber(userReserveDataBefore.currentBorrowBalance).minus(amountToLiquidate).toFixed(0), +// 'Invalid user borrow balance after liquidation' +// ); + +// expect(usdcReserveDataAfter.availableLiquidity).to.be.bignumber.almostEqual( +// new BigNumber(usdcReserveDataBefore.availableLiquidity).plus(amountToLiquidate).toFixed(0), +// 'Invalid principal available liquidity' +// ); + +// expect(ethReserveDataAfter.availableLiquidity).to.be.bignumber.almostEqual( +// new BigNumber(ethReserveDataBefore.availableLiquidity) +// .minus(expectedFeeLiquidated) +// .toFixed(0), +// 'Invalid collateral available liquidity' +// ); +// }); +// }); diff --git a/test/liquidation-underlying.spec.ts b/test/liquidation-underlying.spec.ts new file mode 100644 index 00000000..0abf1ef7 --- /dev/null +++ b/test/liquidation-underlying.spec.ts @@ -0,0 +1,610 @@ +// import { +// LendingPoolInstance, +// LendingPoolCoreInstance, +// IPriceOracleInstance, +// ATokenInstance, +// LendingPoolAddressesProviderInstance, +// MintableERC20Instance, +// } from '../utils/typechain-types/truffle-contracts'; +// import { +// ContractId, +// IReserveParams, +// iATokenBase, +// iAavePoolAssets, +// iAssetsWithoutETH, +// ITestEnvWithoutInstances, +// RateMode, +// } from '../utils/types'; +// import BigNumber from 'bignumber.js'; +// import { +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// oneEther, +// ETHEREUM_ADDRESS, +// } from '../utils/constants'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {convertToCurrencyDecimals} from '../utils/misc-utils'; +// import {getTruffleContractInstance} from '../utils/truffle/truffle-core-utils'; + +// const chai = require('chai'); +// chai.use(require('chai-bignumber')()); + +// const {expect} = chai + +// const almostEqual: any = function(this: any, expected: any, actual: any): any { +// this.assert( +// expected.plus(new BigNumber(1)).eq(actual) || +// expected.plus(new BigNumber(2)).eq(actual) || +// actual.plus(new BigNumber(1)).eq(expected) || +// actual.plus(new BigNumber(2)).eq(expected) || +// expected.eq(actual), +// 'expected #{act} to be almost equal #{exp}', +// 'expected #{act} to be different from #{exp}', +// expected.toString(), +// actual.toString() +// ); +// }; + +// chai.use(function(chai: any, utils: any) { +// chai.Assertion.overwriteMethod('almostEqual', function(original: any) { +// return function(this: any, value: any) { +// if (utils.flag(this, 'bignumber')) { +// var expected = new BigNumber(value); +// var actual = new BigNumber(this._obj); +// almostEqual.apply(this, [expected, actual]); +// } else { +// original.apply(this, arguments); +// } +// }; +// }); +// }); + +// contract( +// 'LendingPool liquidation - liquidator receiving underlying asset', +// async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _lendingPoolInstance: LendingPoolInstance; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _priceOracleInstance: IPriceOracleInstance; +// let _aTokenInstances: iATokenBase; +// let _tokenInstances: iAssetsWithoutETH; +// let _lendingPoolAddressesProviderInstance: LendingPoolAddressesProviderInstance; + +// let _daiAddress: string; + +// let _reservesParams: iAavePoolAssets; + +// let _depositorAddress: string; +// let _borrowerAddress: string; + +// let _web3: Web3; + +// let _initialDepositorETHBalance: string; + +// before('Initializing LendingPool test variables', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getWeb3, +// getAllAssetsInstances, +// getFirstBorrowerAddressOnTests, +// getFirstDepositorAddressOnTests, +// getAavePoolReservesParams, +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getPriceOracleInstance, +// getATokenInstances, +// getLendingPoolAddressesProviderInstance, +// } = _testEnvProvider; + +// const instances = await Promise.all([ +// getLendingPoolInstance(), +// getLendingPoolCoreInstance(), +// getPriceOracleInstance(), +// getATokenInstances(), +// getLendingPoolAddressesProviderInstance(), +// getAllAssetsInstances(), +// ]); + +// _reservesParams = await getAavePoolReservesParams(); +// _lendingPoolInstance = instances[0]; +// _lendingPoolCoreInstance = instances[1]; +// _priceOracleInstance = instances[2]; +// _aTokenInstances = instances[3]; +// _lendingPoolAddressesProviderInstance = instances[4]; +// _tokenInstances = instances[5]; +// _daiAddress = _tokenInstances.DAI.address; +// _depositorAddress = await getFirstDepositorAddressOnTests(); +// _borrowerAddress = await getFirstBorrowerAddressOnTests(); + +// _web3 = await getWeb3(); +// _initialDepositorETHBalance = await _web3.eth.getBalance(_depositorAddress); +// console.timeEnd('setup-test'); +// }); + +// it('LIQUIDATION - Deposits ETH, borrows DAI', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// const aEthInstance: ATokenInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.AToken, +// await _lendingPoolCoreInstance.getReserveATokenAddress(ETHEREUM_ADDRESS) +// ); + +// //mints DAI to depositor +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, '1000'), { +// from: _depositorAddress, +// }); + +// //approve protocol to access depositor wallet +// await daiInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// { +// from: _depositorAddress, +// } +// ); + +// //user 1 deposits 1000 DAI +// const amountDAItoDeposit = await convertToCurrencyDecimals(_daiAddress, '1000'); + +// await _lendingPoolInstance.deposit(_daiAddress, amountDAItoDeposit, '0', { +// from: _depositorAddress, +// }); + +// //user 2 deposits 1 ETH +// const amountETHtoDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, '1'); + +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountETHtoDeposit, '0', { +// from: _borrowerAddress, +// value: amountETHtoDeposit, +// }); + +// //user 2 borrows + +// const userGlobalData: any = await _lendingPoolInstance.getUserAccountData(_borrowerAddress); +// const daiPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// const amountDAIToBorrow = await convertToCurrencyDecimals( +// _daiAddress, +// new BigNumber(userGlobalData.availableBorrowsETH) +// .div(daiPrice) +// .multipliedBy(0.95) +// .toFixed(0) +// ); + +// await _lendingPoolInstance.borrow(_daiAddress, amountDAIToBorrow, RateMode.Stable, '0', { +// from: _borrowerAddress, +// }); + +// const userGlobalDataAfter: any = await _lendingPoolInstance.getUserAccountData( +// _borrowerAddress +// ); + +// expect(userGlobalDataAfter.currentLiquidationThreshold.toString()).to.be.bignumber.equal( +// '80', +// 'Invalid liquidation threshold' +// ); +// }); + +// it('LIQUIDATION - Drop the health factor below 1', async () => { +// const daiPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// //halving the price of ETH - means doubling the DAIETH exchange rate + +// const userGlobalDataBefore: any = await _lendingPoolInstance.getUserAccountData( +// _borrowerAddress +// ); + +// await _priceOracleInstance.setAssetPrice( +// _daiAddress, +// new BigNumber(daiPrice).multipliedBy(1.15).toFixed(0) +// ); + +// const userGlobalData: any = await _lendingPoolInstance.getUserAccountData(_borrowerAddress); + +// expect(userGlobalData.healthFactor.toString()).to.be.bignumber.lt( +// oneEther.toFixed(0), +// 'Invalid health factor' +// ); +// }); + +// it('LIQUIDATION - Liquidates the borrow', async () => { +// const {DAI: daiInstance} = _tokenInstances; + +// //mints dai to the caller + +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, '1000')); + +// //approve protocol to access depositor wallet +// await daiInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE +// ); + +// const daiPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// const userReserveDataBefore: any = await _lendingPoolInstance.getUserReserveData( +// _daiAddress, +// _borrowerAddress +// ); + +// const daiReserveDataBefore: any = await _lendingPoolInstance.getReserveData(_daiAddress); +// const ethReserveDataBefore: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .div(2) +// .toFixed(0); + +// await _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// _daiAddress, +// _borrowerAddress, +// amountToLiquidate, +// false +// ); + +// const userReserveDataAfter: any = await _lendingPoolInstance.getUserReserveData( +// _daiAddress, +// _borrowerAddress +// ); + +// const daiReserveDataAfter: any = await _lendingPoolInstance.getReserveData(_daiAddress); +// const ethReserveDataAfter: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const collateralPrice = await _priceOracleInstance.getAssetPrice(ETHEREUM_ADDRESS); +// const principalPrice = await _priceOracleInstance.getAssetPrice(_daiAddress); + +// const collateralDecimals = await _lendingPoolCoreInstance.getReserveDecimals( +// ETHEREUM_ADDRESS +// ); +// const principalDecimals = await _lendingPoolCoreInstance.getReserveDecimals(_daiAddress); + +// const expectedCollateralLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(amountToLiquidate).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .div(100) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// const expectedFeeLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(userReserveDataBefore.originationFee).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .div(100) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// const feeAddress = await _lendingPoolAddressesProviderInstance.getTokenDistributor(); + +// const feeAddressBalance = await web3.eth.getBalance(feeAddress); + +// expect(userReserveDataAfter.originationFee.toString()).to.be.bignumber.eq( +// '0', +// 'Origination fee should be repaid' +// ); + +// expect(feeAddressBalance).to.be.bignumber.gt('0'); + +// expect(userReserveDataAfter.principalBorrowBalance.toString()).to.be.bignumber.almostEqual( +// new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .minus(amountToLiquidate) +// .toFixed(0), +// 'Invalid user borrow balance after liquidation' +// ); + +// expect(daiReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( +// new BigNumber(daiReserveDataBefore.availableLiquidity).plus(amountToLiquidate).toFixed(0), +// 'Invalid principal available liquidity' +// ); + +// expect(ethReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( +// new BigNumber(ethReserveDataBefore.availableLiquidity) +// .minus(expectedFeeLiquidated) +// .minus(expectedCollateralLiquidated) +// .toFixed(0), +// 'Invalid collateral available liquidity' +// ); +// }); + +// it('User 3 deposits 1000 USDC, user 4 1 ETH, user 4 borrows - drops HF, liquidates the borrow', async () => { +// const {USDC: usdcInstance} = _tokenInstances; + +// //mints USDC to depositor +// await usdcInstance.mint(await convertToCurrencyDecimals(usdcInstance.address, '1000'), { +// from: users[3], +// }); + +// //approve protocol to access depositor wallet +// await usdcInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// { +// from: users[3], +// } +// ); + +// //user 3 deposits 1000 USDC +// const amountUSDCtoDeposit = await convertToCurrencyDecimals(usdcInstance.address, '1000'); + +// await _lendingPoolInstance.deposit(usdcInstance.address, amountUSDCtoDeposit, '0', { +// from: users[3], +// }); + +// //user 4 deposits 1 ETH +// const amountETHtoDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, '1'); + +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountETHtoDeposit, '0', { +// from: users[4], +// value: amountETHtoDeposit, +// }); + +// //user 4 borrows +// const userGlobalData: any = await _lendingPoolInstance.getUserAccountData(users[4]); + +// const usdcPrice = await _priceOracleInstance.getAssetPrice(usdcInstance.address); + +// const amountUSDCToBorrow = await convertToCurrencyDecimals( +// usdcInstance.address, +// new BigNumber(userGlobalData.availableBorrowsETH) +// .div(usdcPrice) +// .multipliedBy(0.95) +// .toFixed(0) +// ); + +// await _lendingPoolInstance.borrow( +// usdcInstance.address, +// amountUSDCToBorrow, +// RateMode.Stable, +// '0', +// { +// from: users[4], +// } +// ); + +// //drops HF below 1 +// await _priceOracleInstance.setAssetPrice( +// usdcInstance.address, +// new BigNumber(usdcPrice).multipliedBy(1.2).toFixed(0) +// ); + +// //mints dai to the liquidator + +// await usdcInstance.mint(await convertToCurrencyDecimals(usdcInstance.address, '1000')); + +// //approve protocol to access depositor wallet +// await usdcInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE +// ); + +// const userReserveDataBefore: any = await _lendingPoolInstance.getUserReserveData( +// usdcInstance.address, +// users[4] +// ); + +// const usdcReserveDataBefore: any = await _lendingPoolInstance.getReserveData( +// usdcInstance.address +// ); +// const ethReserveDataBefore: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .div(2) +// .decimalPlaces(0, BigNumber.ROUND_DOWN) +// .toFixed(0); + +// await _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// usdcInstance.address, +// users[4], +// amountToLiquidate, +// false +// ); + +// const userReserveDataAfter: any = await _lendingPoolInstance.getUserReserveData( +// usdcInstance.address, +// users[4] +// ); + +// const userGlobalDataAfter: any = await _lendingPoolInstance.getUserAccountData(users[4]); + +// const usdcReserveDataAfter: any = await _lendingPoolInstance.getReserveData( +// usdcInstance.address +// ); +// const ethReserveDataAfter: any = await _lendingPoolInstance.getReserveData(ETHEREUM_ADDRESS); + +// const feeAddress = await _lendingPoolAddressesProviderInstance.getTokenDistributor(); + +// const feeAddressBalance = await web3.eth.getBalance(feeAddress); + +// const collateralPrice = await _priceOracleInstance.getAssetPrice(ETHEREUM_ADDRESS); +// const principalPrice = await _priceOracleInstance.getAssetPrice(usdcInstance.address); + +// const collateralDecimals = await _lendingPoolCoreInstance.getReserveDecimals( +// ETHEREUM_ADDRESS +// ); +// const principalDecimals = await _lendingPoolCoreInstance.getReserveDecimals( +// usdcInstance.address +// ); + +// const expectedCollateralLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(amountToLiquidate).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .div(100) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// const expectedFeeLiquidated = new BigNumber(principalPrice) +// .times(new BigNumber(userReserveDataBefore.originationFee).times(105)) +// .times(new BigNumber(10).pow(collateralDecimals)) +// .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) +// .div(100) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// expect(userGlobalDataAfter.healthFactor.toString()).to.be.bignumber.gt( +// oneEther.toFixed(0), +// 'Invalid health factor' +// ); + +// expect(userReserveDataAfter.originationFee.toString()).to.be.bignumber.eq( +// '0', +// 'Origination fee should be repaid' +// ); + +// expect(feeAddressBalance.toString()).to.be.bignumber.gt('0'); + +// expect(userReserveDataAfter.principalBorrowBalance.toString()).to.be.bignumber.almostEqual( +// new BigNumber(userReserveDataBefore.currentBorrowBalance.toString()) +// .minus(amountToLiquidate) +// .toFixed(0), +// 'Invalid user borrow balance after liquidation' +// ); + +// expect(usdcReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( +// new BigNumber(usdcReserveDataBefore.availableLiquidity).plus(amountToLiquidate).toFixed(0), +// 'Invalid principal available liquidity' +// ); + +// expect(ethReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( +// new BigNumber(ethReserveDataBefore.availableLiquidity) +// .minus(expectedFeeLiquidated) +// .minus(expectedCollateralLiquidated) +// .toFixed(0), +// 'Invalid collateral available liquidity' +// ); +// }); + +// it('User 4 deposits 1000 LEND - drops HF, liquidates the LEND, which results on a lower amount being liquidated', async () => { +// const {USDC: usdcInstance, LEND: lendInstance} = _tokenInstances; + +// //mints USDC to depositor +// await lendInstance.mint(await convertToCurrencyDecimals(lendInstance.address, '1000'), { +// from: users[4], +// }); + +// //approve protocol to access depositor wallet +// await lendInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// { +// from: users[4], +// } +// ); + +// //user 4 deposits 100 USDC +// const amountLENDtoDeposit = await convertToCurrencyDecimals(lendInstance.address, '1000'); + +// await _lendingPoolInstance.deposit(lendInstance.address, amountLENDtoDeposit, '0', { +// from: users[4], +// }); + +// const usdcPrice = await _priceOracleInstance.getAssetPrice(usdcInstance.address); + +// //drops HF below 1 +// await _priceOracleInstance.setAssetPrice( +// usdcInstance.address, +// new BigNumber(usdcPrice).multipliedBy(1.10).toFixed(0) +// ); + +// //mints usdc to the liquidator +// await usdcInstance.mint(await convertToCurrencyDecimals(usdcInstance.address, '1000')); + +// //approve protocol to access depositor wallet +// await usdcInstance.approve( +// _lendingPoolCoreInstance.address, +// APPROVAL_AMOUNT_LENDING_POOL_CORE +// ); + +// const userReserveDataBefore: any = await _lendingPoolInstance.getUserReserveData( +// usdcInstance.address, +// users[4] +// ); + +// const usdcReserveDataBefore: any = await _lendingPoolInstance.getReserveData( +// usdcInstance.address +// ); +// const lendReserveDataBefore: any = await _lendingPoolInstance.getReserveData( +// lendInstance.address +// ); + +// const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .div(2) +// .decimalPlaces(0, BigNumber.ROUND_DOWN) +// .toFixed(0); + +// const collateralPrice = await _priceOracleInstance.getAssetPrice(lendInstance.address); +// const principalPrice = await _priceOracleInstance.getAssetPrice(usdcInstance.address); + +// await _lendingPoolInstance.liquidationCall( +// lendInstance.address, +// usdcInstance.address, +// users[4], +// amountToLiquidate, +// false +// ); + +// const userReserveDataAfter: any = await _lendingPoolInstance.getUserReserveData( +// usdcInstance.address, +// users[4] +// ); + +// const userGlobalDataAfter: any = await _lendingPoolInstance.getUserAccountData(users[4]); + +// const usdcReserveDataAfter: any = await _lendingPoolInstance.getReserveData( +// usdcInstance.address +// ); +// const lendReserveDataAfter: any = await _lendingPoolInstance.getReserveData( +// lendInstance.address +// ); + +// const collateralDecimals = await _lendingPoolCoreInstance.getReserveDecimals( +// lendInstance.address +// ); +// const principalDecimals = await _lendingPoolCoreInstance.getReserveDecimals( +// usdcInstance.address +// ); + +// const expectedCollateralLiquidated = oneEther.multipliedBy('1000'); + +// const liquidationBonus = await _lendingPoolCoreInstance.getReserveLiquidationBonus( +// lendInstance.address +// ); + +// const expectedPrincipal = new BigNumber(collateralPrice) +// .times(expectedCollateralLiquidated) +// .times(new BigNumber(10).pow(principalDecimals)) +// .div(new BigNumber(principalPrice).times(new BigNumber(10).pow(collateralDecimals))) +// .times(100) +// .div(liquidationBonus.toString()) +// .decimalPlaces(0, BigNumber.ROUND_DOWN); + +// expect(userGlobalDataAfter.healthFactor.toString()).to.be.bignumber.gt( +// oneEther.toFixed(0), +// 'Invalid health factor' +// ); + +// expect(userReserveDataAfter.originationFee.toString()).to.be.bignumber.eq( +// '0', +// 'Origination fee should be repaid' +// ); + +// expect(userReserveDataAfter.principalBorrowBalance.toString()).to.be.bignumber.almostEqual( +// new BigNumber(userReserveDataBefore.currentBorrowBalance) +// .minus(expectedPrincipal) +// .toFixed(0), +// 'Invalid user borrow balance after liquidation' +// ); + +// expect(usdcReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( +// new BigNumber(usdcReserveDataBefore.availableLiquidity).plus(expectedPrincipal).toFixed(0), +// 'Invalid principal available liquidity' +// ); + +// expect(lendReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( +// new BigNumber(lendReserveDataBefore.availableLiquidity) +// .minus(expectedCollateralLiquidated) +// .toFixed(0), +// 'Invalid collateral available liquidity' +// ); +// }); +// } +// ); diff --git a/test/pool-modifiers.spec.ts b/test/pool-modifiers.spec.ts new file mode 100644 index 00000000..fafd5783 --- /dev/null +++ b/test/pool-modifiers.spec.ts @@ -0,0 +1,241 @@ +// import {iATokenBase, iAssetsWithoutETH, ITestEnvWithoutInstances, RateMode} from '../utils/types'; +// import { +// LendingPoolConfiguratorInstance, +// LendingPoolInstance, +// ATokenInstance, +// LendingPoolCoreInstance, +// MintableERC20Instance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {oneEther, ETHEREUM_ADDRESS} from '../utils/constants'; +// import {convertToCurrencyDecimals} from '../utils/misc-utils'; + +// const expectRevert = require('@openzeppelin/test-helpers').expectRevert; + +// contract('LendingPool: Modifiers', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _lendingPoolConfiguratorInstance: LendingPoolConfiguratorInstance; +// let _lendingPoolInstance: LendingPoolInstance; +// let _lendingPoolCoreInstance: LendingPoolCoreInstance; +// let _aTokenInstances: iATokenBase; +// let _tokenInstances: iAssetsWithoutETH; + +// before('Initializing LendingPool test variables', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getAllAssetsInstances, +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getLendingPoolConfiguratorInstance, +// getATokenInstances, +// } = _testEnvProvider; +// const instances = await Promise.all([ +// getLendingPoolInstance(), +// getLendingPoolCoreInstance(), +// getLendingPoolConfiguratorInstance(), +// getATokenInstances(), +// getAllAssetsInstances(), +// ]); + +// _lendingPoolInstance = instances[0]; +// _lendingPoolCoreInstance = instances[1]; +// _lendingPoolConfiguratorInstance = instances[2]; + +// _aTokenInstances = instances[3]; +// _tokenInstances = instances[4]; +// console.timeEnd('setup-test'); +// }); + +// it('Tries to deposit in an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.deposit(deployer, '1', '0'), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to invoke redeemUnderlying on an reserve, from a non-aToken address', async () => { +// await expectRevert( +// _lendingPoolInstance.redeemUnderlying(ETHEREUM_ADDRESS, deployer, '1', '0'), +// 'The caller of this function can only be the aToken contract of this reserve' +// ); +// }); + +// it('Tries to borrow from an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.borrow(deployer, '1', '0', RateMode.Stable), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to repay in an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.repay(deployer, '1', deployer), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to swapBorrowRateMode on an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.swapBorrowRateMode(deployer), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to rebalanceStableBorrowRate on an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.rebalanceStableBorrowRate(deployer, deployer), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to setUserUseReserveAsCollateral on an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.setUserUseReserveAsCollateral(deployer, true), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to invoke liquidationCall on an inactive reserve', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.liquidationCall(ETHEREUM_ADDRESS, deployer, deployer, '1', false), +// 'Action requires an active reserve' +// ); +// }); + +// it('Tries to invoke liquidationCall on an inactive collateral', async () => { +// //using the deployer address as a fake reserve address +// await expectRevert( +// _lendingPoolInstance.liquidationCall(deployer, ETHEREUM_ADDRESS, deployer, '1', false), +// 'Action requires an active reserve' +// ); +// }); + +// it('Freezes the ETH reserve', async () => { +// await _lendingPoolConfiguratorInstance.freezeReserve(ETHEREUM_ADDRESS); +// }); + +// it('tries to deposit in a freezed reserve', async () => { +// await expectRevert( +// _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, '1', '0'), +// 'Action requires an unfreezed reserve' +// ); +// }); + +// it('tries to borrow from a freezed reserve', async () => { +// await expectRevert( +// _lendingPoolInstance.borrow(ETHEREUM_ADDRESS, '1', '0', '0'), +// 'Action requires an unfreezed reserve' +// ); +// }); + +// it('tries to swap interest rate mode in a freezed reserve', async () => { +// await expectRevert( +// _lendingPoolInstance.swapBorrowRateMode(ETHEREUM_ADDRESS), +// 'Action requires an unfreezed reserve' +// ); +// }); + +// it('tries to disable as collateral a freezed reserve', async () => { +// await expectRevert( +// _lendingPoolInstance.setUserUseReserveAsCollateral(ETHEREUM_ADDRESS, false), +// 'Action requires an unfreezed reserve' +// ); +// }); + +// it('unfreezes the reserve, user deposits 1 ETH, freezes the reserve, check that the user can redeem', async () => { +// const {aETH} = _aTokenInstances; + +// //unfreezes the reserve +// await _lendingPoolConfiguratorInstance.unfreezeReserve(ETHEREUM_ADDRESS); + +// //deposit 1 ETH +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, oneEther, '0', { +// value: oneEther.toString(), +// }); + +// //freezes the reserve +// await _lendingPoolConfiguratorInstance.freezeReserve(ETHEREUM_ADDRESS); + +// const balance = await aETH.balanceOf(deployer); + +// await aETH.redeem(balance); +// }); + +// it('unfreezes the reserve, user 0 deposits 100 DAI, user 1 deposits 1 ETH and borrows 50 DAI, freezes the reserve, checks that the user 1 can repay', async () => { +// const {aETH, aDAI} = _aTokenInstances; +// const {DAI} = _tokenInstances; + +// //unfreezes the reserve +// await _lendingPoolConfiguratorInstance.unfreezeReserve(ETHEREUM_ADDRESS); + +// const amountDAI = await convertToCurrencyDecimals(DAI.address, '100'); + +// //user 0 deposits 100 DAI +// await DAI.mint(amountDAI, {from: users[0]}); + +// await DAI.approve(_lendingPoolCoreInstance.address, amountDAI, {from: users[0]}); + +// await _lendingPoolInstance.deposit(DAI.address, amountDAI, '0', {from: users[0]}); + +// //user 1 deposits 1 ETH +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, oneEther, '0', { +// from: users[1], +// value: oneEther.toString(), +// }); + +// const amountDAIToBorrow = await convertToCurrencyDecimals(DAI.address, '10'); + +// //user 1 borrows 10 DAI +// await _lendingPoolInstance.borrow(DAI.address, amountDAIToBorrow, RateMode.Stable, '0', { +// from: users[1], +// }); + +// //freezes the reserve +// await _lendingPoolConfiguratorInstance.freezeReserve(ETHEREUM_ADDRESS); + +// //user 1 repays 1 DAI +// await DAI.approve(_lendingPoolCoreInstance.address, amountDAIToBorrow, {from: users[1]}); + +// await _lendingPoolInstance.repay(DAI.address, oneEther, users[1], {from: users[1]}); +// }); + +// it('Check that liquidationCall can be executed on a freezed reserve', async () => { +// const {aETH, aDAI} = _aTokenInstances; +// const {DAI} = _tokenInstances; + +// //user 2 tries to liquidate + +// await expectRevert( +// _lendingPoolInstance.liquidationCall( +// ETHEREUM_ADDRESS, +// DAI.address, +// users[1], +// oneEther, +// true, +// {from: users[2]} +// ), +// 'Health factor is not below the threshold' +// ); +// }); + +// it('Check that rebalanceStableBorrowRate can be executed on a freezed reserve', async () => { +// const {aETH, aDAI} = _aTokenInstances; +// const {DAI} = _tokenInstances; + +// //user 2 tries to liquidate + +// await expectRevert( +// _lendingPoolInstance.rebalanceStableBorrowRate(DAI.address, users[1]), +// 'Interest rate rebalance conditions were not met' +// ); +// }); +// }); diff --git a/test/rate-strategy.spec.ts b/test/rate-strategy.spec.ts new file mode 100644 index 00000000..d7d49be8 --- /dev/null +++ b/test/rate-strategy.spec.ts @@ -0,0 +1,165 @@ +// import { +// IReserveParams, +// iAavePoolAssets, +// iAssetsWithoutETH, +// ITestEnvWithoutInstances, +// } from "../utils/types" +// import { + +// LendingPoolAddressesProviderInstance, + +// DefaultReserveInterestRateStrategyInstance, +// MintableERC20Instance, +// } from "../utils/typechain-types/truffle-contracts" +// import { testEnvProviderWithoutInstances} from "../utils/truffle/dlp-tests-env" +// import {RAY} from "../utils/constants" +// import BigNumber from "bignumber.js" + +// const {expect} = require("chai") + +// contract("Interest rate strategy", async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances +// let _strategyInstance: DefaultReserveInterestRateStrategyInstance +// let _tokenInstances: iAssetsWithoutETH +// let _addressesProviderInstance: LendingPoolAddressesProviderInstance +// let _reservesParams: iAavePoolAssets + +// before("Initializing test variables", async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances( +// artifacts, +// [deployer, ...users], +// ) + +// const { +// getAllAssetsInstances, +// getLendingPoolAddressesProviderInstance, +// getAavePoolReservesParams, +// } = _testEnvProvider + +// const instances = await Promise.all([ +// getAllAssetsInstances(), +// getLendingPoolAddressesProviderInstance() +// ]) + +// _tokenInstances = instances[0] +// _addressesProviderInstance = instances[1] +// _reservesParams = await getAavePoolReservesParams() +// console.timeEnd('setup-test'); +// }) + +// it("Deploys a new instance of a DefaultReserveInterestRateStrategy contract", async () => { +// const {DAI: daiInstance} = _tokenInstances + +// const {DAI: daiConfiguration} = _reservesParams + +// const contract: any = await artifacts.require("DefaultReserveInterestRateStrategy") +// const mathLibrary = await artifacts.require("WadRayMath") +// const mathLibraryInstance = await mathLibrary.new() + +// await contract.link("WadRayMath", mathLibraryInstance.address) + +// _strategyInstance = await contract.new( +// daiInstance.address, +// _addressesProviderInstance.address, +// daiConfiguration.baseVariableBorrowRate, +// daiConfiguration.variableRateSlope1, +// daiConfiguration.variableRateSlope2, +// daiConfiguration.stableRateSlope1, +// daiConfiguration.stableRateSlope2, +// ) +// }) + +// it("Checks rates at 0% utilization rate", async () => { +// const {DAI: daiInstance} = _tokenInstances +// const {DAI: daiConfiguration} = _reservesParams +// const data: any = await _strategyInstance.calculateInterestRates( +// daiInstance.address, +// "1000000000000000000", +// "0", +// "0", +// "0", +// ) + +// expect(data.currentLiquidityRate.toString()).to.be.equal("0", "Invalid liquidity rate") +// expect(data.currentStableBorrowRate.toString()).to.be.equal( +// new BigNumber(0.039).times(RAY).toFixed(0), +// "Invalid stable rate", +// ) +// expect(data.currentVariableBorrowRate.toString()).to.be.equal( +// daiConfiguration.baseVariableBorrowRate, +// "Invalid variable rate", +// ) +// }) + +// it("Checks rates at 80% utilization rate", async () => { +// const {DAI: daiInstance} = _tokenInstances +// const {DAI: daiConfiguration} = _reservesParams +// const data: any = await _strategyInstance.calculateInterestRates( +// daiInstance.address, +// "200000000000000000", +// "0", +// "800000000000000000", +// "0", +// ) + +// const expectedVariableRate = new BigNumber(daiConfiguration.baseVariableBorrowRate) +// .plus(daiConfiguration.variableRateSlope1) + +// expect(data.currentLiquidityRate.toString()).to.be.equal( +// expectedVariableRate.times(0.8).toFixed(0), +// "Invalid liquidity rate", +// ) + +// expect(data.currentVariableBorrowRate.toString()).to.be.equal( +// new BigNumber(daiConfiguration.baseVariableBorrowRate) +// .plus(daiConfiguration.variableRateSlope1) +// .toFixed(0), +// "Invalid variable rate", +// ) + +// expect(data.currentStableBorrowRate.toString()).to.be.equal( +// new BigNumber(0.039) +// .times(RAY) +// .plus(daiConfiguration.stableRateSlope1) +// .toFixed(0), +// "Invalid stable rate", +// ) +// }) + +// it("Checks rates at 100% utilization rate", async () => { +// const {DAI: daiInstance} = _tokenInstances +// const {DAI: daiConfiguration} = _reservesParams +// const data: any = await _strategyInstance.calculateInterestRates( +// daiInstance.address, +// "0", +// "0", +// "1000000000000000000", +// "0", +// ) + +// const expectedVariableRate = new BigNumber(daiConfiguration.baseVariableBorrowRate) +// .plus(daiConfiguration.variableRateSlope1) +// .plus(daiConfiguration.variableRateSlope2) +// .toFixed(0) + +// expect(data.currentLiquidityRate.toString()).to.be.equal( +// expectedVariableRate, +// "Invalid liquidity rate", +// ) + +// expect(data.currentVariableBorrowRate.toString()).to.be.equal( +// expectedVariableRate, +// "Invalid variable rate", +// ) + +// expect(data.currentStableBorrowRate.toString()).to.be.equal( +// new BigNumber(0.039) +// .times(RAY) +// .plus(daiConfiguration.stableRateSlope1) +// .plus(daiConfiguration.stableRateSlope2) +// .toFixed(0), +// "Invalid stable rate", +// ) +// }) +// }) diff --git a/test/scenario.spec.ts b/test/scenario.spec.ts new file mode 100644 index 00000000..1e010c45 --- /dev/null +++ b/test/scenario.spec.ts @@ -0,0 +1,56 @@ +// import {ITestEnvWithoutInstances} from '../utils/types'; + +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {configuration as actionsConfiguration, deposit} from './actions'; +// import {configuration as calculationsConfiguration} from './utils/calculations'; +// import {executeStory} from './engine/scenario-engine'; +// import fs from 'fs'; +// import BigNumber from 'bignumber.js'; +// import {ETHEREUM_ADDRESS} from '../utils/constants'; + +// BigNumber.config({DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_DOWN}); + +// const scenarioFolder = './test/scenarios/'; + +// fs.readdirSync(scenarioFolder).forEach(file => { +// // if (file !== "interest-redirection-negatives.json" && +// // file !== "interest-redirection.json" ) return + +// const scenario = require(`./scenarios/${file}`); + +// contract(scenario.title, async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; + +// before('Initializing configuration', async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getWeb3, +// getAavePoolReservesParams, +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// } = _testEnvProvider; + +// const instances = await Promise.all([getLendingPoolInstance(), getLendingPoolCoreInstance()]); + +// actionsConfiguration.lendingPoolInstance = instances[0]; +// actionsConfiguration.lendingPoolCoreInstance = instances[1]; +// actionsConfiguration.ethereumAddress = ETHEREUM_ADDRESS; +// actionsConfiguration.artifacts = artifacts; +// actionsConfiguration.web3 = await getWeb3(); +// actionsConfiguration.skipIntegrityCheck = false; //set this to true to execute solidity-coverage + +// calculationsConfiguration.reservesParams = await getAavePoolReservesParams(); +// calculationsConfiguration.web3 = actionsConfiguration.web3; +// calculationsConfiguration.ethereumAddress = actionsConfiguration.ethereumAddress; +// console.time('setup-test'); +// }); + +// for (const story of scenario.stories) { +// it(story.description, async () => { +// await executeStory(story, users); +// }); +// } +// }); +// }); diff --git a/test/stable-rate-economy.spec.ts b/test/stable-rate-economy.spec.ts new file mode 100644 index 00000000..1c2c156a --- /dev/null +++ b/test/stable-rate-economy.spec.ts @@ -0,0 +1,199 @@ +// import { +// LendingPoolInstance, +// LendingPoolCoreInstance, +// MintableERC20Instance, +// ATokenInstance, +// } from "../utils/typechain-types/truffle-contracts" +// import { +// iATokenBase, +// iAssetsWithoutETH, +// ITestEnvWithoutInstances, +// RateMode, +// } from "../utils/types" +// import { +// APPROVAL_AMOUNT_LENDING_POOL_CORE, +// ETHEREUM_ADDRESS, +// } from "../utils/constants" +// import { testEnvProviderWithoutInstances} from "../utils/truffle/dlp-tests-env" +// import {convertToCurrencyDecimals} from "../utils/misc-utils" + +// const expectRevert = require("@openzeppelin/test-helpers").expectRevert + +// contract("LendingPool - stable rate economy tests", async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances +// let _lendingPoolInstance: LendingPoolInstance +// let _lendingPoolCoreInstance: LendingPoolCoreInstance +// let _aTokenInstances: iATokenBase +// let _tokenInstances: iAssetsWithoutETH + +// let _daiAddress: string + +// let _depositorAddress: string +// let _borrowerAddress: string + +// let _web3: Web3 + +// before("Initializing LendingPool test variables", async () => { +// console.time('setup-test'); +// _testEnvProvider = await testEnvProviderWithoutInstances( +// artifacts, +// [deployer, ...users] +// ) + +// const { +// getWeb3, +// getAllAssetsInstances, +// getFirstBorrowerAddressOnTests, +// getFirstDepositorAddressOnTests, +// getLendingPoolInstance, +// getLendingPoolCoreInstance, +// getATokenInstances +// } = _testEnvProvider + +// const instances = await Promise.all([ +// getLendingPoolInstance(), +// getLendingPoolCoreInstance(), +// getATokenInstances(), +// getAllAssetsInstances() +// ]) +// _lendingPoolInstance = instances[0] +// _lendingPoolCoreInstance = instances[1] +// _aTokenInstances = instances[2] +// _tokenInstances = instances[3] +// _daiAddress = _tokenInstances.DAI.address +// _depositorAddress = await getFirstDepositorAddressOnTests() +// _borrowerAddress = await getFirstBorrowerAddressOnTests() + +// _web3 = await getWeb3() +// console.timeEnd('setup-test'); +// }) + +// it("BORROW - Test user cannot borrow using the same currency as collateral", async () => { +// const {aDAI: aDaiInstance} = _aTokenInstances +// const {DAI: daiInstance} = _tokenInstances + +// //mints DAI to depositor +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, "1000"), { +// from: _depositorAddress, +// }) + +// //mints DAI to borrower +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, "1000"), { +// from: _borrowerAddress, +// }) + +// //approve protocol to access depositor wallet +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: _depositorAddress, +// }) + +// //approve protocol to access borrower wallet +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: _borrowerAddress, +// }) + +// const amountDAItoDeposit = await convertToCurrencyDecimals(_daiAddress, "1000") + +// //user 1 deposits 1000 DAI +// const txResult = await _lendingPoolInstance.deposit(_daiAddress, amountDAItoDeposit, "0", { +// from: _depositorAddress, +// }) + +// //user 2 deposits 1000 DAI, tries to borrow. Needs to be reverted as you can't borrow at a stable rate with the same collateral as the currency. +// const amountDAIToDepositBorrower = await convertToCurrencyDecimals(_daiAddress, "1000") +// await _lendingPoolInstance.deposit(_daiAddress, amountDAIToDepositBorrower, "0", { +// from: _borrowerAddress, +// }) + +// const data: any = await _lendingPoolInstance.getReserveData(_daiAddress) + +// //user 2 tries to borrow +// const amountDAIToBorrow = await convertToCurrencyDecimals(_daiAddress, "250") + +// //user 2 tries to borrow +// await expectRevert( +// _lendingPoolInstance.borrow(_daiAddress, amountDAIToBorrow, RateMode.Stable, "0", { +// from: _borrowerAddress, +// }), +// "User cannot borrow the selected amount with a stable rate", +// ) +// }) + +// it("BORROW - Test user cannot borrow more than 25% of the liquidity available", async () => { +// const {aDAI: aDaiInstance} = _aTokenInstances +// const {DAI: daiInstance} = _tokenInstances + +// //redeem the DAI previously deposited +// const amountADAIToRedeem = await convertToCurrencyDecimals(aDaiInstance.address, "1000") +// await aDaiInstance.redeem(amountADAIToRedeem, { +// from: _borrowerAddress, +// }) + +// //user 2 deposits 5 ETH tries to borrow. needs to be reverted as you can't borrow more than 25% of the available reserve (250 DAI) +// const amountETHToDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, "5") +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountETHToDeposit, "0", { +// from: _borrowerAddress, +// value: amountETHToDeposit, +// }) + +// const data: any = await _lendingPoolInstance.getReserveData(_daiAddress) + +// const amountDAIToBorrow = await convertToCurrencyDecimals(_daiAddress, "500") + +// //user 2 tries to borrow +// await expectRevert( +// _lendingPoolInstance.borrow(_daiAddress, amountDAIToBorrow, RateMode.Stable, "0", { +// from: _borrowerAddress, +// }), +// "User is trying to borrow too much liquidity at a stable rate", +// ) +// }) + +// it("BORROW - Test user can still borrow a currency that he previously deposited as a collateral but he transferred/redeemed", async () => { +// const {aDAI: aDaiInstance} = _aTokenInstances +// const {DAI: daiInstance} = _tokenInstances + +// const user = users[2] + +// //user deposits 1000 DAI +// await daiInstance.mint(await convertToCurrencyDecimals(daiInstance.address, "1000"), { +// from: user, +// }) +// await daiInstance.approve(_lendingPoolCoreInstance.address, APPROVAL_AMOUNT_LENDING_POOL_CORE, { +// from: user, +// }) + +// const amountDAIToDeposit = await convertToCurrencyDecimals(daiInstance.address, "1000") +// await _lendingPoolInstance.deposit(daiInstance.address, amountDAIToDeposit, "0", { +// from: user, +// }) + +// //user deposits 5 ETH as collateral +// const amountETHToDeposit = await convertToCurrencyDecimals(ETHEREUM_ADDRESS, "5") +// await _lendingPoolInstance.deposit(ETHEREUM_ADDRESS, amountETHToDeposit, "0", { +// from: user, +// value: amountETHToDeposit, +// }) + +// //user transfers to another address all the overlying aDAI + +// const aDAIBalance = await aDaiInstance.balanceOf(user) + +// await aDaiInstance.transfer(users[3], aDAIBalance, { +// from: user, +// }) + +// //check the underlying balance is 0 +// const userData: any = await _lendingPoolInstance.getUserReserveData(daiInstance.address, user) + +// expect(userData.currentATokenBalance.toString()).to.be.equal("0") + +// //user tries to borrow the DAI at a stable rate using the ETH as collateral +// const amountDAIToBorrow = await convertToCurrencyDecimals(_daiAddress, "100") + +// //user tries to borrow. No revert expected +// await _lendingPoolInstance.borrow(_daiAddress, amountDAIToBorrow, RateMode.Stable, "0", { +// from: user, +// }) +// }) +// }) diff --git a/test/token-distributor.spec.ts b/test/token-distributor.spec.ts new file mode 100644 index 00000000..fc8c822b --- /dev/null +++ b/test/token-distributor.spec.ts @@ -0,0 +1,277 @@ +// import { +// ITestEnv, +// ContractsInstancesOrigin, +// iBasicDistributionParams, +// iTokenBalances, +// iDistributionParams, +// } from '../utils/types'; +// import { +// TokenDistributorInstance, +// MintableERC20Instance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {testEnvProvider} from '../utils/truffle/dlp-tests-env'; +// import { +// TOKEN_DISTRIBUTOR_PERCENTAGE_BASE, +// ETHEREUM_ADDRESS, +// ONE_ADDRESS, +// NIL_ADDRESS, +// } from '../utils/constants'; +// import BigNumber from 'bignumber.js'; + +// import {expect} from 'chai'; + +// const testAndExecMintAndTransferTokens = async ( +// tokenInstance: MintableERC20Instance, +// amount: string, +// minter: string, +// receiver: string +// ) => { +// const initialMinterBalance = new BigNumber(await tokenInstance.balanceOf(minter)); +// const initialReceiverBalance = new BigNumber(await tokenInstance.balanceOf(receiver)); +// await tokenInstance.mint(amount, { +// from: minter, +// }); + +// expect(initialMinterBalance.plus(amount).toFixed()).to.be.equal( +// new BigNumber(await tokenInstance.balanceOf(minter)).toFixed() +// ); + +// await tokenInstance.transfer(receiver, amount, {from: minter}); + +// expect(initialReceiverBalance.plus(amount).toFixed()).to.be.equal( +// new BigNumber(await tokenInstance.balanceOf(receiver)).toFixed() +// ); +// }; + +// const testAndExecEthTransfer = async ( +// amount: string, +// sender: string, +// receiver: string, +// web3: Web3 +// ) => { +// const initialReceiverEthBalance = await web3.eth.getBalance(receiver); +// await web3.eth.sendTransaction({ +// from: sender, +// to: receiver, +// value: amount, +// }); + +// expect(new BigNumber(initialReceiverEthBalance).plus(amount).toFixed()).to.be.equal( +// await web3.eth.getBalance(receiver) +// ); +// }; + +// const testAndExecDistributeToken = async ( +// tokenInstances: MintableERC20Instance[], +// tokenToBurnInstance: MintableERC20Instance, +// tokenDistributorInstance: TokenDistributorInstance, +// distributionParams: iBasicDistributionParams[] +// ) => { +// const tokenBalancesBefore: iTokenBalances[] = []; +// for (const [index, tokenInstance] of tokenInstances.entries()) { +// const {receivers} = distributionParams[index]; +// const tokenBalancesReceiversBefore: string[][] = [[], []]; +// for (const receiver of receivers) { +// if (receiver.toUpperCase() !== NIL_ADDRESS.toUpperCase()) { +// tokenBalancesReceiversBefore[index].push( +// (await tokenInstance.balanceOf(receiver)).toString() +// ); +// } else { +// tokenBalancesReceiversBefore[index].push( +// (await tokenToBurnInstance.balanceOf( +// await tokenDistributorInstance.recipientBurn() +// )).toString() +// ); +// } +// } +// tokenBalancesBefore.push({ +// tokenDistributor: (await tokenInstance.balanceOf( +// tokenDistributorInstance.address +// )).toString(), +// receivers: tokenBalancesReceiversBefore[index], +// }); +// } + +// const tokenDistribution = await tokenDistributorInstance.getDistribution(); + +// await tokenDistributorInstance.distribute( +// tokenInstances.map(tokenInstance => tokenInstance.address) +// ); + +// const tokenBalanceOfDistributorAfter: string[] = []; +// for (const [indexToken, tokenInstance] of tokenInstances.entries()) { +// const newLength = tokenBalanceOfDistributorAfter.push( +// (await tokenInstance.balanceOf(tokenDistributorInstance.address)).toString() +// ); +// const receivers = distributionParams[indexToken].receivers; +// expect(parseInt(tokenBalanceOfDistributorAfter[newLength - 1])).to.be.within( +// 0, +// receivers.length - 1 +// ); + +// for (const [indexReceiver, receiver] of receivers.entries()) { +// const receiverPercentage = new BigNumber(tokenDistribution[1][indexReceiver]).toFixed(); +// const tokenAmountToReceiver = new BigNumber(tokenBalancesBefore[indexToken].tokenDistributor) +// .multipliedBy(receiverPercentage) +// .dividedBy(TOKEN_DISTRIBUTOR_PERCENTAGE_BASE) +// .toFixed(0, BigNumber.ROUND_DOWN); +// const tokenBalanceOfReceiverAfter = (await tokenInstance.balanceOf(receiver)).toString(); +// const recipientBurnBalanceAfter = (await tokenToBurnInstance.balanceOf( +// await tokenDistributorInstance.recipientBurn() +// )).toString(); +// if (receiver.toUpperCase() !== NIL_ADDRESS.toUpperCase()) { +// expect(tokenBalanceOfReceiverAfter).to.be.equal( +// new BigNumber(tokenBalancesBefore[indexToken].receivers[indexReceiver]) +// .plus(tokenAmountToReceiver) +// .toFixed() +// ); +// } else { +// // 1 ether received from "burning" DAI and 264 LEND wei received from the 34% of the 777 LEND amount sent to the token distributor +// expect(recipientBurnBalanceAfter).to.be.equal('1000000000000000264'); +// } +// } +// } +// }; + +// const testAndExecDistributeEth = async ( +// tokenDistributorInstance: TokenDistributorInstance, +// tokenToBurnInstance: MintableERC20Instance, +// distributionParams: iBasicDistributionParams, +// web3: Web3 +// ) => { +// const {receivers} = distributionParams; + +// const ethBalancesReceiversBefore = []; +// for (const receiver of receivers) { +// if (receiver.toUpperCase() !== NIL_ADDRESS.toUpperCase()) { +// ethBalancesReceiversBefore.push(await web3.eth.getBalance(receiver)); +// } else { +// ethBalancesReceiversBefore.push(await web3.eth.getBalance(ONE_ADDRESS)); +// } +// } +// const ethBalancesBefore: iTokenBalances = { +// tokenDistributor: await web3.eth.getBalance(tokenDistributorInstance.address), +// receivers: ethBalancesReceiversBefore, +// }; + +// const ethDistribution = await tokenDistributorInstance.getDistribution(); + +// await tokenDistributorInstance.distribute([ETHEREUM_ADDRESS]); + +// const ethBalanceOfDistributorAfter = await web3.eth.getBalance(tokenDistributorInstance.address); + +// expect(parseInt(ethBalanceOfDistributorAfter)).to.be.within(0, receivers.length - 1); + +// for (const [index, receiver] of receivers.entries()) { +// const receiverPercentage = new BigNumber(ethDistribution[1][index]).toFixed(); +// const ethAmountToReceiver = new BigNumber(ethBalancesBefore.tokenDistributor) +// .multipliedBy(receiverPercentage) +// .dividedBy(TOKEN_DISTRIBUTOR_PERCENTAGE_BASE) +// .toFixed(0, BigNumber.ROUND_DOWN); +// const ethBalanceOfReceiverAfter = await web3.eth.getBalance(receiver); +// const recipientBurnBalanceAfter = (await tokenToBurnInstance.balanceOf( +// await tokenDistributorInstance.recipientBurn() +// )).toString(); +// if (receiver.toUpperCase() !== NIL_ADDRESS.toUpperCase()) { +// expect(ethBalanceOfReceiverAfter).to.be.equal( +// new BigNumber(ethBalancesBefore.receivers[index]).plus(ethAmountToReceiver).toFixed() +// ); +// } else { +// // 1 ether received from "burning" DAI, 1 ether from ETH and 264 LEND wei received from the 34% of the 777 LEND amount sent to the token distributor +// expect(recipientBurnBalanceAfter).to.be.equal('2000000000000000264'); +// } +// } +// }; + +// contract('TokenDistributor', async ([deployer, ...users]) => { +// // let _testEnvProvider: ITestEnv; +// // let _tokenDistributorInstance: TokenDistributorInstance; +// // let _tokenInstances: iAavePoolAssets; +// // let _web3: Web3; +// // let _depositorAddress: string; +// // let _daiDistributionParams: iDistributionParams; +// // let _lendDistributionParams: iDistributionParams; +// // let _ethDistributionParams: iDistributionParams; + +// // before('Initializing LendingPoolConfigurator test variables', async () => { +// // _testEnvProvider = await testEnvProvider( +// // artifacts, +// // [deployer, ...users], +// // ContractsInstancesOrigin.TruffleArtifacts +// // ); + +// // const { +// // deployedInstances: {tokenDistributorInstance}, +// // getAllAssetsInstances, +// // getWeb3, +// // getFirstDepositorAddressOnTests, +// // getFeeDistributionParams, +// // } = _testEnvProvider; +// // _tokenDistributorInstance = tokenDistributorInstance; +// // _tokenInstances = await getAllAssetsInstances(); +// // _web3 = await getWeb3(); +// // _depositorAddress = await getFirstDepositorAddressOnTests(); + +// // const {receivers, percentages} = await getFeeDistributionParams(); +// // _daiDistributionParams = { +// // amountToDistribute: '333', +// // receivers, +// // percentages, +// // }; +// // _lendDistributionParams = { +// // amountToDistribute: '777', +// // receivers, +// // percentages, +// // }; +// // _ethDistributionParams = { +// // amountToDistribute: '2534', +// // receivers, +// // percentages, +// // }; +// // }); + +// // it('Transfers ETH to the TokenDistributor', async () => { +// // await testAndExecEthTransfer( +// // _ethDistributionParams.amountToDistribute, +// // deployer, +// // _tokenDistributorInstance.address, +// // _web3 +// // ); +// // }); + +// // it('Mints and transfers DAI to the TokenDistributor', async () => { +// // await testAndExecMintAndTransferTokens( +// // _tokenInstances.DAI, +// // _daiDistributionParams.amountToDistribute, +// // _depositorAddress, +// // _tokenDistributorInstance.address +// // ); +// // }); + +// // it('Mints and transfers LEND to the TokenDistributor', async () => { +// // await testAndExecMintAndTransferTokens( +// // _tokenInstances.LEND, +// // _lendDistributionParams.amountToDistribute, +// // _depositorAddress, +// // _tokenDistributorInstance.address +// // ); +// // }); + +// // it('distribute() for the receivers', async () => { +// // await testAndExecDistributeToken( +// // [_tokenInstances.DAI, _tokenInstances.LEND], +// // _tokenInstances.LEND, +// // _tokenDistributorInstance, +// // [_daiDistributionParams, _lendDistributionParams] +// // ); +// // }); + +// // it('Distributes the ETH to the receivers', async () => { +// // await testAndExecDistributeEth( +// // _tokenDistributorInstance, +// // _tokenInstances.LEND, +// // _ethDistributionParams, +// // _web3 +// // ); +// // }); +// }); diff --git a/test/upgradeability.spec.ts b/test/upgradeability.spec.ts new file mode 100644 index 00000000..425f7cdf --- /dev/null +++ b/test/upgradeability.spec.ts @@ -0,0 +1,134 @@ +// import {ContractId, ITestEnvWithoutInstances} from '../utils/types'; +// import { +// LendingPoolCoreInstance, +// LendingPoolConfiguratorInstance, +// LendingPoolAddressesProviderInstance, +// LendingPoolDataProviderInstance, +// LendingPoolInstance, +// MockLendingPoolCoreInstance, +// } from '../utils/typechain-types/truffle-contracts'; +// import {testEnvProviderWithoutInstances} from '../utils/truffle/dlp-tests-env'; +// import {ETHEREUM_ADDRESS} from '../utils/constants'; +// import {getTruffleContractInstance} from '../utils/truffle/truffle-core-utils'; +// import BN = require('bn.js'); + +// const {expectEvent, expectRevert} = require('@openzeppelin/test-helpers'); + +// contract('Upgradeability', async ([deployer, ...users]) => { +// let _testEnvProvider: ITestEnvWithoutInstances; +// let _configuratorInstance: LendingPoolConfiguratorInstance; +// let _coreInstance: LendingPoolCoreInstance; +// let _poolInstance: LendingPoolInstance; +// let _addressesProviderInstance: LendingPoolAddressesProviderInstance; +// let _dataProviderInstance: LendingPoolDataProviderInstance; +// let _mockCoreInstance: MockLendingPoolCoreInstance; + +// before('Initializing test variables', async () => { +// _testEnvProvider = await testEnvProviderWithoutInstances(artifacts, [deployer, ...users]); + +// const { +// getLendingPoolAddressesProviderInstance, +// getLendingPoolConfiguratorInstance, +// getLendingPoolCoreInstance, +// getLendingPoolDataProviderInstance, +// getLendingPoolInstance, +// } = _testEnvProvider; + +// const instances = await Promise.all([ +// getLendingPoolAddressesProviderInstance(), +// getLendingPoolConfiguratorInstance(), +// getLendingPoolCoreInstance(), +// getLendingPoolDataProviderInstance(), +// getLendingPoolInstance(), +// ]); + +// _addressesProviderInstance = instances[0]; +// _configuratorInstance = instances[1]; +// _coreInstance = instances[2]; +// _dataProviderInstance = instances[3]; +// _poolInstance = instances[4]; +// }); + +// it('tries to call the initialization function on LendingPoolConfigurator', async () => { +// await expectRevert( +// _configuratorInstance.initialize(_addressesProviderInstance.address), +// 'Contract instance has already been initialized' +// ); +// }); + +// it('tries to call the initialization function on LendingPoolCore', async () => { +// await expectRevert( +// _coreInstance.initialize(_addressesProviderInstance.address), +// 'Contract instance has already been initialized' +// ); +// }); + +// it('tries to call the initialization function on LendingPool', async () => { +// await expectRevert( +// _poolInstance.initialize(_addressesProviderInstance.address), +// 'Contract instance has already been initialized' +// ); +// }); + +// it('tries to call the initialization function on DataProvider', async () => { +// await expectRevert( +// _dataProviderInstance.initialize(_addressesProviderInstance.address), +// 'Contract instance has already been initialized' +// ); +// }); + +// it('Deploys a new version of a LendingPoolCore contract', async () => { +// const contract: any = await artifacts.require('MockLendingPoolCore'); + +// const mathLibrary = await artifacts.require('WadRayMath'); + +// const mathLibraryInstance = await mathLibrary.new(); + +// const coreLibrary = await artifacts.require('CoreLibrary'); + +// await coreLibrary.link('WadRayMath', mathLibraryInstance.address); + +// await contract.link('CoreLibrary', coreLibrary.address); + +// await contract.link('WadRayMath', mathLibraryInstance.address); + +// _mockCoreInstance = await contract.new(); + +// const txResult = await _addressesProviderInstance.setLendingPoolCoreImpl( +// _mockCoreInstance.address +// ); + +// expectEvent(txResult, 'LendingPoolCoreUpdated', { +// newAddress: _mockCoreInstance.address, +// }); +// }); + +// it('Tries to execute initialize() on the newly deployed core', async () => { +// const coreProxyAddress = await _addressesProviderInstance.getLendingPoolCore(); + +// const instance: LendingPoolCoreInstance = await getTruffleContractInstance( +// artifacts, +// ContractId.LendingPoolCore, +// coreProxyAddress +// ); + +// await expectRevert( +// instance.initialize(_addressesProviderInstance.address), +// 'Contract instance has already been initialized' +// ); +// }); + +// it('Tries to deposit', async () => { +// const coreProxyAddress = await _addressesProviderInstance.getLendingPoolCore(); +// const txReceipt: Truffle.TransactionResponse = await _poolInstance.deposit( +// ETHEREUM_ADDRESS, +// '100', +// '0', +// {value: '100'} +// ); + +// expectEvent.inTransaction(txReceipt.tx, coreProxyAddress, 'ReserveUpdatedFromMock', { +// revision: new BN(2), +// }); +// }); +// }); diff --git a/tsconfig.json b/tsconfig.json index a4bf8c39..2aec18a6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,8 @@ "strict": true, "esModuleInterop": true, "outDir": "dist", - "resolveJsonModule": true + "resolveJsonModule": true, + "downlevelIteration": true }, "include": ["./**/*"], "files": [ diff --git a/types/ATokenFactory.ts b/types/ATokenFactory.ts index d29ef4b5..2e67b44a 100644 --- a/types/ATokenFactory.ts +++ b/types/ATokenFactory.ts @@ -841,4 +841,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620040fd380380620040fd833981810160405260a08110156200003757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805160405193929190846401000000008211156200007657600080fd5b838201915060208201858111156200008d57600080fd5b8251866001820283011164010000000082111715620000ab57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000e1578082015181840152602081019050620000c4565b50505050905090810190601f1680156200010f5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013357600080fd5b838201915060208201858111156200014a57600080fd5b82518660018202830111640100000000821117156200016857600080fd5b8083526020830192505050908051906020019080838360005b838110156200019e57808201518184015260208101905062000181565b50505050905090810190601f168015620001cc5780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001ed92919062000593565b5080600490805190602001906200020692919062000593565b506012600560006101000a81548160ff021916908360ff160217905550505062000236836200057560201b60201c565b84600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e057600080fd5b505afa158015620002f5573d6000803e3d6000fd5b505050506040513d60208110156200030c57600080fd5b8101908080519060200190929190505050600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d6020811015620003f257600080fd5b8101908080519060200190929190505050600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f58b80d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ac57600080fd5b505afa158015620004c1573d6000803e3d6000fd5b505050506040513d6020811015620004d857600080fd5b8101908080519060200190929190505050600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000642565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005d657805160ff191683800117855562000607565b8280016001018555821562000607579182015b8281111562000606578251825591602001919060010190620005e9565b5b5090506200061691906200061a565b5090565b6200063f91905b808211156200063b57600081600090555060010162000621565b5090565b90565b613aab80620006526000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146108c0578063dd62ed3e146108ee578063ee9907a414610966578063f866c319146109be57610173565b8063a9059cbb146107e4578063c634dfaa1461084a578063d0fc81d2146108a257610173565b80635eae177c146105a557806370a082311461060b57806389d1a0fc1461066357806394362e8b146106ad57806395d89b41146106fb578063a457c2d71461077e57610173565b806323b872dd1161013057806323b872dd1461035f578063313ce567146103e5578063325a9b1314610409578063395093511461046d5780633edb7cb8146104d3578063445e80101461052157610173565b806306fdde0314610178578063095ea7b3146101fb5780630e49072d1461026157806312c87c2d146102a557806318160ddd146102e95780631d51e7cf14610307575b600080fd5b610180610a2c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ace565b604051808215151515815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aec565b005b6102e7600480360360208110156102bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af9565b005b6102f1610c59565b6040518082815260200191505060405180910390f35b6103496004803603602081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9e565b6040518082815260200191505060405180910390f35b6103cb6004803603606081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de7565b604051808215151515815260200191505060405180910390f35b6103ed610ec0565b604051808260ff1660ff16815260200191505060405180910390f35b61046b6004803603604081101561041f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed7565b005b6104b96004803603604081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc8565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061107b565b005b6105636004803603602081101561053757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f1600480360360408110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611253565b604051808215151515815260200191505060405180910390f35b61064d6004803603602081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611395565b6040518082815260200191505060405180910390f35b61066b61150a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106f9600480360360408110156106c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b005b610703611674565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610743578082015181840152602081019050610728565b50505050905090810190601f1680156107705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107ca6004803603604081101561079457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611716565b604051808215151515815260200191505060405180910390f35b610830600480360360408110156107fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117e3565b604051808215151515815260200191505060405180910390f35b61088c6004803603602081101561086057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611801565b6040518082815260200191505060405180910390f35b6108aa611813565b6040518082815260200191505060405180910390f35b6108ec600480360360208110156108d657600080fd5b8101908080359060200190929190505050611837565b005b6109506004803603604081101561090457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bad565b6040518082815260200191505060405180910390f35b6109a86004803603602081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c34565b6040518082815260200191505060405180910390f35b610a2a600480360360608110156109d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7d565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ac45780601f10610a9957610100808354040283529160200191610ac4565b820191906000526020600020905b815481529060010190602001808311610aa757829003601f168201915b5050505050905090565b6000610ae2610adb611d33565b8484611d3b565b6001905092915050565b610af63382611f32565b50565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138716025913960400191505060405180910390fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b60405160405180910390a350565b600080610c64612308565b90506000811415610c79576000915050610d9b565b610d97610d92600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d4057600080fd5b505afa158015610d54573d6000803e3d6000fd5b505050506040513d6020811015610d6a57600080fd5b8101908080519060200190929190505050610d8484612312565b61233290919063ffffffff16565b612395565b9150505b90565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610df48484846123da565b610eb584610e00611d33565b610eb0856040518060600160405280602881526020016138b760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e66611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611d3b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613a3c603a913960400191505060405180910390fd5b610fc48282611f32565b5050565b6000611071610fd5611d33565b8461106c8560016000610fe6611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b611d3b565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b600080600061112f856125b2565b93509350935050611141858386612758565b61114b8585612a4e565b600080905060006111658686612c1290919063ffffffff16565b14156111775761117486612c5c565b90505b8573ffffffffffffffffffffffffffffffffffffffff167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846111bc57856111bf565b60005b60405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e9d615600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b8101908080519060200190929190505050905092915050565b6000806113a183612df4565b90506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821480156113f75750600081145b1561140757600092505050611505565b600073ffffffffffffffffffffffffffffffffffffffff16600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114d2576114c9816114bb866114b6858761252a90919063ffffffff16565b612e3c565b612c1290919063ffffffff16565b92505050611505565b6115006114f1826114e38785612e3c565b612c1290919063ffffffff16565b8361252a90919063ffffffff16565b925050505b919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b6000806115e2846125b2565b935093505050611606846115ff858561252a90919063ffffffff16565b6000612758565b6116108484612fb5565b8373ffffffffffffffffffffffffffffffffffffffff167fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a84848460405180848152602001838152602001828152602001935050505060405180910390a250505050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561170c5780601f106116e15761010080835404028352916020019161170c565b820191906000526020600020905b8154815290600101906020018083116116ef57829003601f168201915b5050505050905090565b60006117d9611723611d33565b846117d485604051806060016040528060258152602001613a17602591396001600061174d611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611d3b565b6001905092915050565b60006117f76117f0611d33565b84846123da565b6001905092915050565b600061180c82612df4565b9050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b600081116118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f416d6f756e7420746f2072656465656d206e6565647320746f206265203e203081525060200191505060405180910390fd5b60008060006118bb336125b2565b9350935093505060008490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8514156118f3578390505b8381111561194c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137f76032913960400191505060405180910390fd5b6119563382611253565b6119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5472616e736665722063616e6e6f7420626520616c6c6f7765642e000000000081525060200191505060405180910390fd5b6119d3338483612758565b6119dd3382612a4e565b600080905060006119f78387612c1290919063ffffffff16565b1415611a0957611a0633612c5c565b90505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639895e3d8600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff163385611a7f878b612c1290919063ffffffff16565b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838684611b7f5786611b82565b60005b60405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b611d2e83838361317c565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139c16024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138296022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806138df602a913960400191505060405180910390fd5b60008060008061202a876125b2565b93509350935093506000831161208b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806139096042913960600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146120cc576120cb87600086612758565b5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156121ff576000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a734873559485858560405180848152602001838152602001828152602001935050505060405180910390a35050505050612304565b85600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061228987846000612758565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a734873559485858560405180848152602001838152602001828152602001935050505060405180910390a350505050505b5050565b6000600254905090565b600061232b633b9aca00836132f990919063ffffffff16565b9050919050565b600061238d6b033b2e3c9fd0803ce800000061237f61235a85876132f990919063ffffffff16565b60026b033b2e3c9fd0803ce80000008161237057fe5b0461252a90919063ffffffff16565b61337f90919063ffffffff16565b905092915050565b6000806002633b9aca00816123a657fe5b0490506123d2633b9aca006123c4858461252a90919063ffffffff16565b61337f90919063ffffffff16565b915050919050565b82816123e68282611253565b612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5472616e736665722063616e6e6f7420626520616c6c6f7765642e000000000081525060200191505060405180910390fd5b61246385858561317c565b5050505050565b6000838311158290612517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124dc5780820151818401526020810190506124c1565b50505050905090810190601f1680156125095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060006125c386612df4565b905060006125e2826125d489611395565b612c1290919063ffffffff16565b90506125ee8782612fb5565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126b157600080fd5b505afa1580156126c5573d6000803e3d6000fd5b505050506040513d60208110156126db57600080fd5b8101908080519060200190929190505050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055905082612744838561252a90919063ffffffff16565b838396509650965096505050509193509193565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127f75750612a49565b600080612803836125b2565b93509350505061286d8461285f87600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b612c1290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146129de5761299a83600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff167f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f848489896040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061397b6021913960400191505060405180910390fd5b612ae0826000836133c9565b612b4b816040518060600160405280602281526020016137d5602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba281600254612c1290919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612c5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246a565b905092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594600080600060405180848152602001838152602001828152602001935050505060405180910390a36000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612dea576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050612def565b600090505b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612fad612fa8600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f4857600080fd5b505afa158015612f5c573d6000803e3d6000fd5b505050506040513d6020811015612f7257600080fd5b8101908080519060200190929190505050612f8c87612312565b61233290919063ffffffff16565b6133ce90919063ffffffff16565b612395565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613064600083836133c9565b6130798160025461252a90919063ffffffff16565b6002819055506130d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081116131d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061394b6030913960400191505060405180910390fd5b60008060006131e3866125b2565b935093509350506000806131f6876125b2565b935093505050613207888588612758565b6132258761321e888561252a90919063ffffffff16565b6000612758565b61323088888861342a565b6000809050600061324a8888612c1290919063ffffffff16565b141561325c5761325989612c5c565b90505b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde8898887866132b957896132bc565b60005b88604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050505050565b60008083141561330c5760009050613379565b600082840290508284828161331d57fe5b0414613374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138966021913960400191505060405180910390fd5b809150505b92915050565b60006133c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136eb565b905092915050565b505050565b600080600283816133db57fe5b049050613421836134136134046b033b2e3c9fd0803ce8000000886132f990919063ffffffff16565b8461252a90919063ffffffff16565b61337f90919063ffffffff16565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061399c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b26023913960400191505060405180910390fd5b6135418383836133c9565b6135ac8160405180606001604052806026815260200161384b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061363f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008083118290613797576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561375c578082015181840152602081019050613741565b50505050905090810190601f1680156137895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816137a357fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a264697066735822122088d750a4e3b3943503e728f5a5fb21f6a77c593a73246a90c2869cdebaae015964736f6c63430006080033"; + "0x60806040523480156200001157600080fd5b506040516200266a3803806200266a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620003fb565b508051620001e1906004906020840190620003fb565b50506005805460ff191660121790555062000205836001600160e01b03620003e516565b600a80546001600160a01b0319166001600160a01b0387811691909117918290556040805163076b7fbb60e51b81529051929091169163ed6ff76091600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b03928316179055600a5460408051630261bf8b60e01b815290519190921691630261bf8b916004808301926020929190829003018186803b158015620002ea57600080fd5b505afa158015620002ff573d6000803e3d6000fd5b505050506040513d60208110156200031657600080fd5b5051600c80546001600160a01b0319166001600160a01b03928316179055600a5460408051632f58b80d60e01b815290519190921691632f58b80d916004808301926020929190829003018186803b1580156200037257600080fd5b505afa15801562000387573d6000803e3d6000fd5b505050506040513d60208110156200039e57600080fd5b5051600d80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b03191661010096909216959095021790935550620004a092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043e57805160ff19168380011785556200046e565b828001600101855582156200046e579182015b828111156200046e57825182559160200191906001019062000451565b506200047c92915062000480565b5090565b6200049d91905b808211156200047c576000815560010162000487565b90565b6121ba80620004b06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600c546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600d54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600c546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600c546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600c546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220c8fd5846993571a387a0c2a71b832df30d67b0d8fe3c92d534e2c832d30948d464736f6c63430006080033"; diff --git a/types/AddressStorageFactory.ts b/types/AddressStorageFactory.ts index 05f7062c..22e60a26 100644 --- a/types/AddressStorageFactory.ts +++ b/types/AddressStorageFactory.ts @@ -56,4 +56,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061010a806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806321f8a72114602d575b600080fd5b605660048036036020811015604157600080fd5b81019080803590602001909291905050506098565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905091905056fea2646970667358221220a16c9e7d045268148ef25ca3a4b35c2d6af3954ef6b65238e4dc4a8820245b4c64736f6c63430006080033"; + "0x6080604052348015600f57600080fd5b5060b48061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806321f8a72114602d575b600080fd5b604760048036036020811015604157600080fd5b50356063565b604080516001600160a01b039092168252519081900360200190f35b6000908152602081905260409020546001600160a01b03169056fea2646970667358221220f09fcedc0f4e085a79292d7250a582eb479b29b554e5b6f0da0a8b9d6519437d64736f6c63430006080033"; diff --git a/types/AdminUpgradeabilityProxyFactory.ts b/types/AdminUpgradeabilityProxyFactory.ts index b6394977..c54a7766 100644 --- a/types/AdminUpgradeabilityProxyFactory.ts +++ b/types/AdminUpgradeabilityProxyFactory.ts @@ -104,6 +104,10 @@ const _abi = [ name: "Upgraded", type: "event" }, + { + stateMutability: "payable", + type: "fallback" + }, { inputs: [], name: "admin", @@ -173,12 +177,8 @@ const _abi = [ outputs: [], stateMutability: "payable", type: "function" - }, - { - stateMutability: "payable", - type: "receive" } ]; const _bytecode = - "0x6080604052604051610d2c380380610d2c8339818101604052606081101561002657600080fd5b8101908080519060200190929190805190602001909291908051604051939291908464010000000082111561005a57600080fd5b8382019150602082018581111561007057600080fd5b825186600182028301116401000000008211171561008d57600080fd5b8083526020830192505050908051906020019080838360005b838110156100c15780820151818401526020810190506100a6565b50505050905090810190601f1680156100ee5780820380516001836020036101000a031916815260200191505b506040525050508281600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b1461016157fe5b610170826102bf60201b60201c565b60008151111561023c5760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106101c757805182526020820191506020810190506020830392506101a4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610227576040519150601f19603f3d011682016040523d82523d6000602084013e61022c565b606091505b505090508061023a57600080fd5b505b5050600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b146102a857fe5b6102b78261035660201b60201c565b5050506103d0565b6102d28161038560201b6105b91760201c565b610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610cf1603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156103c757506000801b8214155b92505050919050565b610912806103df6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100625780634f1ef286146100b35780635c60da1b1461014c5780638f283970146101a3578063f851a440146101f45761005d565b3661005d5761005b61024b565b005b600080fd5b34801561006e57600080fd5b506100b16004803603602081101561008557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610265565b005b61014a600480360360408110156100c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561010657600080fd5b82018360208201111561011857600080fd5b8035906020019184600183028401116401000000008311171561013a57600080fd5b90919293919293905050506102ba565b005b34801561015857600080fd5b50610161610390565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101af57600080fd5b506101f2600480360360208110156101c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e8565b005b34801561020057600080fd5b50610209610561565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610253610604565b61026361025e61060e565b61063f565b565b61026d610665565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ae576102a981610696565b6102b7565b6102b661024b565b5b50565b6102c2610665565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610382576102fe83610696565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610369576040519150601f19603f3d011682016040523d82523d6000602084013e61036e565b606091505b505090508061037c57600080fd5b5061038b565b61038a61024b565b5b505050565b600061039a610665565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103dc576103d561060e565b90506103e5565b6103e461024b565b5b90565b6103f0610665565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561055557600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061086c6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104d2610665565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1610550816106e5565b61055e565b61055d61024b565b5b50565b600061056b610665565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156105ad576105a6610665565b90506105b6565b6105b561024b565b5b90565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156105fb57506000801b8214155b92505050919050565b61060c610714565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610660573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b61069f816107aa565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b61071c610665565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156107a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061083a6032913960400191505060405180910390fd5b6107a8610837565b565b6107b3816105b9565b610808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806108a2603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b56fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122085caec80b6efac5b9328fdca186538e6eeb08fad4eb2a3560906c2780d455eb764736f6c6343000608003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373"; + "0x60806040526040516109f73803806109f78339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902086935084925060008051602061099c83398151915260001990910114905061013157fe5b610143826001600160e01b0361026516565b8051156101fb576000826001600160a01b0316826040518082805190602001908083835b602083106101865780518252601f199092019160209182019101610167565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101e6576040519150601f19603f3d011682016040523d82523d6000602084013e6101eb565b606091505b50509050806101f957600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061097c8339815191526000199091011461024b57fe5b61025d826001600160e01b036102c516565b505050610313565b610278816102d760201b6103a31760201c565b6102b35760405162461bcd60e51b815260040180806020018281038252603b8152602001806109bc603b913960400191505060405180910390fd5b60008051602061099c83398151915255565b60008051602061097c83398151915255565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061030b57508115155b949350505050565b61065a806103226000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103df565b6101986101936103e7565b61040c565b565b6101a2610430565b6001600160a01b0316336001600160a01b031614156101c9576101c481610455565b6101d1565b6101d1610180565b50565b6101dc610430565b6001600160a01b0316336001600160a01b03161415610274576101fe83610455565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac6103e7565b90506102bb565b6102bb610180565b90565b6102c6610430565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105b46036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d610430565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c481610495565b6000610382610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac610430565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103d757508115155b949350505050565b6101986104b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561042b573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61045e81610519565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104c1610430565b6001600160a01b0316336001600160a01b031614156105115760405162461bcd60e51b81526004018080602001828103825260328152602001806105826032913960400191505060405180910390fd5b610198610198565b610522816103a3565b61055d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806105ea603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212207b59eb120fd777809f85d39d8f93dc1feedb2bb9d1011748011a45bee6bd17c064736f6c63430006080033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373"; diff --git a/types/BaseAdminUpgradeabilityProxyFactory.ts b/types/BaseAdminUpgradeabilityProxyFactory.ts index 918a2724..62ffe9ab 100644 --- a/types/BaseAdminUpgradeabilityProxyFactory.ts +++ b/types/BaseAdminUpgradeabilityProxyFactory.ts @@ -72,6 +72,10 @@ const _abi = [ name: "Upgraded", type: "event" }, + { + stateMutability: "payable", + type: "fallback" + }, { inputs: [], name: "admin", @@ -141,12 +145,8 @@ const _abi = [ outputs: [], stateMutability: "payable", type: "function" - }, - { - stateMutability: "payable", - type: "receive" } ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610908806100206000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100625780634f1ef286146100b35780635c60da1b1461014c5780638f283970146101a3578063f851a440146101f45761005d565b3661005d5761005b61024b565b005b600080fd5b34801561006e57600080fd5b506100b16004803603602081101561008557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610265565b005b61014a600480360360408110156100c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561010657600080fd5b82018360208201111561011857600080fd5b8035906020019184600183028401116401000000008311171561013a57600080fd5b90919293919293905050506102ba565b005b34801561015857600080fd5b50610161610390565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101af57600080fd5b506101f2600480360360208110156101c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e8565b005b34801561020057600080fd5b50610209610561565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102536105b9565b61026361025e61064f565b610680565b565b61026d6106a6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ae576102a9816106d7565b6102b7565b6102b661024b565b5b50565b6102c26106a6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610382576102fe836106d7565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610369576040519150601f19603f3d011682016040523d82523d6000602084013e61036e565b606091505b505090508061037c57600080fd5b5061038b565b61038a61024b565b5b505050565b600061039a6106a6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103dc576103d561064f565b90506103e5565b6103e461024b565b5b90565b6103f06106a6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561055557600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806108626036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104d26106a6565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161055081610726565b61055e565b61055d61024b565b5b50565b600061056b6106a6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156105ad576105a66106a6565b90506105b6565b6105b561024b565b5b90565b6105c16106a6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610645576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806108306032913960400191505060405180910390fd5b61064d610755565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e80600081146106a1573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b6106e081610757565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b565b610760816107e4565b6107b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610898603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561082657506000801b8214155b9250505091905056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220bcf7a9ee60dd93ba2095ea1f2c9d93ef295f42fdea1cdd54f83dddb8429a479164736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50610652806100206000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220153c3fcf73e6d2ff5abc19385f928b0ad6ca58f36558f457764b0ad8f1b590d964736f6c63430006080033"; diff --git a/types/BaseUpgradeabilityProxyFactory.ts b/types/BaseUpgradeabilityProxyFactory.ts index 26d7ed19..ea233c47 100644 --- a/types/BaseUpgradeabilityProxyFactory.ts +++ b/types/BaseUpgradeabilityProxyFactory.ts @@ -53,9 +53,9 @@ const _abi = [ }, { stateMutability: "payable", - type: "receive" + type: "fallback" } ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060b78061001f6000396000f3fe608060405236601057600e6015565b005b600080fd5b601b6029565b60276023602b565b605c565b565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114607c573d6000f35b3d6000fdfea26469706673582212205b9fe06218823c76111682e2b2f093d5f7713a33f64a2a9d36ab2e46371e031664736f6c63430006080033"; + "0x6080604052348015600f57600080fd5b50609e8061001e6000396000f3fe6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea2646970667358221220f39c60065bf5bc2b317031ab707b9f77fec3571f3c29e70ce25a3329a851e15664736f6c63430006080033"; diff --git a/types/ChainlinkProxyPriceProviderFactory.ts b/types/ChainlinkProxyPriceProviderFactory.ts index ecfd15a8..bdab5057 100644 --- a/types/ChainlinkProxyPriceProviderFactory.ts +++ b/types/ChainlinkProxyPriceProviderFactory.ts @@ -267,4 +267,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200163538038062001635833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000c6578082015181840152602081019050620000a9565b5050505090500160405260200180516040519392919084640100000000821115620000f057600080fd5b838201915060208201858111156200010757600080fd5b82518660208202830111640100000000821117156200012557600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200015e57808201518184015260208101905062000141565b505050509050016040526020018051906020019092919050505060006200018a6200025460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000239816200025c60201b60201c565b6200024b8383620002e360201b60201c565b505050620004a6565b600033905090565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb60405160405180910390a250565b80518251146200035b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f494e434f4e53495354454e545f504152414d535f4c454e47544800000000000081525060200191505060405180910390fd5b60008090505b8251811015620004a1578181815181106200037857fe5b6020026020010151600160008584815181106200039157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181815181106200041e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106200044957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3808060010191505062000361565b505050565b61117f80620004b66000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806392bf2be01161006657806392bf2be01461017a5780639d23d9f2146101fe578063abfd5310146102cc578063b3596f071461039a578063f2fde38b146103f257610093565b8063170aee73146100985780636210308c146100dc578063715018a6146101265780638da5cb5b14610130575b600080fd5b6100da600480360360208110156100ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610436565b005b6100e461050b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61012e610535565b005b6101386106bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101bc6004803603602081101561019057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102756004803603602081101561021457600080fd5b810190808035906020019064010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b909192939192939050505061074f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102b857808201518184015260208101905061029d565b505050509050019250505060405180910390f35b610398600480360360408110156102e257600080fd5b81019080803590602001906401000000008111156102ff57600080fd5b82018360208201111561031157600080fd5b8035906020019184602083028401116401000000008311171561033357600080fd5b90919293919293908035906020019064010000000081111561035457600080fd5b82018360208201111561036657600080fd5b8035906020019184602083028401116401000000008311171561038857600080fd5b9091929391929390505050610810565b005b6103dc600480360360208110156103b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061096b565b6040518082815260200191505060405180910390f35b6104346004803603602081101561040857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610caf565b005b61043e610ebc565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61050881610ec4565b50565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61053d610ebc565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060808383905067ffffffffffffffff8111801561076c57600080fd5b5060405190808252806020026020018201604052801561079b5781602001602082028036833780820191505090505b50905060008090505b84849050811015610805576107e08585838181106107be57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1661096b565b8282815181106107ec57fe5b60200260200101818152505080806001019150506107a4565b508091505092915050565b610818610ebc565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610965848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050610f4b565b50505050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109d8611107565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a1c57670de0b6b3a7640000915050610caa565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b3357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f07846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d6020811015610b1a57600080fd5b8101908080519060200190929190505050915050610caa565b60008173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7b57600080fd5b505afa158015610b8f573d6000803e3d6000fd5b505050506040513d6020811015610ba557600080fd5b810190808051906020019092919050505090506000811315610bcb578092505050610caa565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f07856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d6020811015610c9457600080fd5b8101908080519060200190929190505050925050505b919050565b610cb7610ebc565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610dfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806111246026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb60405160405180910390a250565b8051825114610fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f494e434f4e53495354454e545f504152414d535f4c454e47544800000000000081525060200191505060405180910390fd5b60008090505b825181101561110257818181518110610fdd57fe5b602002602001015160016000858481518110610ff557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081818151811061108157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106110ab57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a38080600101915050610fc8565b505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220472edb817ea27b8494ca73c279699eadeeb38ab67f452c7135049df4550b567864736f6c63430006080033"; + "0x60806040523480156200001157600080fd5b5060405162000e3a38038062000e3a833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b5050505090500160405260200180516040519392919084640100000000821115620000e557600080fd5b908301906020820185811115620000fb57600080fd5b82518660208202830111640100000000821117156200011957600080fd5b82525081516020918201928201910280838360005b83811015620001485781810151838201526020016200012e565b50505050919091016040525060200151915060009050620001716001600160e01b03620001ed16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001cf816001600160e01b03620001f116565b620001e483836001600160e01b036200023b16565b50505062000387565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b805182511462000292576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b82518110156200038257818181518110620002ac57fe5b602002602001015160016000858481518110620002c557fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106200031e57fe5b60200260200101516001600160a01b03168382815181106200033c57fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a360010162000295565b505050565b610aa380620003976000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806392bf2be01161006657806392bf2be0146100f45780639d23d9f21461011a578063abfd5310146101da578063b3596f071461029c578063f2fde38b146102d457610093565b8063170aee73146100985780636210308c146100c0578063715018a6146100e45780638da5cb5b146100ec575b600080fd5b6100be600480360360208110156100ae57600080fd5b50356001600160a01b03166102fa565b005b6100c861035e565b604080516001600160a01b039092168252519081900360200190f35b6100be61036d565b6100c861040f565b6100c86004803603602081101561010a57600080fd5b50356001600160a01b031661041e565b61018a6004803603602081101561013057600080fd5b81019060208101813564010000000081111561014b57600080fd5b82018360208201111561015d57600080fd5b8035906020019184602083028401116401000000008311171561017f57600080fd5b50909250905061043f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101c65781810151838201526020016101ae565b505050509050019250505060405180910390f35b6100be600480360360408110156101f057600080fd5b81019060208101813564010000000081111561020b57600080fd5b82018360208201111561021d57600080fd5b8035906020019184602083028401116401000000008311171561023f57600080fd5b91939092909160208101903564010000000081111561025d57600080fd5b82018360208201111561026f57600080fd5b8035906020019184602083028401116401000000008311171561029157600080fd5b5090925090506104dc565b6102c2600480360360208110156102b257600080fd5b50356001600160a01b03166105a7565b60408051918252519081900360200190f35b6100be600480360360208110156102ea57600080fd5b50356001600160a01b0316610784565b61030261087c565b6000546001600160a01b03908116911614610352576040805162461bcd60e51b81526020600482018190526024820152600080516020610a4e833981519152604482015290519081900360640190fd5b61035b81610880565b50565b6002546001600160a01b031690565b61037561087c565b6000546001600160a01b039081169116146103c5576040805162461bcd60e51b81526020600482018190526024820152600080516020610a4e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff8111801561045957600080fd5b50604051908082528060200260200182016040528015610483578160200160208202803683370190505b50905060005b838110156104d4576104b58585838181106104a057fe5b905060200201356001600160a01b03166105a7565b8282815181106104c157fe5b6020908102919091010152600101610489565b509392505050565b6104e461087c565b6000546001600160a01b03908116911614610534576040805162461bcd60e51b81526020600482018190526024820152600080516020610a4e833981519152604482015290519081900360640190fd5b6105a1848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208088028281018201909352878252909350879250869182918501908490808284376000920191909152506108ca92505050565b50505050565b6001600160a01b038082166000908152600160205260408120549091166105cc610a0f565b6001600160a01b0316836001600160a01b031614156105f657670de0b6b3a764000091505061043a565b6001600160a01b038116610686576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561065157600080fd5b505afa158015610665573d6000803e3d6000fd5b505050506040513d602081101561067b57600080fd5b5051915061043a9050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c157600080fd5b505afa1580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b50519050600081131561070157915061043a9050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561074e57600080fd5b505afa158015610762573d6000803e3d6000fd5b505050506040513d602081101561077857600080fd5b5051925061043a915050565b61078c61087c565b6000546001600160a01b039081169116146107dc576040805162461bcd60e51b81526020600482018190526024820152600080516020610a4e833981519152604482015290519081900360640190fd5b6001600160a01b0381166108215760405162461bcd60e51b8152600401808060200182810382526026815260200180610a286026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114610920576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a0a5781818151811061093857fe5b60200260200101516001600085848151811061095057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106109a857fe5b60200260200101516001600160a01b03168382815181106109c557fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101610923565b505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220459526b5cb5c3612c5edea57a3be504809db7272306e254e532a1ced0759e4ea64736f6c63430006080033"; diff --git a/types/DefaultReserveInterestRateStrategyFactory.ts b/types/DefaultReserveInterestRateStrategyFactory.ts index fcfd8319..0d45b007 100644 --- a/types/DefaultReserveInterestRateStrategyFactory.ts +++ b/types/DefaultReserveInterestRateStrategyFactory.ts @@ -350,4 +350,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610dce380380610dce833981810160405260e081101561003357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846001819055508360028190555082600381905550816004819055508060058190555086600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050610c948061013a6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637b832f5811610097578063ccab01a311610066578063ccab01a3146102e0578063cd3293de146102fe578063d5cd739114610348578063f420240914610366576100f5565b80637b832f581461023c578063a15f30ac1461025a578063b258954414610278578063c72c4d1014610296576100f5565b806317319873116100d3578063173198731461015457806334762ca51461017257806357e37af01461019057806365614f811461021e576100f5565b80630b3429a2146100fa5780630bdf953f1461011857806314e32da414610136575b600080fd5b610102610384565b6040518082815260200191505060405180910390f35b61012061038e565b6040518082815260200191505060405180910390f35b61013e610394565b6040518082815260200191505060405180910390f35b61015c61039e565b6040518082815260200191505060405180910390f35b61017a6103ad565b6040518082815260200191505060405180910390f35b6101fa600480360360a08110156101a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506103b7565b60405180848152602001838152602001828152602001935050505060405180910390f35b610226610705565b6040518082815260200191505060405180910390f35b61024461070b565b6040518082815260200191505060405180910390f35b610262610711565b6040518082815260200191505060405180910390f35b610280610721565b6040518082815260200191505060405180910390f35b61029e610727565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102e861074c565b6040518082815260200191505060405180910390f35b610306610752565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610350610778565b6040518082815260200191505060405180910390f35b61036e610782565b6040518082815260200191505060405180910390f35b6000600254905090565b60045481565b6000600554905090565b6aa56fa5b99019a5c800000081565b6000600154905090565b6000806000806103d0868861078c90919063ffffffff16565b9050600080821480156103e35750600089145b6104115761040c6103fd838b61078c90919063ffffffff16565b8361081490919063ffffffff16565b610414565b60005b90506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561047d57600080fd5b505afa158015610491573d6000803e3d6000fd5b505050506040513d60208110156104a757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663bb85c0bb8b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d602081101561055e57600080fd5b810190808051906020019092919050505093506b0295be96e6406697200000008111156106475760006105c36aa56fa5b99019a5c80000006105b56b0295be96e6406697200000008561087090919063ffffffff16565b61081490919063ffffffff16565b90506106006105dd826005546108ba90919063ffffffff16565b6105f26004548861078c90919063ffffffff16565b61078c90919063ffffffff16565b945061063f61061a826003546108ba90919063ffffffff16565b61063160025460015461078c90919063ffffffff16565b61078c90919063ffffffff16565b9350506106d8565b61068c61067d61066c6b0295be96e6406697200000008461081490919063ffffffff16565b6004546108ba90919063ffffffff16565b8561078c90919063ffffffff16565b93506106d56106c46002546106b66b0295be96e6406697200000008561081490919063ffffffff16565b6108ba90919063ffffffff16565b60015461078c90919063ffffffff16565b92505b6106f6816106e88a8a878b61091d565b6108ba90919063ffffffff16565b94505050955095509592505050565b60035481565b60025481565b6b0295be96e64066972000000081565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454905090565b6000600354905090565b60008082840190508381101561080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806002838161082157fe5b0490506108678361085961084a6b033b2e3c9fd0803ce8000000886109c790919063ffffffff16565b8461078c90919063ffffffff16565b610a4d90919063ffffffff16565b91505092915050565b60006108b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a97565b905092915050565b60006109156b033b2e3c9fd0803ce80000006109076108e285876109c790919063ffffffff16565b60026b033b2e3c9fd0803ce8000000816108f857fe5b0461078c90919063ffffffff16565b610a4d90919063ffffffff16565b905092915050565b600080610933858761078c90919063ffffffff16565b905060008114156109485760009150506109bf565b60006109658561095788610b57565b6108ba90919063ffffffff16565b90506000610984856109768a610b57565b6108ba90919063ffffffff16565b905060006109b561099485610b57565b6109a7848661078c90919063ffffffff16565b61081490919063ffffffff16565b9050809450505050505b949350505050565b6000808314156109da5760009050610a47565b60008284029050828482816109eb57fe5b0414610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610c3e6021913960400191505060405180910390fd5b809150505b92915050565b6000610a8f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b77565b905092915050565b6000838311158290610b44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b09578082015181840152602081019050610aee565b50505050905090810190601f168015610b365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000610b70633b9aca00836109c790919063ffffffff16565b9050919050565b60008083118290610c23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610be8578082015181840152602081019050610bcd565b50505050905090810190601f168015610c155780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c2f57fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122051b1aa5f797a4c9bfdfac84cc76058f103fe35d1c913128f7d3bcdd9b2785a5664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051610958380380610958833981810160405260e081101561003357600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b039687166001600160a01b031991821617909155600194909455600292909255600355600494909455600593909355600680549190921692169190911790556108aa806100ae6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637b832f5811610097578063ccab01a311610066578063ccab01a3146101d4578063cd3293de146101dc578063d5cd7391146101e4578063f4202409146101ec576100f5565b80637b832f5814610198578063a15f30ac146101a0578063b2589544146101a8578063c72c4d10146101b0576100f5565b806317319873116100d3578063173198731461012457806334762ca51461012c57806357e37af01461013457806365614f8114610190576100f5565b80630b3429a2146100fa5780630bdf953f1461011457806314e32da41461011c575b600080fd5b6101026101f4565b60408051918252519081900360200190f35b6101026101fa565b610102610200565b610102610206565b610102610215565b610172600480360360a081101561014a57600080fd5b506001600160a01b03813516906020810135906040810135906060810135906080013561021b565b60408051938452602084019290925282820152519081900360600190f35b6101026104c2565b6101026104c8565b6101026104ce565b6101026104de565b6101b86104e4565b604080516001600160a01b039092168252519081900360200190f35b6101026104f3565b6101b86104f9565b610102610508565b61010261050e565b60025490565b60045481565b60055490565b6aa56fa5b99019a5c800000081565b60015490565b6000808080610230878763ffffffff61051416565b9050600081158015610240575088155b610269576102646102578a8463ffffffff61051416565b839063ffffffff61057716565b61026c565b60005b90506000809054906101000a90046001600160a01b03166001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102bb57600080fd5b505afa1580156102cf573d6000803e3d6000fd5b505050506040513d60208110156102e557600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b15801561033157600080fd5b505afa158015610345573d6000803e3d6000fd5b505050506040513d602081101561035b57600080fd5b505193506b0295be96e64066972000000081111561041d5760006103ac6aa56fa5b99019a5c80000006103a0846b0295be96e64066972000000063ffffffff6105bb16565b9063ffffffff61057716565b90506103e66103c6826005546105fd90919063ffffffff16565b6004546103da90889063ffffffff61051416565b9063ffffffff61051416565b9450610415610400826003546105fd90919063ffffffff16565b6002546001546103da9163ffffffff61051416565b9350506104a3565b61045b61044e61043f836b0295be96e64066972000000063ffffffff61057716565b6004549063ffffffff6105fd16565b859063ffffffff61051416565b93506104a06104916002546104856b0295be96e6406697200000008561057790919063ffffffff16565b9063ffffffff6105fd16565b6001549063ffffffff61051416565b92505b6104b3816104858a8a878b610635565b94505050955095509592505050565b60035481565b60025481565b6b0295be96e64066972000000081565b60015481565b6000546001600160a01b031681565b60055481565b6006546001600160a01b031681565b60045490565b60035490565b60008282018381101561056e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000600282046105b3836105a761059a876b033b2e3c9fd0803ce80000006106a6565b849063ffffffff61051416565b9063ffffffff6106ff16565b949350505050565b600061056e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610741565b600061056e6b033b2e3c9fd0803ce80000006105a7610622868663ffffffff6106a616565b6b019d971e4fe8401e7400000090610514565b600080610648868663ffffffff61051416565b9050806106595760009150506105b3565b600061066885610485886107d8565b90506000610679856104858a6107d8565b90506000610699610689856107d8565b6103a0858563ffffffff61051416565b9998505050505050505050565b6000826106b557506000610571565b828202828482816106c257fe5b041461056e5760405162461bcd60e51b81526004018080602001828103825260218152602001806108546021913960400191505060405180910390fd5b600061056e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506107ee565b600081848411156107d05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561079557818101518382015260200161077d565b50505050905090810190601f1680156107c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061057182633b9aca0063ffffffff6106a616565b6000818361083d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561079557818101518382015260200161077d565b50600083858161084957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220d4288bbac61541f092844b88a6a4e85a2872ba4fd1683cdbbc59f0b1f660020964736f6c63430006080033"; diff --git a/types/Erc20Factory.ts b/types/Erc20Factory.ts index 97048599..9e3de82e 100644 --- a/types/Erc20Factory.ts +++ b/types/Erc20Factory.ts @@ -328,4 +328,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620013bb380380620013bb833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040525050508160039080519060200190620001cd9291906200020b565b508060049080519060200190620001e69291906200020b565b506012600560006101000a81548160ff021916908360ff1602179055505050620002ba565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b620002b791905b80821115620002b357600081600090555060010162000299565b5090565b90565b6110f180620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a6aa56672ff7d704de3780a7c086364b968f9ade39fd86612d01f6207546d9f464736f6c63430006080033"; + "0x60806040523480156200001157600080fd5b5060405162000ca538038062000ca5833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff191660121790555062000285565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022357805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025357825182559160200191906001019062000236565b506200026192915062000265565b5090565b6200028291905b808211156200026157600081556001016200026c565b90565b610a1080620002956000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209a1ab437aa0c21b2f644a199c6c9ea57f0024313c4c6fb9717fe7e9736b4d4ac64736f6c63430006080033"; diff --git a/types/ExampleFactory.ts b/types/ExampleFactory.ts index 55cbc0f4..14abe647 100644 --- a/types/ExampleFactory.ts +++ b/types/ExampleFactory.ts @@ -68,4 +68,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50600560008190555060b4806100276000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80631aadff81146037578063f8a8fd6d146053575b600080fd5b603d606f565b6040518082815260200191505060405180910390f35b60596075565b6040518082815260200191505060405180910390f35b60005481565b6000805490509056fea264697066735822122057a64b654e079499c1bcb7323ed02df7274732301ad598f3679f40351bdb288464736f6c63430006080033"; + "0x6080604052348015600f57600080fd5b5060056000556097806100236000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80631aadff81146037578063f8a8fd6d14604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005481565b6000549056fea2646970667358221220db729e656432d2a44942aae506cff90eea05978605f6847ecdf717665d7a04e664736f6c63430006080033"; diff --git a/types/FeeProviderFactory.ts b/types/FeeProviderFactory.ts index ad1e49c3..621098c4 100644 --- a/types/FeeProviderFactory.ts +++ b/types/FeeProviderFactory.ts @@ -113,4 +113,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040526000805534801561001457600080fd5b506105a6806100246000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80639403ed3a1461005c578063b0d73d4e1461007a578063c211f9a414610098578063c4d66de8146100b6578063e563a7d0146100fa575b600080fd5b61006461015c565b6040518082815260200191505060405180910390f35b610082610162565b6040518082815260200191505060405180910390f35b6100a0610167565b6040518082815260200191505060405180910390f35b6100f8600480360360208110156100cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610171565b005b6101466004803603604081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061026f565b6040518082815260200191505060405180910390f35b60345481565b600181565b6000603454905090565b600061017b61028e565b9050600160009054906101000a900460ff168061019c575061019b610297565b5b806101a8575060005481115b6101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610543602e913960400191505060405180910390fd5b6000600160009054906101000a900460ff16159050801561023a5760018060006101000a81548160ff021916908315150217905550816000819055505b6608e1bc9bf04000603481905550801561026a576000600160006101000a81548160ff0219169083151502179055505b505050565b6000610286603454836102a890919063ffffffff16565b905092915050565b60006001905090565b600080303b90506000811491505090565b60006102fb670de0b6b3a76400006102ed6102cc858761030390919063ffffffff16565b6002670de0b6b3a7640000816102de57fe5b0461038990919063ffffffff16565b61041190919063ffffffff16565b905092915050565b6000808314156103165760009050610383565b600082840290508284828161032757fe5b041461037e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806105226021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015610407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061045383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061045b565b905092915050565b60008083118290610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156104cc5780820151818401526020810190506104b1565b50505050905090810190601f1680156104f95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161051357fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122089bcac65a55f6d08c407c046f359ea89e8c8a9faef3d94cacf55fb22990f71fb64736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b50610411806100246000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80639403ed3a1461005c578063b0d73d4e14610076578063c211f9a41461007e578063c4d66de814610086578063e563a7d0146100ae575b600080fd5b6100646100da565b60408051918252519081900360200190f35b6100646100e0565b6100646100e5565b6100ac6004803603602081101561009c57600080fd5b50356001600160a01b03166100eb565b005b610064600480360360408110156100c457600080fd5b506001600160a01b038135169060200135610193565b60345481565b600181565b60345490565b60006100f56101b3565b60015490915060ff168061010c575061010c6101b8565b80610118575060005481115b6101535760405162461bcd60e51b815260040180806020018281038252602e8152602001806103ae602e913960400191505060405180910390fd5b60015460ff16158015610172576001805460ff19168117905560008290555b6608e1bc9bf04000603455801561018e576001805460ff191690555b505050565b60006101aa603454836101be90919063ffffffff16565b90505b92915050565b600190565b303b1590565b60006101aa670de0b6b3a76400006101ee6101df868663ffffffff6101fa16565b6706f05b59d3b2000090610253565b9063ffffffff6102ad16565b600082610209575060006101ad565b8282028284828161021657fe5b04146101aa5760405162461bcd60e51b815260040180806020018281038252602181526020018061038d6021913960400191505060405180910390fd5b6000828201838110156101aa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006101aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836103765760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561033b578181015183820152602001610323565b50505050905090810190601f1680156103685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161038257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220b6d286d1f0b82789105155b663f2705ed827df2cb1cad4c6923082f530bb3d2264736f6c63430006080033"; diff --git a/types/Ierc20Burnable.d.ts b/types/Ierc20Burnable.d.ts new file mode 100644 index 00000000..da2a827f --- /dev/null +++ b/types/Ierc20Burnable.d.ts @@ -0,0 +1,74 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, ContractTransaction, EventFilter, Signer } from "ethers"; +import { Listener, Provider } from "ethers/providers"; +import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils"; +import { + TransactionOverrides, + TypedEventDescription, + TypedFunctionDescription +} from "."; + +interface Ierc20BurnableInterface extends Interface { + functions: { + burn: TypedFunctionDescription<{ + encode([amount]: [BigNumberish]): string; + }>; + + burnFrom: TypedFunctionDescription<{ + encode([account, amount]: [string, BigNumberish]): string; + }>; + }; + + events: {}; +} + +export class Ierc20Burnable extends Contract { + connect(signerOrProvider: Signer | Provider | string): Ierc20Burnable; + attach(addressOrName: string): Ierc20Burnable; + deployed(): Promise; + + on(event: EventFilter | string, listener: Listener): Ierc20Burnable; + once(event: EventFilter | string, listener: Listener): Ierc20Burnable; + addListener( + eventName: EventFilter | string, + listener: Listener + ): Ierc20Burnable; + removeAllListeners(eventName: EventFilter | string): Ierc20Burnable; + removeListener(eventName: any, listener: Listener): Ierc20Burnable; + + interface: Ierc20BurnableInterface; + + functions: { + burn( + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + burnFrom( + account: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + }; + + burn( + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + burnFrom( + account: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + filters: {}; + + estimate: { + burn(amount: BigNumberish): Promise; + + burnFrom(account: string, amount: BigNumberish): Promise; + }; +} diff --git a/types/Ierc20BurnableFactory.ts b/types/Ierc20BurnableFactory.ts new file mode 100644 index 00000000..68564b55 --- /dev/null +++ b/types/Ierc20BurnableFactory.ts @@ -0,0 +1,50 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, Signer } from "ethers"; +import { Provider } from "ethers/providers"; + +import { Ierc20Burnable } from "./Ierc20Burnable"; + +export class Ierc20BurnableFactory { + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Ierc20Burnable { + return new Contract(address, _abi, signerOrProvider) as Ierc20Burnable; + } +} + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "burnFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +]; diff --git a/types/Ierc20DetailedBytesFactory.ts b/types/Ierc20DetailedBytesFactory.ts index 6a7217a9..76789a13 100644 --- a/types/Ierc20DetailedBytesFactory.ts +++ b/types/Ierc20DetailedBytesFactory.ts @@ -76,4 +76,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060dd8061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806306fdde03146041578063313ce56714605d57806395d89b41146079575b600080fd5b60476095565b6040518082815260200191505060405180910390f35b6063609b565b6040518082815260200191505060405180910390f35b607f60a1565b6040518082815260200191505060405180910390f35b60005481565b60025481565b6001548156fea264697066735822122012181cc1edfa2cb5dc11110436ba200114c6189dd7b22301a6738f7f6169359264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060ad8061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c806306fdde03146041578063313ce56714605957806395d89b4114605f575b600080fd5b60476065565b60408051918252519081900360200190f35b6047606b565b60476071565b60005481565b60025481565b6001548156fea26469706673582212203768796577a99ad3a548ada1f422b9a27c862840dd4342467451416181f264f564736f6c63430006080033"; diff --git a/types/Ierc20Mintable.d.ts b/types/Ierc20Mintable.d.ts new file mode 100644 index 00000000..fc36105e --- /dev/null +++ b/types/Ierc20Mintable.d.ts @@ -0,0 +1,54 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, ContractTransaction, EventFilter, Signer } from "ethers"; +import { Listener, Provider } from "ethers/providers"; +import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils"; +import { + TransactionOverrides, + TypedEventDescription, + TypedFunctionDescription +} from "."; + +interface Ierc20MintableInterface extends Interface { + functions: { + mint: TypedFunctionDescription<{ encode([value]: [BigNumberish]): string }>; + }; + + events: {}; +} + +export class Ierc20Mintable extends Contract { + connect(signerOrProvider: Signer | Provider | string): Ierc20Mintable; + attach(addressOrName: string): Ierc20Mintable; + deployed(): Promise; + + on(event: EventFilter | string, listener: Listener): Ierc20Mintable; + once(event: EventFilter | string, listener: Listener): Ierc20Mintable; + addListener( + eventName: EventFilter | string, + listener: Listener + ): Ierc20Mintable; + removeAllListeners(eventName: EventFilter | string): Ierc20Mintable; + removeListener(eventName: any, listener: Listener): Ierc20Mintable; + + interface: Ierc20MintableInterface; + + functions: { + mint( + value: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + }; + + mint( + value: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + filters: {}; + + estimate: { + mint(value: BigNumberish): Promise; + }; +} diff --git a/types/Ierc20MintableBurnable.d.ts b/types/Ierc20MintableBurnable.d.ts new file mode 100644 index 00000000..8660b903 --- /dev/null +++ b/types/Ierc20MintableBurnable.d.ts @@ -0,0 +1,204 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, ContractTransaction, EventFilter, Signer } from "ethers"; +import { Listener, Provider } from "ethers/providers"; +import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils"; +import { + TransactionOverrides, + TypedEventDescription, + TypedFunctionDescription +} from "."; + +interface Ierc20MintableBurnableInterface extends Interface { + functions: { + allowance: TypedFunctionDescription<{ + encode([owner, spender]: [string, string]): string; + }>; + + approve: TypedFunctionDescription<{ + encode([spender, amount]: [string, BigNumberish]): string; + }>; + + balanceOf: TypedFunctionDescription<{ + encode([account]: [string]): string; + }>; + + burn: TypedFunctionDescription<{ + encode([amount]: [BigNumberish]): string; + }>; + + burnFrom: TypedFunctionDescription<{ + encode([account, amount]: [string, BigNumberish]): string; + }>; + + mint: TypedFunctionDescription<{ encode([value]: [BigNumberish]): string }>; + + totalSupply: TypedFunctionDescription<{ encode([]: []): string }>; + + transfer: TypedFunctionDescription<{ + encode([recipient, amount]: [string, BigNumberish]): string; + }>; + + transferFrom: TypedFunctionDescription<{ + encode([sender, recipient, amount]: [ + string, + string, + BigNumberish + ]): string; + }>; + }; + + events: { + Approval: TypedEventDescription<{ + encodeTopics([owner, spender, value]: [ + string | null, + string | null, + null + ]): string[]; + }>; + + Transfer: TypedEventDescription<{ + encodeTopics([from, to, value]: [ + string | null, + string | null, + null + ]): string[]; + }>; + }; +} + +export class Ierc20MintableBurnable extends Contract { + connect(signerOrProvider: Signer | Provider | string): Ierc20MintableBurnable; + attach(addressOrName: string): Ierc20MintableBurnable; + deployed(): Promise; + + on(event: EventFilter | string, listener: Listener): Ierc20MintableBurnable; + once(event: EventFilter | string, listener: Listener): Ierc20MintableBurnable; + addListener( + eventName: EventFilter | string, + listener: Listener + ): Ierc20MintableBurnable; + removeAllListeners(eventName: EventFilter | string): Ierc20MintableBurnable; + removeListener(eventName: any, listener: Listener): Ierc20MintableBurnable; + + interface: Ierc20MintableBurnableInterface; + + functions: { + allowance(owner: string, spender: string): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + balanceOf(account: string): Promise; + + burn( + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + burnFrom( + account: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + mint( + value: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + totalSupply(): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + }; + + allowance(owner: string, spender: string): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + balanceOf(account: string): Promise; + + burn( + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + burnFrom( + account: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + mint( + value: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + totalSupply(): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: TransactionOverrides + ): Promise; + + filters: { + Approval( + owner: string | null, + spender: string | null, + value: null + ): EventFilter; + + Transfer(from: string | null, to: string | null, value: null): EventFilter; + }; + + estimate: { + allowance(owner: string, spender: string): Promise; + + approve(spender: string, amount: BigNumberish): Promise; + + balanceOf(account: string): Promise; + + burn(amount: BigNumberish): Promise; + + burnFrom(account: string, amount: BigNumberish): Promise; + + mint(value: BigNumberish): Promise; + + totalSupply(): Promise; + + transfer(recipient: string, amount: BigNumberish): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish + ): Promise; + }; +} diff --git a/types/Ierc20MintableBurnableFactory.ts b/types/Ierc20MintableBurnableFactory.ts new file mode 100644 index 00000000..57bb0afc --- /dev/null +++ b/types/Ierc20MintableBurnableFactory.ts @@ -0,0 +1,250 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, Signer } from "ethers"; +import { Provider } from "ethers/providers"; + +import { Ierc20MintableBurnable } from "./Ierc20MintableBurnable"; + +export class Ierc20MintableBurnableFactory { + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Ierc20MintableBurnable { + return new Contract( + address, + _abi, + signerOrProvider + ) as Ierc20MintableBurnable; + } +} + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "Approval", + type: "event" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address" + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address" + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "Transfer", + type: "event" + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address" + }, + { + internalType: "address", + name: "spender", + type: "address" + } + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + } + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "burnFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address" + }, + { + internalType: "address", + name: "recipient", + type: "address" + }, + { + internalType: "uint256", + name: "amount", + type: "uint256" + } + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool" + } + ], + stateMutability: "nonpayable", + type: "function" + } +]; diff --git a/types/Ierc20MintableFactory.ts b/types/Ierc20MintableFactory.ts new file mode 100644 index 00000000..0ea3964f --- /dev/null +++ b/types/Ierc20MintableFactory.ts @@ -0,0 +1,32 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, Signer } from "ethers"; +import { Provider } from "ethers/providers"; + +import { Ierc20Mintable } from "./Ierc20Mintable"; + +export class Ierc20MintableFactory { + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Ierc20Mintable { + return new Contract(address, _abi, signerOrProvider) as Ierc20Mintable; + } +} + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256" + } + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function" + } +]; diff --git a/types/InitializableAdminUpgradeabilityProxyFactory.ts b/types/InitializableAdminUpgradeabilityProxyFactory.ts index 97332b17..27a2c81f 100644 --- a/types/InitializableAdminUpgradeabilityProxyFactory.ts +++ b/types/InitializableAdminUpgradeabilityProxyFactory.ts @@ -76,6 +76,10 @@ const _abi = [ name: "Upgraded", type: "event" }, + { + stateMutability: "payable", + type: "fallback" + }, { inputs: [], name: "admin", @@ -186,12 +190,8 @@ const _abi = [ outputs: [], stateMutability: "payable", type: "function" - }, - { - stateMutability: "payable", - type: "receive" } ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610d53806100206000396000f3fe6080604052600436106100745760003560e01c80638f2839701161004e5780638f283970146101c9578063cf7a1d771461021a578063d1f5789414610315578063f851a440146103f057610083565b80633659cfe6146100885780634f1ef286146100d95780635c60da1b1461017257610083565b3661008357610081610447565b005b600080fd5b34801561009457600080fd5b506100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610461565b005b610170600480360360408110156100ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012c57600080fd5b82018360208201111561013e57600080fd5b8035906020019184600183028401116401000000008311171561016057600080fd5b90919293919293905050506104b6565b005b34801561017e57600080fd5b5061018761058c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d557600080fd5b50610218600480360360208110156101ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105e4565b005b6103136004803603606081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111640100000000831117156102c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061075d565b005b6103ee6004803603604081101561032b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061081f565b005b3480156103fc57600080fd5b506104056109a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61044f6109fa565b61045f61045a610a04565b610a35565b565b610469610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104aa576104a581610a8c565b6104b3565b6104b2610447565b5b50565b6104be610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561057e576104fa83610a8c565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b505090508061057857600080fd5b50610587565b610586610447565b5b505050565b6000610596610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156105d8576105d1610a04565b90506105e1565b6105e0610447565b5b90565b6105ec610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561075157600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180610cad6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6106ce610a5b565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161074c81610adb565b61075a565b610759610447565b5b50565b600073ffffffffffffffffffffffffffffffffffffffff1661077d610a04565b73ffffffffffffffffffffffffffffffffffffffff161461079d57600080fd5b6107a7838261081f565b600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b1461081157fe5b61081a82610adb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff1661083f610a04565b73ffffffffffffffffffffffffffffffffffffffff161461085f57600080fd5b600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b146108c957fe5b6108d282610b0a565b60008151111561099e5760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106109295780518252602082019150602081019050602083039250610906565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610989576040519150601f19603f3d011682016040523d82523d6000602084013e61098e565b606091505b505090508061099c57600080fd5b505b5050565b60006109ac610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156109ee576109e7610a5b565b90506109f7565b6109f6610447565b5b90565b610a02610b97565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610a56573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b610a9581610b0a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b610b1381610c2d565b610b68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610ce3603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b610b9f610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180610c7b6032913960400191505060405180910390fd5b610c2b610c78565b565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610c6f57506000801b8214155b92505050919050565b56fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220a12941e9bce1bde36f44bb5c03c27af62469cfa6958fcac106926a5a40dbe4d464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506109bb806100206000396000f3fe6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610599945050505050565b34801561031257600080fd5b506101426106d9565b610323610704565b61033361032e61070c565b610731565b565b61033d610755565b6001600160a01b0316336001600160a01b031614156103645761035f8161077a565b61036c565b61036c61031b565b50565b610377610755565b6001600160a01b0316336001600160a01b0316141561040f576103998361077a565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b6000610426610755565b6001600160a01b0316336001600160a01b0316141561044e5761044761070c565b9050610456565b61045661031b565b90565b610461610755565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b81526004018080602001828103825260368152602001806109156036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e8610755565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f816107ba565b600061051d61070c565b6001600160a01b03161461053057600080fd5b61053a8382610599565b604080517232b4b8189c9b1b97383937bc3c9730b236b4b760691b815290519081900360130190207fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036000199091011461059057fe5b610417826107ba565b60006105a361070c565b6001600160a01b0316146105b657600080fd5b604080517f656970313936372e70726f78792e696d706c656d656e746174696f6e000000008152905190819003601c0190207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6000199091011461061657fe5b61061f826107de565b8051156106d5576000826001600160a01b0316826040518082805190602001908083835b602083106106625780518252601f199092019160209182019101610643565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146106c2576040519150601f19603f3d011682016040523d82523d6000602084013e6106c7565b606091505b505090508061041757600080fd5b5050565b60006106e3610755565b6001600160a01b0316336001600160a01b0316141561044e57610447610755565b610333610846565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610750573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b610783816107de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6107e7816108a6565b6108225760405162461bcd60e51b815260040180806020018281038252603b81526020018061094b603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61084e610755565b6001600160a01b0316336001600160a01b0316141561089e5760405162461bcd60e51b81526004018080602001828103825260328152602001806108e36032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906108da57508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122089bc49272b806ab0537b1c878ddb046d426bdcafa284bea5e049aa9c3a94bdd164736f6c63430006080033"; diff --git a/types/InitializableUpgradeabilityProxyFactory.ts b/types/InitializableUpgradeabilityProxyFactory.ts index f3bea026..060825f2 100644 --- a/types/InitializableUpgradeabilityProxyFactory.ts +++ b/types/InitializableUpgradeabilityProxyFactory.ts @@ -53,6 +53,10 @@ const _abi = [ name: "Upgraded", type: "event" }, + { + stateMutability: "payable", + type: "fallback" + }, { inputs: [ { @@ -70,12 +74,8 @@ const _abi = [ outputs: [], stateMutability: "payable", type: "function" - }, - { - stateMutability: "payable", - type: "receive" } ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610450806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003657610031565b366100315761002f610111565b005b600080fd5b61010f6004803603604081101561004c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561008957600080fd5b82018360208201111561009b57600080fd5b803590602001918460018302840111640100000000831117156100bd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061012b565b005b6101196102ae565b6101296101246102b0565b6102e1565b565b600073ffffffffffffffffffffffffffffffffffffffff1661014b6102b0565b73ffffffffffffffffffffffffffffffffffffffff161461016b57600080fd5b600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b146101d557fe5b6101de82610307565b6000815111156102aa5760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106102355780518252602082019150602081019050602083039250610212565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610295576040519150601f19603f3d011682016040523d82523d6000602084013e61029a565b606091505b50509050806102a857600080fd5b505b5050565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610302573d6000f35b3d6000fd5b61031081610394565b610365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806103e0603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156103d657506000801b8214155b9250505091905056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220ec5e8c1744cf082a11e2b69560ecd27aab52ab8ed1a234f721fc2b20fc028b1264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50610398806100206000396000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f161023a565b61025f565b565b600061010261023a565b6001600160a01b03161461011557600080fd5b604080517f656970313936372e70726f78792e696d706c656d656e746174696f6e000000008152905190819003601c0190207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6000199091011461017557fe5b61017e82610283565b805115610236576000826001600160a01b0316826040518082805190602001908083835b602083106101c15780518252601f1990920191602091820191016101a2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b505090508061023457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561027e573d6000f35b3d6000fd5b61028c816102eb565b6102c75760405162461bcd60e51b815260040180806020018281038252603b815260200180610328603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061031f57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122039ea210f3068bef90dab509c4cdfa0a898049566f198f6e2518a306b66f48d6464736f6c63430006080033"; diff --git a/types/LendingPoolAddressesProviderFactory.ts b/types/LendingPoolAddressesProviderFactory.ts index 5c7d56e1..092c59af 100644 --- a/types/LendingPoolAddressesProviderFactory.ts +++ b/types/LendingPoolAddressesProviderFactory.ts @@ -575,4 +575,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b612e41806100db6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635aef021f116100de578063bfedc10311610097578063ee89129611610071578063ee89129614610791578063f2fde38b146107db578063fbeefc3c1461081f578063fca513a8146108695761018e565b8063bfedc103146106bf578063c12542df14610703578063ed6ff760146107475761018e565b80635aef021f14610555578063715018a614610599578063820d1274146105a357806385c858b1146105e75780638da5cb5b14610631578063a5eface21461067b5761018e565b806333128d591161014b57806340fdcadc1161012557806340fdcadc1461043f57806344ce375b14610483578063530e784f146104c75780635834eb9a1461050b5761018e565b806333128d59146103675780633618abba146103b157806338280e6b146103fb5761018e565b80630261bf8b1461019357806304061d8e146101dd5780631c8272041461022757806321f8a7211461026b5780632a62c636146102d95780632f58b80d1461031d575b600080fd5b61019b6108b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101e56108e3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102696004803603602081101561023d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610913565b005b6102976004803603602081101561028157600080fd5b8101908080359060200190929190505050610a4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61031b600480360360208110156102ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a89565b005b610325610bc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036f610bf2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b9610c22565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c52565b005b6104816004803603602081101561045557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d8b565b005b6104c56004803603602081101561049957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec4565b005b610509600480360360208110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ffd565b005b610513611136565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105976004803603602081101561056b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611166565b005b6105a161129f565b005b6105e5600480360360208110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611427565b005b6105ef611560565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610639611590565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106bd6004803603602081101561069157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b9565b005b610701600480360360208110156106d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116f2565b005b6107456004803603602081101561071957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182b565b005b61074f611964565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610799611999565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61081d600480360360208110156107f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c9565b005b610827611bd6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610871611c06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006108de7f4c454e44494e475f504f4f4c0000000000000000000000000000000000000000610a4c565b905090565b600061090e7f504152414d45544552535f50524f564944455200000000000000000000000000610a4c565b905090565b61091b611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610a067f4c454e44494e475f504f4f4c5f434f524500000000000000000000000000000082611c3e565b8073ffffffffffffffffffffffffffffffffffffffff167f71c226bb2879778ca1298196bf7cc1256baee9d05b496c31ee627d35a471b5b760405160405180910390a250565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610a91611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610b7c7f4645455f50524f5649444552000000000000000000000000000000000000000082611c3e565b8073ffffffffffffffffffffffffffffffffffffffff167f18e1a55b8eff9c93921eecfa1462d6a8cbb80b3988db3eb14c039e43fdb2266160405160405180910390a250565b6000610bed7f444154415f50524f564944455200000000000000000000000000000000000000610a4c565b905090565b6000610c1d7f4c454e44494e475f504f4f4c5f4d414e41474552000000000000000000000000610a4c565b905090565b6000610c4d7f4c454e44494e475f524154455f4f5241434c4500000000000000000000000000610a4c565b905090565b610c5a611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610d457f544f4b454e5f4449535452494255544f520000000000000000000000000000008261200f565b8073ffffffffffffffffffffffffffffffffffffffff167fa8b48a56ec01f81c3615a21ec43e16b925c26293e0801cf6330427f2a687f05360405160405180910390a250565b610d93611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e7e7f4c454e44494e475f504f4f4c5f4d414e414745520000000000000000000000008261200f565b8073ffffffffffffffffffffffffffffffffffffffff167fd5280c51185a38d36f7a0f5e56cac6248312bb70d0974782fa5a595127e0e08e60405160405180910390a250565b610ecc611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610fb77f4c49515549444154494f4e5f4d414e41474552000000000000000000000000008261200f565b8073ffffffffffffffffffffffffffffffffffffffff167f1a76cb769b814bc038223da86932b099b20aae03473683e6d98f5c3554e2606460405160405180910390a250565b611005611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6110f07f50524943455f4f5241434c4500000000000000000000000000000000000000008261200f565b8073ffffffffffffffffffffffffffffffffffffffff167fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd60405160405180910390a250565b60006111617f4c49515549444154494f4e5f4d414e4147455200000000000000000000000000610a4c565b905090565b61116e611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6112597f4c454e44494e475f504f4f4c000000000000000000000000000000000000000082611c3e565b8073ffffffffffffffffffffffffffffffffffffffff167fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa460405160405180910390a250565b6112a7611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61142f611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61151a7f4c454e44494e475f524154455f4f5241434c45000000000000000000000000008261200f565b8073ffffffffffffffffffffffffffffffffffffffff167f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b560405160405180910390a250565b600061158b7f4c454e44494e475f504f4f4c5f434f4e464947555241544f5200000000000000610a4c565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6115c1611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611682576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6116ac7f504152414d45544552535f50524f56494445520000000000000000000000000082611c3e565b8073ffffffffffffffffffffffffffffffffffffffff167fce16ea9b2fd7cadddd0f7359971028f50b5ddba33dfae1a9bdea956fabb1e28060405160405180910390a250565b6116fa611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6117e57f444154415f50524f56494445520000000000000000000000000000000000000082611c3e565b8073ffffffffffffffffffffffffffffffffffffffff167f07890d7d10db37434d76ee4f2928fb2dc66227c3b3391206aced4f7bcb59cdb060405160405180910390a250565b611833611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61191e7f4c454e44494e475f504f4f4c5f434f4e464947555241544f520000000000000082611c3e565b8073ffffffffffffffffffffffffffffffffffffffff167fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372960405160405180910390a250565b6000806119907f4c454e44494e475f504f4f4c5f434f5245000000000000000000000000000000610a4c565b90508091505090565b60006119c47f544f4b454e5f4449535452494255544f52000000000000000000000000000000610a4c565b905090565b6119d1611c36565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612de66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611c017f4645455f50524f56494445520000000000000000000000000000000000000000610a4c565b905090565b6000611c317f50524943455f4f5241434c450000000000000000000000000000000000000000610a4c565b905090565b600033905090565b6000611c4983610a4c565b90506000819050606030604051602401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506040516020818303038152906040527fc4d66de8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f0357604051611d4f90612065565b604051809103906000f080158015611d6b573d6000803e3d6000fd5b5091508173ffffffffffffffffffffffffffffffffffffffff1663cf7a1d778530846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611e40578082015181840152602081019050611e25565b50505050905090810190601f168015611e6d5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611e8e57600080fd5b505af1158015611ea2573d6000803e3d6000fd5b50505050611eb0858361200f565b8173ffffffffffffffffffffffffffffffffffffffff167f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e231142438866040518082815260200191505060405180910390a2612008565b8173ffffffffffffffffffffffffffffffffffffffff16634f1ef28685836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611fa2578082015181840152602081019050611f87565b50505050905090810190601f168015611fcf5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611fef57600080fd5b505af1158015612003573d6000803e3d6000fd5b505050505b5050505050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610d73806120738339019056fe608060405234801561001057600080fd5b50610d53806100206000396000f3fe6080604052600436106100745760003560e01c80638f2839701161004e5780638f283970146101c9578063cf7a1d771461021a578063d1f5789414610315578063f851a440146103f057610083565b80633659cfe6146100885780634f1ef286146100d95780635c60da1b1461017257610083565b3661008357610081610447565b005b600080fd5b34801561009457600080fd5b506100d7600480360360208110156100ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610461565b005b610170600480360360408110156100ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012c57600080fd5b82018360208201111561013e57600080fd5b8035906020019184600183028401116401000000008311171561016057600080fd5b90919293919293905050506104b6565b005b34801561017e57600080fd5b5061018761058c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101d557600080fd5b50610218600480360360208110156101ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105e4565b005b6103136004803603606081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460018302840111640100000000831117156102c157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061075d565b005b6103ee6004803603604081101561032b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061081f565b005b3480156103fc57600080fd5b506104056109a2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61044f6109fa565b61045f61045a610a04565b610a35565b565b610469610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104aa576104a581610a8c565b6104b3565b6104b2610447565b5b50565b6104be610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561057e576104fa83610a8c565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b505090508061057857600080fd5b50610587565b610586610447565b5b505050565b6000610596610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156105d8576105d1610a04565b90506105e1565b6105e0610447565b5b90565b6105ec610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561075157600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180610cad6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6106ce610a5b565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a161074c81610adb565b61075a565b610759610447565b5b50565b600073ffffffffffffffffffffffffffffffffffffffff1661077d610a04565b73ffffffffffffffffffffffffffffffffffffffff161461079d57600080fd5b6107a7838261081f565b600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b1461081157fe5b61081a82610adb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff1661083f610a04565b73ffffffffffffffffffffffffffffffffffffffff161461085f57600080fd5b600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b146108c957fe5b6108d282610b0a565b60008151111561099e5760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106109295780518252602082019150602081019050602083039250610906565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610989576040519150601f19603f3d011682016040523d82523d6000602084013e61098e565b606091505b505090508061099c57600080fd5b505b5050565b60006109ac610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156109ee576109e7610a5b565b90506109f7565b6109f6610447565b5b90565b610a02610b97565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610a56573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b610a9581610b0a565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b610b1381610c2d565b610b68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610ce3603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b610b9f610a5b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180610c7b6032913960400191505060405180910390fd5b610c2b610c78565b565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610c6f57506000801b8214155b92505050919050565b56fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220a12941e9bce1bde36f44bb5c03c27af62469cfa6958fcac106926a5a40dbe4d464736f6c634300060800334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212205a6b01910506d53d78d74eddecc906aff4aef41d6489fb73bcb65465d0a1b34064736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b611bbd806100866000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635aef021f116100de578063bfedc10311610097578063ee89129611610071578063ee891296146103c0578063f2fde38b146103c8578063fbeefc3c146103ee578063fca513a8146103f65761018e565b8063bfedc1031461036c578063c12542df14610392578063ed6ff760146103b85761018e565b80635aef021f146102e2578063715018a614610308578063820d12741461031057806385c858b1146103365780638da5cb5b1461033e578063a5eface2146103465761018e565b806333128d591161014b57806340fdcadc1161012557806340fdcadc1461026857806344ce375b1461028e578063530e784f146102b45780635834eb9a146102da5761018e565b806333128d59146102325780633618abba1461023a57806338280e6b146102425761018e565b80630261bf8b1461019357806304061d8e146101b75780631c827204146101bf57806321f8a721146101e75780632a62c636146102045780632f58b80d1461022a575b600080fd5b61019b6103fe565b604080516001600160a01b039092168252519081900360200190f35b61019b61041d565b6101e5600480360360208110156101d557600080fd5b50356001600160a01b031661043e565b005b61019b600480360360208110156101fd57600080fd5b50356104eb565b6101e56004803603602081101561021a57600080fd5b50356001600160a01b0316610506565b61019b6105ae565b61019b6105c9565b61019b6105eb565b6101e56004803603602081101561025857600080fd5b50356001600160a01b031661060c565b6101e56004803603602081101561027e57600080fd5b50356001600160a01b03166106b9565b6101e5600480360360208110156102a457600080fd5b50356001600160a01b0316610769565b6101e5600480360360208110156102ca57600080fd5b50356001600160a01b0316610818565b61019b6108c0565b6101e5600480360360208110156102f857600080fd5b50356001600160a01b03166108e1565b6101e5610989565b6101e56004803603602081101561032657600080fd5b50356001600160a01b0316610a2b565b61019b610ada565b61019b610b01565b6101e56004803603602081101561035c57600080fd5b50356001600160a01b0316610b10565b6101e56004803603602081101561038257600080fd5b50356001600160a01b0316610bbf565b6101e5600480360360208110156103a857600080fd5b50356001600160a01b0316610c68565b61019b610d1d565b61019b610d43565b6101e5600480360360208110156103de57600080fd5b50356001600160a01b0316610d62565b61019b610e5a565b61019b610e74565b60006104186b13115391125391d7d413d3d360a21b6104eb565b905090565b6000610418722820a920a6a2aa22a929afa82927ab24a222a960691b6104eb565b610446610e8e565b6000546001600160a01b03908116911614610496576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b6104b4704c454e44494e475f504f4f4c5f434f524560781b82610e92565b6040516001600160a01b038216907f71c226bb2879778ca1298196bf7cc1256baee9d05b496c31ee627d35a471b5b790600090a250565b6000908152600160205260409020546001600160a01b031690565b61050e610e8e565b6000546001600160a01b0390811691161461055e576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b6105776b2322a2afa82927ab24a222a960a11b82610e92565b6040516001600160a01b038216907f18e1a55b8eff9c93921eecfa1462d6a8cbb80b3988db3eb14c039e43fdb2266190600090a250565b60006104186c2220aa20afa82927ab24a222a960991b6104eb565b6000610418732622a72224a723afa827a7a62fa6a0a720a3a2a960611b6104eb565b6000610418724c454e44494e475f524154455f4f5241434c4560681b6104eb565b610614610e8e565b6000546001600160a01b03908116911614610664576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b610682702a27a5a2a72fa224a9aa2924a12aaa27a960791b8261112b565b6040516001600160a01b038216907fa8b48a56ec01f81c3615a21ec43e16b925c26293e0801cf6330427f2a687f05390600090a250565b6106c1610e8e565b6000546001600160a01b03908116911614610711576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b610732732622a72224a723afa827a7a62fa6a0a720a3a2a960611b8261112b565b6040516001600160a01b038216907fd5280c51185a38d36f7a0f5e56cac6248312bb70d0974782fa5a595127e0e08e90600090a250565b610771610e8e565b6000546001600160a01b039081169116146107c1576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b6107e1722624a8aaa4a220aa24a7a72fa6a0a720a3a2a960691b8261112b565b6040516001600160a01b038216907f1a76cb769b814bc038223da86932b099b20aae03473683e6d98f5c3554e2606490600090a250565b610820610e8e565b6000546001600160a01b03908116911614610870576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b6108896b50524943455f4f5241434c4560a01b8261112b565b6040516001600160a01b038216907fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd90600090a250565b6000610418722624a8aaa4a220aa24a7a72fa6a0a720a3a2a960691b6104eb565b6108e9610e8e565b6000546001600160a01b03908116911614610939576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b6109526b13115391125391d7d413d3d360a21b82610e92565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610991610e8e565b6000546001600160a01b039081169116146109e1576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610a33610e8e565b6000546001600160a01b03908116911614610a83576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b610aa3724c454e44494e475f524154455f4f5241434c4560681b8261112b565b6040516001600160a01b038216907f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b590600090a250565b6000610418782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b6104eb565b6000546001600160a01b031690565b610b18610e8e565b6000546001600160a01b03908116911614610b68576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b610b88722820a920a6a2aa22a929afa82927ab24a222a960691b82610e92565b6040516001600160a01b038216907fce16ea9b2fd7cadddd0f7359971028f50b5ddba33dfae1a9bdea956fabb1e28090600090a250565b610bc7610e8e565b6000546001600160a01b03908116911614610c17576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b610c316c2220aa20afa82927ab24a222a960991b82610e92565b6040516001600160a01b038216907f07890d7d10db37434d76ee4f2928fb2dc66227c3b3391206aced4f7bcb59cdb090600090a250565b610c70610e8e565b6000546001600160a01b03908116911614610cc0576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b610ce6782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b82610e92565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b600080610d3d704c454e44494e475f504f4f4c5f434f524560781b6104eb565b91505090565b6000610418702a27a5a2a72fa224a9aa2924a12aaa27a960791b6104eb565b610d6a610e8e565b6000546001600160a01b03908116911614610dba576040805162461bcd60e51b81526020600482018190526024820152600080516020611b68833981519152604482015290519081900360640190fd5b6001600160a01b038116610dff5760405162461bcd60e51b8152600401808060200182810382526026815260200180611b426026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006104186b2322a2afa82927ab24a222a960a11b6104eb565b60006104186b50524943455f4f5241434c4560a01b6104eb565b3390565b6000610e9d836104eb565b60408051306024808301919091528251808303909101815260449091019091526020810180516001600160e01b031663189acdbd60e31b17905290915081906001600160a01b03821661105757604051610ef690611159565b604051809103906000f080158015610f12573d6000803e3d6000fd5b509150816001600160a01b031663cf7a1d778530846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610fa3578181015183820152602001610f8b565b50505050905090810190601f168015610fd05780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610ff157600080fd5b505af1158015611005573d6000803e3d6000fd5b50505050611013858361112b565b6040805186815290516001600160a01b038416917f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e231142438919081900360200190a2611124565b6040805163278f794360e11b81526001600160a01b03868116600483019081526024830193845284516044840152845191861693634f1ef2869389938793929160640190602085019080838360005b838110156110be5781810151838201526020016110a6565b50505050905090810190601f1680156110eb5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505b5050505050565b60009182526001602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b6109db806111678339019056fe608060405234801561001057600080fd5b506109bb806100206000396000f3fe6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610599945050505050565b34801561031257600080fd5b506101426106d9565b610323610704565b61033361032e61070c565b610731565b565b61033d610755565b6001600160a01b0316336001600160a01b031614156103645761035f8161077a565b61036c565b61036c61031b565b50565b610377610755565b6001600160a01b0316336001600160a01b0316141561040f576103998361077a565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b6000610426610755565b6001600160a01b0316336001600160a01b0316141561044e5761044761070c565b9050610456565b61045661031b565b90565b610461610755565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b81526004018080602001828103825260368152602001806109156036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e8610755565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f816107ba565b600061051d61070c565b6001600160a01b03161461053057600080fd5b61053a8382610599565b604080517232b4b8189c9b1b97383937bc3c9730b236b4b760691b815290519081900360130190207fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036000199091011461059057fe5b610417826107ba565b60006105a361070c565b6001600160a01b0316146105b657600080fd5b604080517f656970313936372e70726f78792e696d706c656d656e746174696f6e000000008152905190819003601c0190207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6000199091011461061657fe5b61061f826107de565b8051156106d5576000826001600160a01b0316826040518082805190602001908083835b602083106106625780518252601f199092019160209182019101610643565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146106c2576040519150601f19603f3d011682016040523d82523d6000602084013e6106c7565b606091505b505090508061041757600080fd5b5050565b60006106e3610755565b6001600160a01b0316336001600160a01b0316141561044e57610447610755565b610333610846565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610750573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b610783816107de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6107e7816108a6565b6108225760405162461bcd60e51b815260040180806020018281038252603b81526020018061094b603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61084e610755565b6001600160a01b0316336001600160a01b0316141561089e5760405162461bcd60e51b81526004018080602001828103825260328152602001806108e36032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906108da57508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122089bc49272b806ab0537b1c878ddb046d426bdcafa284bea5e049aa9c3a94bdd164736f6c634300060800334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212201b59d0998262c1205f812cf6554158cb8d080e55abc7a8511a7f970b7b1b4c1364736f6c63430006080033"; diff --git a/types/LendingPoolAddressesProviderRegistryFactory.ts b/types/LendingPoolAddressesProviderRegistryFactory.ts index 05f9357c..0fa1fe70 100644 --- a/types/LendingPoolAddressesProviderRegistryFactory.ts +++ b/types/LendingPoolAddressesProviderRegistryFactory.ts @@ -186,4 +186,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b610cab806100db6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461012f578063d258191e14610179578063d570d954146101c7578063f2fde38b1461021f5761007d565b80630de2670714610082578063365ccbbf146100c6578063715018a614610125575b600080fd5b6100c46004803603602081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610263565b005b6100ce61046c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156101115780820151818401526020810190506100f6565b505050509050019250505060405180910390f35b61012d6105ea565b005b610137610772565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c56004803603604081101561018f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061079b565b005b610209600480360360208110156101dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f8565b6040518082815260200191505060405180910390f35b6102616004803603602081101561023557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610941565b005b61026b610b4e565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461032c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f50726f7669646572206973206e6f74207265676973746572656400000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd260405160405180910390a250565b60606000600280549050905060608167ffffffffffffffff8111801561049157600080fd5b506040519080825280602002602001820160405280156104c05781602001602082028036833780820191505090505b50905060008090505b6002805490508110156105e157600060016000600284815481106104e957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156105d4576002818154811061056257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061059957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b80806001019150506104c9565b50809250505090565b6105f2610b4e565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107a3610b4e565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108b182610b56565b8173ffffffffffffffffffffffffffffffffffffffff167f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda60405160405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610949610b4e565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610c506026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b60008090505b600280549050811015610be7578173ffffffffffffffffffffffffffffffffffffffff1660028281548110610b8d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610bda5750610c4c565b8080600101915050610b5c565b506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212208fff8148c4d3f27688a2b4dd4afc6b9426ed78e1c8b0661d0de03eadada05b8564736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b610750806100866000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d258191e1461012e578063d570d9541461015a578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b26102be565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a86103bb565b61011261045d565b604080516001600160a01b039092168252519081900360200190f35b6100a86004803603604081101561014457600080fd5b506001600160a01b03813516906020013561046c565b6101806004803603602081101561017057600080fd5b50356001600160a01b0316610520565b60408051918252519081900360200190f35b6100a8600480360360208110156101a857600080fd5b50356001600160a01b031661053b565b6101c0610633565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205461027a576040805162461bcd60e51b815260206004820152601a60248201527f50726f7669646572206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b6001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b600254606090818167ffffffffffffffff811180156102dc57600080fd5b50604051908082528060200260200182016040528015610306578160200160208202803683370190505b50905060005b6002548110156103b4576000600160006002848154811061032957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411156103ac576002818154811061036157fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061038b57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161030c565b5091505090565b6103c3610633565b6000546001600160a01b03908116911614610413576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610474610633565b6000546001600160a01b039081169116146104c4576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090208190556104e882610637565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b6001600160a01b031660009081526001602052604090205490565b610543610633565b6000546001600160a01b03908116911614610593576040805162461bcd60e51b815260206004820181905260248201526000805160206106fb833981519152604482015290519081900360640190fd5b6001600160a01b0381166105d85760405162461bcd60e51b81526004018080602001828103825260268152602001806106d56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60005b60025481101561068457816001600160a01b03166002828154811061065b57fe5b6000918252602090912001546001600160a01b0316141561067c57506106d1565b60010161063a565b50600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e2a84f2ba2379b488e40b239204f1ef8e03c486e04e58a3c47a34f2f8661e0d864736f6c63430006080033"; diff --git a/types/LendingPoolConfiguratorFactory.ts b/types/LendingPoolConfiguratorFactory.ts index bbb0735f..4122a0a3 100644 --- a/types/LendingPoolConfiguratorFactory.ts +++ b/types/LendingPoolConfiguratorFactory.ts @@ -683,4 +683,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040526000805534801561001457600080fd5b506186ec80620000256000396000f3fe60806040523480156200001157600080fd5b5060043610620001605760003560e01c8063a8dc0f4511620000c9578063d466016f1162000087578063d466016f146200079d578063dae4c4e714620007ee578063e12dcc6c1462000835578063e8ae2f5b1462000841578063eede87c11462000888578063ef1f937314620008db5762000160565b8063a8dc0f45146200063a578063b75d6f341462000681578063b8c0f74514620006c8578063c4d66de8146200070f578063d06e2ec114620007565762000160565b806366bbd928116200012357806366bbd928146200048057806370fb84f414620004d15780637aca76eb14620005225780637af635a6146200056957806380e17d871462000589578063a5bc826c14620005d55762000160565b8063071033e414620001655780631d2118f914620001d95780633443a14b146200024057806336805a6214620002915780633e72a4541462000439575b600080fd5b620001d7600480360360608110156200017d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000922565b005b6200023e60048036036040811015620001f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062000e29565b005b6200028f600480360360408110156200025857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062001167565b005b62000437600480360360a0811015620002a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115620002e757600080fd5b820183602082011115620002fa57600080fd5b803590602001918460018302840111640100000000831117156200031d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156200038157600080fd5b8201836020820111156200039457600080fd5b80359060200191846001830284011164010000000083111715620003b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506200144d565b005b6200047e600480360360208110156200045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062001973565b005b620004cf600480360360408110156200049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062001d3d565b005b6200052060048036036040811015620004e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505062002023565b005b62000567600480360360208110156200053a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062002309565b005b62000573620025be565b6040518082815260200191505060405180910390f35b62000593620025c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6200063860048036036080811015620005ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050620025e9565b005b6200067f600480360360208110156200065257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620028d4565b005b620006c6600480360360208110156200069957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062002b89565b005b6200070d60048036036020811015620006e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062002e3e565b005b62000754600480360360208110156200072757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620030f3565b005b6200079b600480360360208110156200076e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506200322e565b005b620007ec60048036036040811015620007b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050620034e3565b005b62000833600480360360208110156200080657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050620037c9565b005b6200083f62003a7e565b005b62000886600480360360208110156200085957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505062003cb8565b005b620008d960048036036040811015620008a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505062003f6d565b005b6200092060048036036020811015620008f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506200425b565b005b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620009a257600080fd5b505afa158015620009b7573d6000803e3d6000fd5b505050506040513d6020811015620009ce57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462000a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b600083905060608173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801562000a9b57600080fd5b505afa15801562000ab0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000adb57600080fd5b810190808051604051939291908464010000000082111562000afc57600080fd5b8382019150602082018581111562000b1357600080fd5b825186600182028301116401000000008211171562000b3157600080fd5b8083526020830192505050908051906020019080838360005b8381101562000b6757808201518184015260208101905062000b4a565b50505050905090810190601f16801562000b955780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f4161766520496e7465726573742062656172696e67200000000000000000000081525060160182805190602001908083835b6020831062000bfc578051825260208201915060208101905060208303925062000bd7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052905060608273ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801562000c7b57600080fd5b505afa15801562000c90573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101562000cbb57600080fd5b810190808051604051939291908464010000000082111562000cdc57600080fd5b8382019150602082018581111562000cf357600080fd5b825186600182028301116401000000008211171562000d1157600080fd5b8083526020830192505050908051906020019080838360005b8381101562000d4757808201518184015260208101905062000d2a565b50505050905090810190601f16801562000d755780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f610000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b6020831062000ddc578051825260208201915060208101905060208303925062000db7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052905062000e2186838388886200144d565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ea957600080fd5b505afa15801562000ebe573d6000803e3d6000fd5b505050506040513d602081101562000ed557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462000f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562000fbf57600080fd5b505afa15801562000fd4573d6000803e3d6000fd5b505050506040513d602081101562000feb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16631d2118f984846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015620010b257600080fd5b505af1158015620010c7573d6000803e3d6000fd5b505050507f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a58383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620011e757600080fd5b505afa158015620011fc573d6000803e3d6000fd5b505050506040513d60208110156200121357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462001292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620012fd57600080fd5b505afa15801562001312573d6000803e3d6000fd5b505050506040513d60208110156200132957600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16633443a14b84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015620013c457600080fd5b505af1158015620013d9573d6000803e3d6000fd5b505050507f437dd3b61b7c7eee7fc70515c8846482dfca92e2e1e02af5d638c5d4878d67148383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620014cd57600080fd5b505afa158015620014e2573d6000803e3d6000fd5b505050506040513d6020811015620014f957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462001578576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620015e357600080fd5b505afa158015620015f8573d6000803e3d6000fd5b505050506040513d60208110156200160f57600080fd5b810190808051906020019092919050505090506000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168785888860405162001659906200452a565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156200170c578082015181840152602081019050620016ef565b50505050905090810190601f1680156200173a5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156200177557808201518184015260208101905062001758565b50505050905090810190601f168015620017a35780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f080158015620017ca573d6000803e3d6000fd5b5090508173ffffffffffffffffffffffffffffffffffffffff166345330a40888387876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b158015620018c057600080fd5b505af1158015620018d5573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f1d9fcd0dc935b4778d5af97f55c4d7b2553257382f1ef25c412114c8eeebd88e85604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a350505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620019f357600080fd5b505afa15801562001a08573d6000803e3d6000fd5b505050506040513d602081101562001a1f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462001a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562001b0957600080fd5b505afa15801562001b1e573d6000803e3d6000fd5b505050506040513d602081101562001b3557600080fd5b8101908080519060200190929190505050905060008173ffffffffffffffffffffffffffffffffffffffff1663c33cfd90846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801562001bc857600080fd5b505afa15801562001bdd573d6000803e3d6000fd5b505050506040513d602081101562001bf457600080fd5b81019080805190602001909291905050501462001c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806200868d602a913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16633e72a454836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562001cdd57600080fd5b505af115801562001cf2573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e60405160405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562001dbd57600080fd5b505afa15801562001dd2573d6000803e3d6000fd5b505050506040513d602081101562001de957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462001e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562001ed357600080fd5b505afa15801562001ee8573d6000803e3d6000fd5b505050506040513d602081101562001eff57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166366bbd92884846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801562001f9a57600080fd5b505af115801562001faf573d6000803e3d6000fd5b505050507f2e73b7f1df792712003e6859f940c1e8711c3f1329474771fee71d2ec11631298383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620020a357600080fd5b505afa158015620020b8573d6000803e3d6000fd5b505050506040513d6020811015620020cf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146200214e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620021b957600080fd5b505afa158015620021ce573d6000803e3d6000fd5b505050506040513d6020811015620021e557600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166370fb84f484846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200228057600080fd5b505af115801562002295573d6000803e3d6000fd5b505050507fe3ba662f7011e701056a43e8cf832242322eeff01453e7a72d01ec2af36d9aec8383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b1580156200238957600080fd5b505afa1580156200239e573d6000803e3d6000fd5b505050506040513d6020811015620023b557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462002434576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200249f57600080fd5b505afa158015620024b4573d6000803e3d6000fd5b505050506040513d6020811015620024cb57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16637aca76eb836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200255e57600080fd5b505af115801562002573573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fda5cdb66c77023db6abe5226a4d4a40c3b8e768012f4ff4e446f62f60127fc5660405160405180910390a25050565b600381565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b1580156200266957600080fd5b505afa1580156200267e573d6000803e3d6000fd5b505050506040513d60208110156200269557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462002714576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200277f57600080fd5b505afa15801562002794573d6000803e3d6000fd5b505050506040513d6020811015620027ab57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663a5bc826c868686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b1580156200285657600080fd5b505af11580156200286b573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fdfe62f53e7707d64f99bca15d2bdf3facc4074bc047e7dec2ea130300e99274485858560405180848152602001838152602001828152602001935050505060405180910390a25050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b1580156200295457600080fd5b505afa15801562002969573d6000803e3d6000fd5b505050506040513d60208110156200298057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614620029ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562002a6a57600080fd5b505afa15801562002a7f573d6000803e3d6000fd5b505050506040513d602081101562002a9657600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663a8dc0f45836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562002b2957600080fd5b505af115801562002b3e573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e60405160405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562002c0957600080fd5b505afa15801562002c1e573d6000803e3d6000fd5b505050506040513d602081101562002c3557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462002cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562002d1f57600080fd5b505afa15801562002d34573d6000803e3d6000fd5b505050506040513d602081101562002d4b57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663b75d6f34836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562002dde57600080fd5b505af115801562002df3573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c60405160405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562002ebe57600080fd5b505afa15801562002ed3573d6000803e3d6000fd5b505050506040513d602081101562002eea57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462002f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562002fd457600080fd5b505afa15801562002fe9573d6000803e3d6000fd5b505050506040513d60208110156200300057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663b8c0f745836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200309357600080fd5b505af1158015620030a8573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e360405160405180910390a25050565b6000620030ff62004510565b9050600160009054906101000a900460ff16806200312357506200312262004519565b5b8062003130575060005481115b62003187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806200865f602e913960400191505060405180910390fd5b6000600160009054906101000a900460ff161590508015620031c55760018060006101000a81548160ff021916908315150217905550816000819055505b82603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801562003229576000600160006101000a81548160ff0219169083151502179055505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620032ae57600080fd5b505afa158015620032c3573d6000803e3d6000fd5b505050506040513d6020811015620032da57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462003359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620033c457600080fd5b505afa158015620033d9573d6000803e3d6000fd5b505050506040513d6020811015620033f057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d06e2ec1836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f19dbf059e4d3a0cb998d4328b7b991bbe312827eeb053d8ff63edf33158e01db60405160405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b1580156200356357600080fd5b505afa15801562003578573d6000803e3d6000fd5b505050506040513d60208110156200358f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146200360e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200367957600080fd5b505afa1580156200368e573d6000803e3d6000fd5b505050506040513d6020811015620036a557600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d466016f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200374057600080fd5b505af115801562003755573d6000803e3d6000fd5b505050507fda47540c7f7fd5a68c3285f3bb708f322424f948f41df6f51622fa24b39686648383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b1580156200384957600080fd5b505afa1580156200385e573d6000803e3d6000fd5b505050506040513d60208110156200387557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614620038f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200395f57600080fd5b505afa15801562003974573d6000803e3d6000fd5b505050506040513d60208110156200398b57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663dae4c4e7836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562003a1e57600080fd5b505af115801562003a33573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb160405160405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562003afe57600080fd5b505afa15801562003b13573d6000803e3d6000fd5b505050506040513d602081101562003b2a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462003ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562003c1457600080fd5b505afa15801562003c29573d6000803e3d6000fd5b505050506040513d602081101562003c4057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663646810836040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562003c9c57600080fd5b505af115801562003cb1573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562003d3857600080fd5b505afa15801562003d4d573d6000803e3d6000fd5b505050506040513d602081101562003d6457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462003de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801562003e4e57600080fd5b505afa15801562003e63573d6000803e3d6000fd5b505050506040513d602081101562003e7a57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663e8ae2f5b836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562003f0d57600080fd5b505af115801562003f22573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f9cc75e4cafc9a556a369bc53468649075680eb554d225d5918f199453824796d60405160405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b15801562003fed57600080fd5b505afa15801562004002573d6000803e3d6000fd5b505050506040513d60208110156200401957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462004098576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200410357600080fd5b505afa15801562004118573d6000803e3d6000fd5b505050506040513d60208110156200412f57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663eede87c184846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200192505050600060405180830381600087803b158015620041ce57600080fd5b505af1158015620041e3573d6000803e3d6000fd5b505050507fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b5088383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166333128d596040518163ffffffff1660e01b815260040160206040518083038186803b158015620042db57600080fd5b505afa158015620042f0573d6000803e3d6000fd5b505050506040513d60208110156200430757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161462004386576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620086366029913960400191505060405180910390fd5b6000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620043f157600080fd5b505afa15801562004406573d6000803e3d6000fd5b505050506040513d60208110156200441d57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663ef1f9373836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015620044b057600080fd5b505af1158015620044c5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f995959c2ceab6ce20e8cd89c904e449fd3e21918a0f420c9ec9340595585526b60405160405180910390a25050565b60006003905090565b600080303b90506000811491505090565b6140fd80620045398339019056fe60806040523480156200001157600080fd5b50604051620040fd380380620040fd833981810160405260a08110156200003757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805160405193929190846401000000008211156200007657600080fd5b838201915060208201858111156200008d57600080fd5b8251866001820283011164010000000082111715620000ab57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000e1578082015181840152602081019050620000c4565b50505050905090810190601f1680156200010f5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013357600080fd5b838201915060208201858111156200014a57600080fd5b82518660018202830111640100000000821117156200016857600080fd5b8083526020830192505050908051906020019080838360005b838110156200019e57808201518184015260208101905062000181565b50505050905090810190601f168015620001cc5780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001ed92919062000593565b5080600490805190602001906200020692919062000593565b506012600560006101000a81548160ff021916908360ff160217905550505062000236836200057560201b60201c565b84600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e057600080fd5b505afa158015620002f5573d6000803e3d6000fd5b505050506040513d60208110156200030c57600080fd5b8101908080519060200190929190505050600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d6020811015620003f257600080fd5b8101908080519060200190929190505050600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f58b80d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ac57600080fd5b505afa158015620004c1573d6000803e3d6000fd5b505050506040513d6020811015620004d857600080fd5b8101908080519060200190929190505050600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000642565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005d657805160ff191683800117855562000607565b8280016001018555821562000607579182015b8281111562000606578251825591602001919060010190620005e9565b5b5090506200061691906200061a565b5090565b6200063f91905b808211156200063b57600081600090555060010162000621565b5090565b90565b613aab80620006526000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146108c0578063dd62ed3e146108ee578063ee9907a414610966578063f866c319146109be57610173565b8063a9059cbb146107e4578063c634dfaa1461084a578063d0fc81d2146108a257610173565b80635eae177c146105a557806370a082311461060b57806389d1a0fc1461066357806394362e8b146106ad57806395d89b41146106fb578063a457c2d71461077e57610173565b806323b872dd1161013057806323b872dd1461035f578063313ce567146103e5578063325a9b1314610409578063395093511461046d5780633edb7cb8146104d3578063445e80101461052157610173565b806306fdde0314610178578063095ea7b3146101fb5780630e49072d1461026157806312c87c2d146102a557806318160ddd146102e95780631d51e7cf14610307575b600080fd5b610180610a2c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ace565b604051808215151515815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aec565b005b6102e7600480360360208110156102bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af9565b005b6102f1610c59565b6040518082815260200191505060405180910390f35b6103496004803603602081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9e565b6040518082815260200191505060405180910390f35b6103cb6004803603606081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de7565b604051808215151515815260200191505060405180910390f35b6103ed610ec0565b604051808260ff1660ff16815260200191505060405180910390f35b61046b6004803603604081101561041f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed7565b005b6104b96004803603604081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc8565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061107b565b005b6105636004803603602081101561053757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f1600480360360408110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611253565b604051808215151515815260200191505060405180910390f35b61064d6004803603602081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611395565b6040518082815260200191505060405180910390f35b61066b61150a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106f9600480360360408110156106c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b005b610703611674565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610743578082015181840152602081019050610728565b50505050905090810190601f1680156107705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107ca6004803603604081101561079457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611716565b604051808215151515815260200191505060405180910390f35b610830600480360360408110156107fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117e3565b604051808215151515815260200191505060405180910390f35b61088c6004803603602081101561086057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611801565b6040518082815260200191505060405180910390f35b6108aa611813565b6040518082815260200191505060405180910390f35b6108ec600480360360208110156108d657600080fd5b8101908080359060200190929190505050611837565b005b6109506004803603604081101561090457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bad565b6040518082815260200191505060405180910390f35b6109a86004803603602081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c34565b6040518082815260200191505060405180910390f35b610a2a600480360360608110156109d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7d565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ac45780601f10610a9957610100808354040283529160200191610ac4565b820191906000526020600020905b815481529060010190602001808311610aa757829003601f168201915b5050505050905090565b6000610ae2610adb611d33565b8484611d3b565b6001905092915050565b610af63382611f32565b50565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138716025913960400191505060405180910390fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b60405160405180910390a350565b600080610c64612308565b90506000811415610c79576000915050610d9b565b610d97610d92600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d4057600080fd5b505afa158015610d54573d6000803e3d6000fd5b505050506040513d6020811015610d6a57600080fd5b8101908080519060200190929190505050610d8484612312565b61233290919063ffffffff16565b612395565b9150505b90565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610df48484846123da565b610eb584610e00611d33565b610eb0856040518060600160405280602881526020016138b760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e66611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611d3b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613a3c603a913960400191505060405180910390fd5b610fc48282611f32565b5050565b6000611071610fd5611d33565b8461106c8560016000610fe6611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b611d3b565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b600080600061112f856125b2565b93509350935050611141858386612758565b61114b8585612a4e565b600080905060006111658686612c1290919063ffffffff16565b14156111775761117486612c5c565b90505b8573ffffffffffffffffffffffffffffffffffffffff167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846111bc57856111bf565b60005b60405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e9d615600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b8101908080519060200190929190505050905092915050565b6000806113a183612df4565b90506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821480156113f75750600081145b1561140757600092505050611505565b600073ffffffffffffffffffffffffffffffffffffffff16600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114d2576114c9816114bb866114b6858761252a90919063ffffffff16565b612e3c565b612c1290919063ffffffff16565b92505050611505565b6115006114f1826114e38785612e3c565b612c1290919063ffffffff16565b8361252a90919063ffffffff16565b925050505b919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b6000806115e2846125b2565b935093505050611606846115ff858561252a90919063ffffffff16565b6000612758565b6116108484612fb5565b8373ffffffffffffffffffffffffffffffffffffffff167fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a84848460405180848152602001838152602001828152602001935050505060405180910390a250505050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561170c5780601f106116e15761010080835404028352916020019161170c565b820191906000526020600020905b8154815290600101906020018083116116ef57829003601f168201915b5050505050905090565b60006117d9611723611d33565b846117d485604051806060016040528060258152602001613a17602591396001600061174d611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611d3b565b6001905092915050565b60006117f76117f0611d33565b84846123da565b6001905092915050565b600061180c82612df4565b9050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b600081116118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f416d6f756e7420746f2072656465656d206e6565647320746f206265203e203081525060200191505060405180910390fd5b60008060006118bb336125b2565b9350935093505060008490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8514156118f3578390505b8381111561194c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137f76032913960400191505060405180910390fd5b6119563382611253565b6119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5472616e736665722063616e6e6f7420626520616c6c6f7765642e000000000081525060200191505060405180910390fd5b6119d3338483612758565b6119dd3382612a4e565b600080905060006119f78387612c1290919063ffffffff16565b1415611a0957611a0633612c5c565b90505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639895e3d8600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff163385611a7f878b612c1290919063ffffffff16565b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838684611b7f5786611b82565b60005b60405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b611d2e83838361317c565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139c16024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138296022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806138df602a913960400191505060405180910390fd5b60008060008061202a876125b2565b93509350935093506000831161208b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806139096042913960600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146120cc576120cb87600086612758565b5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156121ff576000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a734873559485858560405180848152602001838152602001828152602001935050505060405180910390a35050505050612304565b85600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061228987846000612758565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a734873559485858560405180848152602001838152602001828152602001935050505060405180910390a350505050505b5050565b6000600254905090565b600061232b633b9aca00836132f990919063ffffffff16565b9050919050565b600061238d6b033b2e3c9fd0803ce800000061237f61235a85876132f990919063ffffffff16565b60026b033b2e3c9fd0803ce80000008161237057fe5b0461252a90919063ffffffff16565b61337f90919063ffffffff16565b905092915050565b6000806002633b9aca00816123a657fe5b0490506123d2633b9aca006123c4858461252a90919063ffffffff16565b61337f90919063ffffffff16565b915050919050565b82816123e68282611253565b612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5472616e736665722063616e6e6f7420626520616c6c6f7765642e000000000081525060200191505060405180910390fd5b61246385858561317c565b5050505050565b6000838311158290612517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124dc5780820151818401526020810190506124c1565b50505050905090810190601f1680156125095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060006125c386612df4565b905060006125e2826125d489611395565b612c1290919063ffffffff16565b90506125ee8782612fb5565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126b157600080fd5b505afa1580156126c5573d6000803e3d6000fd5b505050506040513d60208110156126db57600080fd5b8101908080519060200190929190505050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055905082612744838561252a90919063ffffffff16565b838396509650965096505050509193509193565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127f75750612a49565b600080612803836125b2565b93509350505061286d8461285f87600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b612c1290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146129de5761299a83600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff167f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f848489896040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061397b6021913960400191505060405180910390fd5b612ae0826000836133c9565b612b4b816040518060600160405280602281526020016137d5602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba281600254612c1290919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612c5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246a565b905092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594600080600060405180848152602001838152602001828152602001935050505060405180910390a36000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612dea576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050612def565b600090505b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612fad612fa8600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f4857600080fd5b505afa158015612f5c573d6000803e3d6000fd5b505050506040513d6020811015612f7257600080fd5b8101908080519060200190929190505050612f8c87612312565b61233290919063ffffffff16565b6133ce90919063ffffffff16565b612395565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613064600083836133c9565b6130798160025461252a90919063ffffffff16565b6002819055506130d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081116131d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061394b6030913960400191505060405180910390fd5b60008060006131e3866125b2565b935093509350506000806131f6876125b2565b935093505050613207888588612758565b6132258761321e888561252a90919063ffffffff16565b6000612758565b61323088888861342a565b6000809050600061324a8888612c1290919063ffffffff16565b141561325c5761325989612c5c565b90505b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde8898887866132b957896132bc565b60005b88604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050505050565b60008083141561330c5760009050613379565b600082840290508284828161331d57fe5b0414613374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138966021913960400191505060405180910390fd5b809150505b92915050565b60006133c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136eb565b905092915050565b505050565b600080600283816133db57fe5b049050613421836134136134046b033b2e3c9fd0803ce8000000886132f990919063ffffffff16565b8461252a90919063ffffffff16565b61337f90919063ffffffff16565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061399c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b26023913960400191505060405180910390fd5b6135418383836133c9565b6135ac8160405180606001604052806026815260200161384b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061363f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008083118290613797576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561375c578082015181840152602081019050613741565b50505050905090810190601f1680156137895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816137a357fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a264697066735822122088d750a4e3b3943503e728f5a5fb21f6a77c593a73246a90c2869cdebaae015964736f6c634300060800335468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c206d616e61676572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564546865206c6971756964697479206f66207468652072657365727665206e6565647320746f2062652030a26469706673582212206e6c48d916e3eaf75892d0ebe84e0a172b749fe4186dd098c39818ec27c76b0764736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b506155b8806100246000396000f3fe60806040523480156200001157600080fd5b5060043610620001605760003560e01c8063a8dc0f4511620000c9578063d466016f1162000087578063d466016f1462000550578063dae4c4e7146200057f578063e12dcc6c14620005a8578063e8ae2f5b14620005b2578063eede87c114620005db578063ef1f9373146200060c5762000160565b8063a8dc0f451462000483578063b75d6f3414620004ac578063b8c0f74514620004d5578063c4d66de814620004fe578063d06e2ec114620005275762000160565b806366bbd928116200012357806366bbd928146200037f57806370fb84f414620003ae5780637aca76eb14620003dd5780637af635a6146200040657806380e17d871462000422578063a5bc826c14620004485762000160565b8063071033e414620001655780631d2118f914620001a35780633443a14b14620001d457806336805a6214620002035780633e72a4541462000356575b600080fd5b620001a1600480360360608110156200017d57600080fd5b506001600160a01b03813581169160ff602082013516916040909101351662000635565b005b620001a160048036036040811015620001bb57600080fd5b506001600160a01b038135811691602001351662000a6a565b620001a160048036036040811015620001ec57600080fd5b506001600160a01b03813516906020013562000c52565b620001a1600480360360a08110156200021b57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200024657600080fd5b8201836020820111156200025957600080fd5b803590602001918460018302840111600160201b831117156200027b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620002ce57600080fd5b820183602082011115620002e157600080fd5b803590602001918460018302840111600160201b831117156200030357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff16925050602001356001600160a01b031662000e38565b620001a1600480360360208110156200036e57600080fd5b50356001600160a01b03166200117e565b620001a1600480360360408110156200039757600080fd5b506001600160a01b03813516906020013562001410565b620001a160048036036040811015620003c657600080fd5b506001600160a01b038135169060200135620015f6565b620001a160048036036020811015620003f557600080fd5b50356001600160a01b0316620017dc565b62000410620019aa565b60408051918252519081900360200190f35b6200042c620019af565b604080516001600160a01b039092168252519081900360200190f35b620001a1600480360360808110156200046057600080fd5b506001600160a01b038135169060208101359060408101359060600135620019be565b620001a1600480360360208110156200049b57600080fd5b50356001600160a01b031662001bbc565b620001a160048036036020811015620004c457600080fd5b50356001600160a01b031662001d8a565b620001a160048036036020811015620004ed57600080fd5b50356001600160a01b031662001f58565b620001a1600480360360208110156200051657600080fd5b50356001600160a01b031662002126565b620001a1600480360360208110156200053f57600080fd5b50356001600160a01b0316620021e8565b620001a1600480360360408110156200056857600080fd5b506001600160a01b038135169060200135620023b6565b620001a1600480360360208110156200059757600080fd5b50356001600160a01b03166200259c565b620001a16200276a565b620001a160048036036020811015620005ca57600080fd5b50356001600160a01b0316620028fa565b620001a160048036036040811015620005f357600080fd5b506001600160a01b038135169060200135151562002ac8565b620001a1600480360360208110156200062457600080fd5b50356001600160a01b031662002cb0565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200067a57600080fd5b505afa1580156200068f573d6000803e3d6000fd5b505050506040513d6020811015620006a657600080fd5b50516001600160a01b031614620006ef5760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b60008390506060816001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156200073057600080fd5b505afa15801562000745573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200076f57600080fd5b8101908080516040519392919084600160201b8211156200078f57600080fd5b908301906020820185811115620007a557600080fd5b8251600160201b811182820188101715620007bf57600080fd5b82525081516020918201929091019080838360005b83811015620007ee578181015183820152602001620007d4565b50505050905090810190601f1680156200081c5780820380516001836020036101000a031916815260200191505b50604052505050604051602001808075020b0bb329024b73a32b932b9ba103132b0b934b733960551b81525060160182805190602001908083835b60208310620008785780518252601f19909201916020918201910162000857565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506060826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620008ea57600080fd5b505afa158015620008ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200092957600080fd5b8101908080516040519392919084600160201b8211156200094957600080fd5b9083019060208201858111156200095f57600080fd5b8251600160201b8111828201881017156200097957600080fd5b82525081516020918201929091019080838360005b83811015620009a85781810151838201526020016200098e565b50505050905090810190601f168015620009d65780820380516001836020036101000a031916815260200191505b506040525050506040516020018080606160f81b81525060010182805190602001908083835b6020831062000a1d5780518252601f199092019160209182019101620009fc565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052905062000a62868383888862000e38565b505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000aaf57600080fd5b505afa15801562000ac4573d6000803e3d6000fd5b505050506040513d602081101562000adb57600080fd5b50516001600160a01b03161462000b245760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562000b6a57600080fd5b505afa15801562000b7f573d6000803e3d6000fd5b505050506040513d602081101562000b9657600080fd5b505160408051631d2118f960e01b81526001600160a01b0386811660048301528581166024830152915192935090831691631d2118f99160448082019260009290919082900301818387803b15801562000bef57600080fd5b505af115801562000c04573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528616602082015281517f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a59450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000c9757600080fd5b505afa15801562000cac573d6000803e3d6000fd5b505050506040513d602081101562000cc357600080fd5b50516001600160a01b03161462000d0c5760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562000d5257600080fd5b505afa15801562000d67573d6000803e3d6000fd5b505050506040513d602081101562000d7e57600080fd5b505160408051633443a14b60e01b81526001600160a01b03868116600483015260248201869052915192935090831691633443a14b9160448082019260009290919082900301818387803b15801562000dd657600080fd5b505af115801562000deb573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f437dd3b61b7c7eee7fc70515c8846482dfca92e2e1e02af5d638c5d4878d67149450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000e7d57600080fd5b505afa15801562000e92573d6000803e3d6000fd5b505050506040513d602081101562000ea957600080fd5b50516001600160a01b03161462000ef25760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562000f3857600080fd5b505afa15801562000f4d573d6000803e3d6000fd5b505050506040513d602081101562000f6457600080fd5b50516034546040519192506000916001600160a01b0390911690889086908990899062000f919062002e89565b6001600160a01b038087168252851660208083019190915260ff8516604083015260a06060830181815285519184019190915284519091608084019160c085019187019080838360005b8381101562000ff557818101518382015260200162000fdb565b50505050905090810190601f168015620010235780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620010585781810151838201526020016200103e565b50505050905090810190601f168015620010865780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f080158015620010ad573d6000803e3d6000fd5b5060408051630114cc2960e61b81526001600160a01b038a81166004830152808416602483015260ff8816604483015286811660648301529151929350908416916345330a409160848082019260009290919082900301818387803b1580156200111657600080fd5b505af11580156200112b573d6000803e3d6000fd5b5050604080516001600160a01b03878116825291518286169450918b1692507f1d9fcd0dc935b4778d5af97f55c4d7b2553257382f1ef25c412114c8eeebd88e919081900360200190a350505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620011c357600080fd5b505afa158015620011d8573d6000803e3d6000fd5b505050506040513d6020811015620011ef57600080fd5b50516001600160a01b031614620012385760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b1580156200127e57600080fd5b505afa15801562001293573d6000803e3d6000fd5b505050506040513d6020811015620012aa57600080fd5b505160408051630c33cfd960e41b81526001600160a01b03858116600483015291519293509083169163c33cfd9091602480820192602092909190829003018186803b158015620012fa57600080fd5b505afa1580156200130f573d6000803e3d6000fd5b505050506040513d60208110156200132657600080fd5b505115620013665760405162461bcd60e51b815260040180806020018281038252602a81526020018062005559602a913960400191505060405180910390fd5b806001600160a01b0316633e72a454836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015620013bf57600080fd5b505af1158015620013d4573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200145557600080fd5b505afa1580156200146a573d6000803e3d6000fd5b505050506040513d60208110156200148157600080fd5b50516001600160a01b031614620014ca5760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b1580156200151057600080fd5b505afa15801562001525573d6000803e3d6000fd5b505050506040513d60208110156200153c57600080fd5b505160408051630cd77b2560e31b81526001600160a01b038681166004830152602482018690529151929350908316916366bbd9289160448082019260009290919082900301818387803b1580156200159457600080fd5b505af1158015620015a9573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f2e73b7f1df792712003e6859f940c1e8711c3f1329474771fee71d2ec11631299450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200163b57600080fd5b505afa15801562001650573d6000803e3d6000fd5b505050506040513d60208110156200166757600080fd5b50516001600160a01b031614620016b05760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015620016f657600080fd5b505afa1580156200170b573d6000803e3d6000fd5b505050506040513d60208110156200172257600080fd5b505160408051631c3ee13d60e21b81526001600160a01b038681166004830152602482018690529151929350908316916370fb84f49160448082019260009290919082900301818387803b1580156200177a57600080fd5b505af11580156200178f573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fe3ba662f7011e701056a43e8cf832242322eeff01453e7a72d01ec2af36d9aec9450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200182157600080fd5b505afa15801562001836573d6000803e3d6000fd5b505050506040513d60208110156200184d57600080fd5b50516001600160a01b031614620018965760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015620018dc57600080fd5b505afa158015620018f1573d6000803e3d6000fd5b505050506040513d60208110156200190857600080fd5b505160408051637aca76eb60e01b81526001600160a01b038581166004830152915192935090831691637aca76eb9160248082019260009290919082900301818387803b1580156200195957600080fd5b505af11580156200196e573d6000803e3d6000fd5b50506040516001600160a01b03851692507fda5cdb66c77023db6abe5226a4d4a40c3b8e768012f4ff4e446f62f60127fc569150600090a25050565b600381565b6034546001600160a01b031681565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001a0357600080fd5b505afa15801562001a18573d6000803e3d6000fd5b505050506040513d602081101562001a2f57600080fd5b50516001600160a01b03161462001a785760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562001abe57600080fd5b505afa15801562001ad3573d6000803e3d6000fd5b505050506040513d602081101562001aea57600080fd5b50516040805163296f209b60e21b81526001600160a01b03888116600483015260248201889052604482018790526064820186905291519293509083169163a5bc826c9160848082019260009290919082900301818387803b15801562001b5057600080fd5b505af115801562001b65573d6000803e3d6000fd5b5050604080518781526020810187905280820186905290516001600160a01b03891693507fdfe62f53e7707d64f99bca15d2bdf3facc4074bc047e7dec2ea130300e99274492509081900360600190a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001c0157600080fd5b505afa15801562001c16573d6000803e3d6000fd5b505050506040513d602081101562001c2d57600080fd5b50516001600160a01b03161462001c765760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562001cbc57600080fd5b505afa15801562001cd1573d6000803e3d6000fd5b505050506040513d602081101562001ce857600080fd5b50516040805163a8dc0f4560e01b81526001600160a01b03858116600483015291519293509083169163a8dc0f459160248082019260009290919082900301818387803b15801562001d3957600080fd5b505af115801562001d4e573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001dcf57600080fd5b505afa15801562001de4573d6000803e3d6000fd5b505050506040513d602081101562001dfb57600080fd5b50516001600160a01b03161462001e445760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562001e8a57600080fd5b505afa15801562001e9f573d6000803e3d6000fd5b505050506040513d602081101562001eb657600080fd5b505160408051632dd75bcd60e21b81526001600160a01b03858116600483015291519293509083169163b75d6f349160248082019260009290919082900301818387803b15801562001f0757600080fd5b505af115801562001f1c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001f9d57600080fd5b505afa15801562001fb2573d6000803e3d6000fd5b505050506040513d602081101562001fc957600080fd5b50516001600160a01b031614620020125760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b1580156200205857600080fd5b505afa1580156200206d573d6000803e3d6000fd5b505050506040513d60208110156200208457600080fd5b50516040805163b8c0f74560e01b81526001600160a01b03858116600483015291519293509083169163b8c0f7459160248082019260009290919082900301818387803b158015620020d557600080fd5b505af1158015620020ea573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b60006200213262002e7e565b60015490915060ff16806200214c57506200214c62002e83565b8062002159575060005481115b620021965760405162461bcd60e51b815260040180806020018281038252602e8152602001806200552b602e913960400191505060405180910390fd5b60015460ff16158015620021b6576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b0385161790558015620021e3576001805460ff191690555b505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200222d57600080fd5b505afa15801562002242573d6000803e3d6000fd5b505050506040513d60208110156200225957600080fd5b50516001600160a01b031614620022a25760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015620022e857600080fd5b505afa158015620022fd573d6000803e3d6000fd5b505050506040513d60208110156200231457600080fd5b50516040805163d06e2ec160e01b81526001600160a01b03858116600483015291519293509083169163d06e2ec19160248082019260009290919082900301818387803b1580156200236557600080fd5b505af11580156200237a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f19dbf059e4d3a0cb998d4328b7b991bbe312827eeb053d8ff63edf33158e01db9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620023fb57600080fd5b505afa15801562002410573d6000803e3d6000fd5b505050506040513d60208110156200242757600080fd5b50516001600160a01b031614620024705760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015620024b657600080fd5b505afa158015620024cb573d6000803e3d6000fd5b505050506040513d6020811015620024e257600080fd5b50516040805163d466016f60e01b81526001600160a01b0386811660048301526024820186905291519293509083169163d466016f9160448082019260009290919082900301818387803b1580156200253a57600080fd5b505af11580156200254f573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fda47540c7f7fd5a68c3285f3bb708f322424f948f41df6f51622fa24b39686649450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620025e157600080fd5b505afa158015620025f6573d6000803e3d6000fd5b505050506040513d60208110156200260d57600080fd5b50516001600160a01b031614620026565760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b1580156200269c57600080fd5b505afa158015620026b1573d6000803e3d6000fd5b505050506040513d6020811015620026c857600080fd5b50516040805163dae4c4e760e01b81526001600160a01b03858116600483015291519293509083169163dae4c4e79160248082019260009290919082900301818387803b1580156200271957600080fd5b505af11580156200272e573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620027af57600080fd5b505afa158015620027c4573d6000803e3d6000fd5b505050506040513d6020811015620027db57600080fd5b50516001600160a01b031614620028245760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b1580156200286a57600080fd5b505afa1580156200287f573d6000803e3d6000fd5b505050506040513d60208110156200289657600080fd5b505160408051636468108360e01b815290519192506001600160a01b0383169163646810839160048082019260009290919082900301818387803b158015620028de57600080fd5b505af1158015620028f3573d6000803e3d6000fd5b5050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200293f57600080fd5b505afa15801562002954573d6000803e3d6000fd5b505050506040513d60208110156200296b57600080fd5b50516001600160a01b031614620029b45760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b158015620029fa57600080fd5b505afa15801562002a0f573d6000803e3d6000fd5b505050506040513d602081101562002a2657600080fd5b50516040805163e8ae2f5b60e01b81526001600160a01b03858116600483015291519293509083169163e8ae2f5b9160248082019260009290919082900301818387803b15801562002a7757600080fd5b505af115801562002a8c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f9cc75e4cafc9a556a369bc53468649075680eb554d225d5918f199453824796d9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562002b0d57600080fd5b505afa15801562002b22573d6000803e3d6000fd5b505050506040513d602081101562002b3957600080fd5b50516001600160a01b03161462002b825760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562002bc857600080fd5b505afa15801562002bdd573d6000803e3d6000fd5b505050506040513d602081101562002bf457600080fd5b50516040805163eede87c160e01b81526001600160a01b038681166004830152851515602483015291519293509083169163eede87c19160448082019260009290919082900301818387803b15801562002c4d57600080fd5b505af115801562002c62573d6000803e3d6000fd5b5050604080516001600160a01b0387168152851515602082015281517fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b5089450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562002cf557600080fd5b505afa15801562002d0a573d6000803e3d6000fd5b505050506040513d602081101562002d2157600080fd5b50516001600160a01b03161462002d6a5760405162461bcd60e51b8152600401808060200182810382526029815260200180620055026029913960400191505060405180910390fd5b6034546040805163076b7fbb60e51b815290516000926001600160a01b03169163ed6ff760916004808301926020929190829003018186803b15801562002db057600080fd5b505afa15801562002dc5573d6000803e3d6000fd5b505050506040513d602081101562002ddc57600080fd5b50516040805163ef1f937360e01b81526001600160a01b03858116600483015291519293509083169163ef1f93739160248082019260009290919082900301818387803b15801562002e2d57600080fd5b505af115801562002e42573d6000803e3d6000fd5b50506040516001600160a01b03851692507f995959c2ceab6ce20e8cd89c904e449fd3e21918a0f420c9ec9340595585526b9150600090a25050565b600390565b303b1590565b61266a8062002e988339019056fe60806040523480156200001157600080fd5b506040516200266a3803806200266a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620003fb565b508051620001e1906004906020840190620003fb565b50506005805460ff191660121790555062000205836001600160e01b03620003e516565b600a80546001600160a01b0319166001600160a01b0387811691909117918290556040805163076b7fbb60e51b81529051929091169163ed6ff76091600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b03928316179055600a5460408051630261bf8b60e01b815290519190921691630261bf8b916004808301926020929190829003018186803b158015620002ea57600080fd5b505afa158015620002ff573d6000803e3d6000fd5b505050506040513d60208110156200031657600080fd5b5051600c80546001600160a01b0319166001600160a01b03928316179055600a5460408051632f58b80d60e01b815290519190921691632f58b80d916004808301926020929190829003018186803b1580156200037257600080fd5b505afa15801562000387573d6000803e3d6000fd5b505050506040513d60208110156200039e57600080fd5b5051600d80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b03191661010096909216959095021790935550620004a092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043e57805160ff19168380011785556200046e565b828001600101855582156200046e579182015b828111156200046e57825182559160200191906001019062000451565b506200047c92915062000480565b5090565b6200049d91905b808211156200047c576000815560010162000487565b90565b6121ba80620004b06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600c546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600d54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600c546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600c546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600c546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220c8fd5846993571a387a0c2a71b832df30d67b0d8fe3c92d534e2c832d30948d464736f6c634300060800335468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c206d616e61676572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564546865206c6971756964697479206f66207468652072657365727665206e6565647320746f2062652030a26469706673582212208bc96d2b7f0c9e1f0bb48690c4f8bd2985dc3bfbc6f6018d4b4bc6cb641b7cca64736f6c63430006080033"; diff --git a/types/LendingPoolCoreFactory.ts b/types/LendingPoolCoreFactory.ts index ce7c256a..778b2714 100644 --- a/types/LendingPoolCoreFactory.ts +++ b/types/LendingPoolCoreFactory.ts @@ -1691,7 +1691,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600080553480156200001557600080fd5b50619ca080620000266000396000f3fe6080604052600436106104145760003560e01c8063a2353fdc1161021e578063d15e005311610123578063e8ae2f5b116100ab578063f61483111161007a578063f61483111461211b578063f6ea8d76146121e0578063fa51854c14612265578063fa93b2a5146122e2578063feab31ac1461235d5761048f565b8063e8ae2f5b14611fb7578063eede87c114612008578063ef1f937314612065578063f054ab46146120b65761048f565b8063dae4c4e7116100f2578063dae4c4e714611d6b578063e10076ad14611dbc578063e2174d8614611e5a578063e240301914611eed578063e6d1819014611f525761048f565b8063d15e005314611bb9578063d3ae26b314611c1e578063d466016f14611c75578063da12d96f14611cd05761048f565b8063bd7fd79a116101a6578063c540148e11610175578063c540148e146119b9578063c72c4d1014611a1e578063c76a6c9c14611a75578063c7d1423714611ada578063d06e2ec114611b685761048f565b8063bd7fd79a14611839578063bfacad841461189e578063c33cfd9014611903578063c4d66de8146119685761048f565b8063afcdbea3116101ed578063afcdbea314611624578063b701d093146116ab578063b75d6f3414611710578063b8c0f74514611761578063bcd6ffa4146117b25761048f565b8063a2353fdc14611470578063a5bc826c146114d5578063a8dc0f4514611544578063af825b07146115955761048f565b80635cf2e656116103245780637aca76eb116102ac578063906c0a411161027b578063906c0a411461122157806398bd4737146112865780639e3c4f3b146112eb5780639e674848146113745780639fb8afcd146113dd5761048f565b80637aca76eb146110985780637f90fec5146110e957806388079d881461114e5780638f385c22146111b35761048f565b806366d103f3116102f357806366d103f314610dd257806368beb4d614610e575780636ae1441614610f275780636fffab0c14610fb857806370fb84f41461103d5761048f565b80635cf2e65614610c795780635fc526ff14610ce25780636468108314610d6057806366bbd92814610d775761048f565b80633443a14b116103a757806345330a401161037657806345330a4014610a2257806346bc0f2814610abd5780634a08accb14610b225780634f14460914610b8b5780634fe7a6e514610bfe5761048f565b80633443a14b1461083857806334b3beee1461089357806337ac6fe4146109245780633e72a454146109d15761048f565b806318f9bbae116103e357806318f9bbae1461065d5780631ca19f19146106c65780631d2118f91461075957806328fcf4d3146107ca5761048f565b806305075d6e146104945780630902f1ac146104fd57806309ac29531461056957806318a4dbca146105d85761048f565b3661048f576104383373ffffffffffffffffffffffffffffffffffffffff166123e2565b61048d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806199cf6036913960400191505060405180910390fd5b005b600080fd5b3480156104a057600080fd5b506104e3600480360360208110156104b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061242d565b604051808215151515815260200191505060405180910390f35b34801561050957600080fd5b5061051261248b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561055557808201518184015260208101905061053a565b505050509050019250505060405180910390f35b34801561057557600080fd5b506105d66004803603608081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050612519565b005b3480156105e457600080fd5b50610647600480360360408110156105fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612695565b6040518082815260200191505060405180910390f35b34801561066957600080fd5b506106ac6004803603602081101561068057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127be565b604051808215151515815260200191505060405180910390f35b3480156106d257600080fd5b50610735600480360360408110156106e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061281c565b6040518082600281111561074557fe5b60ff16815260200191505060405180910390f35b34801561076557600080fd5b506107c86004803603604081101561077c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128d4565b005b610836600480360360608110156107e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a7f565b005b34801561084457600080fd5b506108916004803603604081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d4c565b005b34801561089f57600080fd5b506108e2600480360360208110156108b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561093057600080fd5b506109b4600480360360a081101561094757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190505050612f34565b604051808381526020018281526020019250505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613032565b005b348015610a2e57600080fd5b50610abb60048036036080811015610a4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131bc565b005b348015610ac957600080fd5b50610b0c60048036036020811015610ae057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613408565b6040518082815260200191505060405180910390f35b348015610b2e57600080fd5b50610b7160048036036020811015610b4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613459565b604051808215151515815260200191505060405180910390f35b348015610b9757600080fd5b50610bda60048036036020811015610bae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b7565b604051808264ffffffffff1664ffffffffff16815260200191505060405180910390f35b348015610c0a57600080fd5b50610c3760048036036020811015610c2157600080fd5b8101908080359060200190929190505050613519565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c8557600080fd5b50610cc860048036036020811015610c9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613555565b604051808215151515815260200191505060405180910390f35b348015610cee57600080fd5b50610d3160048036036020811015610d0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135b3565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b348015610d6c57600080fd5b50610d75613643565b005b348015610d8357600080fd5b50610dd060048036036040811015610d9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613773565b005b348015610dde57600080fd5b50610e4160048036036040811015610df557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138ea565b6040518082815260200191505060405180910390f35b348015610e6357600080fd5b50610f256004803603610120811015610e7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190505050613991565b005b348015610f3357600080fd5b50610f7660048036036020811015610f4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a94565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fc457600080fd5b5061102760048036036040811015610fdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b05565b6040518082815260200191505060405180910390f35b34801561104957600080fd5b506110966004803603604081101561106057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b94565b005b3480156110a457600080fd5b506110e7600480360360208110156110bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d0b565b005b3480156110f557600080fd5b506111386004803603602081101561110c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e95565b6040518082815260200191505060405180910390f35b34801561115a57600080fd5b5061119d6004803603602081101561117157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ee6565b6040518082815260200191505060405180910390f35b61121f600480360360608110156111c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506140ae565b005b34801561122d57600080fd5b506112706004803603602081101561124457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614305565b6040518082815260200191505060405180910390f35b34801561129257600080fd5b506112d5600480360360208110156112a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614411565b6040518082815260200191505060405180910390f35b3480156112f757600080fd5b5061135a6004803603604081101561130e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614462565b604051808215151515815260200191505060405180910390f35b34801561138057600080fd5b506113c36004803603602081101561139757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506144fe565b604051808215151515815260200191505060405180910390f35b3480156113e957600080fd5b5061144c6004803603604081101561140057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061455c565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561147c57600080fd5b506114bf6004803603602081101561149357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614682565b6040518082815260200191505060405180910390f35b3480156114e157600080fd5b50611542600480360360808110156114f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506146ce565b005b34801561155057600080fd5b506115936004803603602081101561156757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506148b9565b005b3480156115a157600080fd5b5061160e600480360360608110156115b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a89565b6040518082815260200191505060405180910390f35b34801561163057600080fd5b506116a96004803603608081101561164757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050614bdc565b005b3480156116b757600080fd5b506116fa600480360360208110156116ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614cee565b6040518082815260200191505060405180910390f35b34801561171c57600080fd5b5061175f6004803603602081101561173357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614d3f565b005b34801561176d57600080fd5b506117b06004803603602081101561178457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614f36565b005b3480156117be57600080fd5b50611837600480360360808110156117d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035151590602001909291905050506150c0565b005b34801561184557600080fd5b506118886004803603602081101561185c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506151d2565b6040518082815260200191505060405180910390f35b3480156118aa57600080fd5b506118ed600480360360208110156118c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615223565b6040518082815260200191505060405180910390f35b34801561190f57600080fd5b506119526004803603602081101561192657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506152c5565b6040518082815260200191505060405180910390f35b34801561197457600080fd5b506119b76004803603602081101561198b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615334565b005b3480156119c557600080fd5b50611a08600480360360208110156119dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061546d565b6040518082815260200191505060405180910390f35b348015611a2a57600080fd5b50611a336154be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015611a8157600080fd5b50611ac460048036036020811015611a9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506154e4565b6040518082815260200191505060405180910390f35b611b6660048036036080811015611af057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615535565b005b348015611b7457600080fd5b50611bb760048036036020811015611b8b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506157e8565b005b348015611bc557600080fd5b50611c0860048036036020811015611bdc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615e40565b6040518082815260200191505060405180910390f35b348015611c2a57600080fd5b50611c33615e95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015611c8157600080fd5b50611cce60048036036040811015611c9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615ebb565b005b348015611cdc57600080fd5b50611d69600480360360c0811015611cf357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190505050616032565b005b348015611d7757600080fd5b50611dba60048036036020811015611d8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616106565b005b348015611dc857600080fd5b50611e2b60048036036040811015611ddf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616290565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b348015611e6657600080fd5b50611ed360048036036060811015611e7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506163e0565b604051808215151515815260200191505060405180910390f35b348015611ef957600080fd5b50611f3c60048036036020811015611f1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616511565b6040518082815260200191505060405180910390f35b348015611f5e57600080fd5b50611fa160048036036020811015611f7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061661f565b6040518082815260200191505060405180910390f35b348015611fc357600080fd5b5061200660048036036020811015611fda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061666f565b005b34801561201457600080fd5b506120636004803603604081101561202b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061683f565b005b34801561207157600080fd5b506120b46004803603602081101561208857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616a1c565b005b3480156120c257600080fd5b50612105600480360360208110156120d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616ba6565b6040518082815260200191505060405180910390f35b34801561212757600080fd5b506121b5600480360360c081101561213e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803560ff169060200190929190505050616bf7565b604051808360028111156121c557fe5b60ff1681526020018281526020019250505060405180910390f35b3480156121ec57600080fd5b5061224f6004803603604081101561220357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616ce4565b6040518082815260200191505060405180910390f35b34801561227157600080fd5b506122e06004803603606081101561228857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050616d73565b005b3480156122ee57600080fd5b5061235b6004803603606081101561230557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616ebb565b005b34801561236957600080fd5b506123cc6004803603604081101561238057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506170b3565b6040518082815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561242457506000801b8214155b92505050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601c9054906101000a900460ff16915050919050565b6060603880548060200260200160405190810160405280929190818152602001828054801561250f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116124c5575b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b6125c98482617142565b612610603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b600061262d61261e8661661f565b856173c290919063ffffffff16565b90506126828184603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061744a9092919063ffffffff16565b61268e858460006174b5565b5050505050565b600080603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561277a57600080fd5b505afa15801561278e573d6000803e3d6000fd5b505050506040513d60208110156127a457600080fd5b810190808051906020019092919050505091505092915050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601a9054906101000a900460ff16915050919050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414156128b45760009150506128ce565b60008160030154116128c75760026128ca565b60015b9150505b92915050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561295357600080fd5b505afa158015612967573d6000803e3d6000fd5b505050506040513d602081101561297d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146129fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b80603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b612b2d617718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612bea5760003414612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180619a656032913960400191505060405180910390fd5b612be58230838673ffffffffffffffffffffffffffffffffffffffff16617734909392919063ffffffff16565b612d47565b80341015612c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061999a6035913960400191505060405180910390fd5b80341115612d46576000612c60823461782190919063ffffffff16565b905060008373ffffffffffffffffffffffffffffffffffffffff168361c35090604051806000019050600060405180830381858888f193505050503d8060008114612cc7576040519150601f19603f3d011682016040523d82523d6000602084013e612ccc565b606091505b5050905080612d43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b50505b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015612dcb57600080fd5b505afa158015612ddf573d6000803e3d6000fd5b505050506040513d6020811015612df557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160090181905550505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600c0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000803373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b600080612fea898961455c565b9250509150612ffd898984848b8a61786b565b61300b898989848a8a6178c8565b613017896000896174b5565b6130218989617aee565b819350935050509550959350505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156130b157600080fd5b505afa1580156130c5573d6000803e3d6000fd5b505050506040513d60208110156130db57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613158576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01601c6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561323b57600080fd5b505afa15801561324f573d6000803e3d6000fd5b505050506040513d602081101561326557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146132e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__6313769cd490918585856040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060006040518083038186803b1580156133e157600080fd5b505af41580156133f5573d6000803e3d6000fd5b5050505061340284617c17565b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060060154915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601d9054906101000a900460ff16915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d0160149054906101000a900464ffffffffff16915050919050565b6038818154811061352657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d0160199054906101000a900460ff16915050919050565b6000806000806000806000806000603660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600b01549450806008015493508060090154925080600d01601a9054906101000a900460ff16915084848484985098509850985050505050509193509193565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156136c257600080fd5b505afa1580156136d6573d6000803e3d6000fd5b505050506040513d60208110156136ec57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b613771617d1a565b565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156137f257600080fd5b505afa158015613806573d6000803e3d6000fd5b505050506040513d602081101561381c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508181600b0181905550505050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060040160009054906101000a900464ffffffffff1664ffffffffff1691505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b613a4389888885617dff565b613a4c88617f5f565b613a598988888786617fa9565b613a65898760006174b5565b80613a8957613a88886000613a8386896173c290919063ffffffff16565b6174b5565b5b505050505050505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015491505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015613c1357600080fd5b505afa158015613c27573d6000803e3d6000fd5b505050506040513d6020811015613c3d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508181600a0181905550505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015613d8a57600080fd5b505afa158015613d9e573d6000803e3d6000fd5b505050506040513d6020811015613db457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600181600d01601d6101000a81548160ff0219169083151502179055505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9457600080fd5b505afa158015613fa8573d6000803e3d6000fd5b505050506040513d6020811015613fbe57600080fd5b8101908080519060200190929190505050905060008260050154141561409f578073ffffffffffffffffffffffffffffffffffffffff1663bb85c0bb856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561405b57600080fd5b505afa15801561406f573d6000803e3d6000fd5b505050506040513d602081101561408557600080fd5b8101908080519060200190929190505050925050506140a9565b8160050154925050505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b6000819050600034146141b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806199146036913960400191505060405180910390fd5b6141ba617718565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461421c5761421781848673ffffffffffffffffffffffffffffffffffffffff166181299092919063ffffffff16565b6142ff565b60008173ffffffffffffffffffffffffffffffffffffffff168461c35090604051806000019050600060405180830381858888f193505050503d8060008114614281576040519150601f19603f3d011682016040523d82523d6000602084013e614286565b606091505b50509050806142fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b505b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816004015414156144035780600d0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b1580156143c057600080fd5b505afa1580156143d4573d6000803e3d6000fd5b505050506040513d60208110156143ea57600080fd5b810190808051906020019092919050505091505061440c565b80600401549150505b919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060030154915050919050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060040160059054906101000a900460ff1691505092915050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601b9054906101000a900460ff16915050919050565b600080600080603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414156146075760008060008292508191508090509350935093505061467b565b600081600001549050600061465a83603660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206181e1565b90508181614671848461782190919063ffffffff16565b9550955095505050505b9250925092565b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561474d57600080fd5b505afa158015614761573d6000803e3d6000fd5b505050506040513d602081101561477757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146147f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__6324ddc4e690918585856040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060006040518083038186803b15801561489b57600080fd5b505af41580156148af573d6000803e3d6000fd5b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561493857600080fd5b505afa15801561494c573d6000803e3d6000fd5b505050506040513d602081101561496257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146149df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__63e5df56a690916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614a6e57600080fd5b505af4158015614a82573d6000803e3d6000fd5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b614b3c848484618318565b614b47848484618404565b614b53846000806174b5565b603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015490509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b614cc9603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b614cd5846000846174b5565b8015614ce857614ce784846000616d73565b5b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060070154915050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015614dbe57600080fd5b505afa158015614dd2573d6000803e3d6000fd5b505050506040513d6020811015614de857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614614e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154118015614ec0575060008160070154115b614f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180619b5d6024913960400191505060405180910390fd5b600181600d01601c6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015614fb557600080fd5b505afa158015614fc9573d6000803e3d6000fd5b505050506040513d6020811015614fdf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461505c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01601b6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b6151ad603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b6151b9848360006174b5565b80156151cc576151cb84846001616d73565b5b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006152728261851f565b90506000811415615288576000925050506152c0565b600061529385616511565b90506152ba6152ab83836173c290919063ffffffff16565b8361854390919063ffffffff16565b93505050505b919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061532c6153158261851f565b61531e85616511565b6173c290919063ffffffff16565b915050919050565b600061533e61859f565b9050600160009054906101000a900460ff168061535f575061535e6185a8565b5b8061536b575060005481115b6153c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180619bc6602e913960400191505060405180910390fd5b6000600160009054906101000a900460ff1615905080156153fd5760018060006101000a81548160ff021916908315150217905550816000819055505b82603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615446617d1a565b8015615468576000600160006101000a81548160ff0219169083151502179055505b505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010154915050919050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600a0154915050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146155db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b60008190506155e8617718565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146156a55760003414615673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605f815260200180619a97605f913960600191505060405180910390fd5b6156a08482858873ffffffffffffffffffffffffffffffffffffffff16617734909392919063ffffffff16565b6157e1565b823410156156fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061999a6035913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff168461c35090604051806000019050600060405180830381858888f193505050503d8060008114615763576040519150601f19603f3d011682016040523d82523d6000602084013e615768565b606091505b50509050806157df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b505b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561586757600080fd5b505afa15801561587b573d6000803e3d6000fd5b505050506040513d602081101561589157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461590e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b600060386001603880549050038154811061592557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146159d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180619a28603d913960400191505060405180910390fd5b60006159e18261661f565b14615a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180619af66030913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d01601c6101000a81548160ff0219169083151502179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d0160196101000a81548160ff0219169083151502179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d01601a6101000a81548160ff0219169083151502179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506038805480615e0757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050615e8d816185b9565b915050919050565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015615f3a57600080fd5b505afa158015615f4e573d6000803e3d6000fd5b505050506040513d6020811015615f6457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614615fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160080181905550505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146160d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b6160e486868685618600565b6160f286868686868661879e565b6160fe868560006174b5565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561618557600080fd5b505afa158015616199573d6000803e3d6000fd5b505050506040513d60208110156161af57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461622c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600181600d01601b6101000a81548160ff0219169083151502179055505050565b6000806000806000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006163658989612695565b90506000826000015414156163a057806000808460040160059054906101000a900460ff1682925081915096509650965096505050506163d7565b806163b484846181e190919063ffffffff16565b83600201548460040160059054906101000a900460ff1696509650965096505050505b92959194509250565b600080603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081600d01601b9054906101000a900460ff166164c55760009250505061650a565b8060040160059054906101000a900460ff1615806164f2575081600d01601a9054906101000a900460ff16155b8061650557506165028686612695565b84115b925050505b9392505050565b60008060009050616520617718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561655b57479050616616565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156165d857600080fd5b505afa1580156165ec573d6000803e3d6000fd5b505050506040513d602081101561660257600080fd5b810190808051906020019092919050505090505b80915050919050565b6000616668603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061851f565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156166ee57600080fd5b505afa158015616702573d6000803e3d6000fd5b505050506040513d602081101561671857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614616795576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__6383c165a090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561682457600080fd5b505af4158015616838573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156168be57600080fd5b505afa1580156168d2573d6000803e3d6000fd5b505050506040513d60208110156168e857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614616965576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__63f63babbe9091836040518363ffffffff1660e01b815260040180838152602001821515151581526020019250505060006040518083038186803b158015616a0057600080fd5b505af4158015616a14573d6000803e3d6000fd5b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015616a9b57600080fd5b505afa158015616aaf573d6000803e3d6000fd5b505050506040513d6020811015616ac557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614616b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b266037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01601d6101000a81548160ff0219169083151502179055505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060090154915050919050565b6000803373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614616ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b616cad8888888887618908565b6000616cbb89898787618af7565b9050616cc9896000806174b5565b80616cd48a8a617aee565b9250925050965096945050505050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806001015491505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614616e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b6000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160040160056101000a81548160ff02191690831515021790555050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614616f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619bf4602a913960400191505060405180910390fd5b616f69617718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614616fcb57616fc682828573ffffffffffffffffffffffffffffffffffffffff166181299092919063ffffffff16565b6170ae565b60008273ffffffffffffffffffffffffffffffffffffffff168261c35090604051806000019050600060405180830381858888f193505050503d8060008114617030576040519150601f19603f3d011682016040523d82523d6000602084013e617035565b606091505b50509050806170ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b505b505050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015491505092915050565b6000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b1580156171ac57600080fd5b505afa1580156171c0573d6000803e3d6000fd5b505050506040513d60208110156171d657600080fd5b810190808051906020019092919050505090506171f1617718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146172535761724e81838573ffffffffffffffffffffffffffffffffffffffff166181299092919063ffffffff16565b617314565b60008173ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d80600081146172b3576040519150601f19603f3d011682016040523d82523d6000602084013e6172b8565b606091505b5050905080617312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180619ba26024913960400191505060405180910390fd5b505b505050565b60006173248261851f565b905060008111156173be576000617354836001015484600d0160149054906101000a900464ffffffffff16618ce1565b905061736d836000015482618d6190919063ffffffff16565b8360000181905550600061739a846004015485600d0160149054906101000a900464ffffffffff16618dc4565b90506173b3846007015482618d6190919063ffffffff16565b846007018190555050505b5050565b600080828401905083811015617440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061746f61745884618e34565b61746184618e34565b61854390919063ffffffff16565b9050600061748d61747e618e54565b836173c290919063ffffffff16565b90506174a6856000015482618d6190919063ffffffff16565b85600001819055505050505050565b6000603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600601549050600080600084600d0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357e37af089617574896175668c6175588f616511565b6173c290919063ffffffff16565b61782190919063ffffffff16565b88600201548960030154896040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060606040518083038186803b1580156175fb57600080fd5b505afa15801561760f573d6000803e3d6000fd5b505050506040513d606081101561762557600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925092508285600101819055508185600501819055508085600401819055504285600d0160146101000a81548164ffffffffff021916908364ffffffffff1602179055508773ffffffffffffffffffffffffffffffffffffffff167f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4848487858a600001548b6007015460405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a25050505050505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b61781b846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050618e68565b50505050565b600061786383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506190b3565b905092915050565b6178b2603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b6178c0868686868686619173565b505050505050565b6000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506001600281111561799857fe5b8360028111156179a457fe5b14156179c6578160050154816003018190555060008160010181905550617a6f565b6002808111156179d257fe5b8360028111156179de57fe5b1415617a00576000816003018190555081600701548160010181905550617a6e565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420626f72726f772072617465206d6f6465000000000000000081525060200191505060405180910390fd5b5b617a9885617a8a8884600001546173c290919063ffffffff16565b6173c290919063ffffffff16565b8160000181905550617ab78482600201546173c290919063ffffffff16565b8160020181905550428160040160006101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050505050565b600080617afb848461281c565b905060006002811115617b0a57fe5b816002811115617b1657fe5b1415617b26576000915050617c11565b60016002811115617b3357fe5b816002811115617b3f57fe5b14617b8c57603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154617c0d565b603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301545b9150505b92915050565b600080905060008090505b603880549050811015617cac578273ffffffffffffffffffffffffffffffffffffffff1660388281548110617c5357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415617c9f57600191505b8080600101915050617c22565b5080617d16576038829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015617d8257600080fd5b505afa158015617d96573d6000803e3d6000fd5b505050506040513d6020811015617dac57600080fd5b8101908080519060200190929190505050603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050617ecb82617319565b6000617ed7878761281c565b905060016002811115617ee657fe5b816002811115617ef257fe5b1415617f2f57617f11848360030154856193cb9092919063ffffffff16565b617f2a858360030154856194769092919063ffffffff16565b617f56565b617f42848461961290919063ffffffff16565b617f55858461963590919063ffffffff16565b5b50505050505050565b617fa6603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b50565b6000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050618095856180878585600001546173c290919063ffffffff16565b61782190919063ffffffff16565b82600001819055506002808111156180a957fe5b6180b3888861281c565b60028111156180be57fe5b14156180d257806007015482600101819055505b60008411156180fb576180f284836002015461782190919063ffffffff16565b82600201819055505b428260040160006101000a81548164ffffffffff021916908364ffffffffff16021790555050505050505050565b6181dc8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050618e68565b505050565b600080836000015414156181f85760009050618312565b60006182078460000154618e34565b90506000809050600080905060008660030154111561824a5761824386600301548760040160009054906101000a900464ffffffffff16618dc4565b905061829c565b618299866001015461828b876007015461827d89600401548a600d0160149054906101000a900464ffffffffff16618dc4565b618d6190919063ffffffff16565b61854390919063ffffffff16565b90505b6182b76182b28285618d6190919063ffffffff16565b6196b5565b9150856000015482141561830b57428660040160009054906101000a900464ffffffffff1664ffffffffff161461830a57618300600187600001546173c290919063ffffffff16565b9350505050618312565b5b8193505050505b92915050565b6000603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506183e482617319565b6183fd838260030154846193cb9092919063ffffffff16565b5050505050565b6000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506184de8383600001546173c290919063ffffffff16565b826000018190555080600501548260030181905550428260040160006101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050565b600061853c826003015483600201546173c290919063ffffffff16565b9050919050565b6000806002838161855057fe5b049050618596836185886185796b033b2e3c9fd0803ce8000000886196fa90919063ffffffff16565b846173c290919063ffffffff16565b61978090919063ffffffff16565b91505092915050565b60006007905090565b600080303b90506000811491505090565b6000806185f583600001546185e7856001015486600d0160149054906101000a900464ffffffffff16618ce1565b618d6190919063ffffffff16565b905080915050919050565b6000603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006186cf878761281c565b9050618718603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b6001600281111561872557fe5b81600281111561873157fe5b141561876e57618750848360030154856193cb9092919063ffffffff16565b618769858360030154856194769092919063ffffffff16565b618795565b618781848461961290919063ffffffff16565b618794858461963590919063ffffffff16565b5b50505050505050565b6000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061888a8661887c8684600001546173c290919063ffffffff16565b61782190919063ffffffff16565b81600001819055508160070154816001018190555082156188ba5760008160030181905550600081600101819055505b6188d185826002015461782190919063ffffffff16565b8160020181905550428160040160006101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050505050565b6000603660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506189d482617319565b600160028111156189e157fe5b8360028111156189ed57fe5b1415618a2a57600081600301549050618a118682856194769092919063ffffffff16565b618a24858461961290919063ffffffff16565b50618aee565b600280811115618a3657fe5b836002811115618a4257fe5b1415618a7f57600082600501549050618a64868461963590919063ffffffff16565b618a798582856193cb9092919063ffffffff16565b50618aed565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642072617465206d6f646520726563656976656400000000000081525060200191505060405180910390fd5b5b50505050505050565b600080603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000809050600280811115618bcc57fe5b856002811115618bd857fe5b1415618bfe57600190508160050154836003018190555060008360010181905550618c8f565b60016002811115618c0b57fe5b856002811115618c1757fe5b1415618c3d57600290506000836003018190555081600701548360010181905550618c8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180619c1e6023913960400191505060405180910390fd5b5b618ca68684600001546173c290919063ffffffff16565b8360000181905550428360040160006101000a81548164ffffffffff021916908364ffffffffff160217905550809350505050949350505050565b600080618cfe8364ffffffffff164261782190919063ffffffff16565b90506000618d29618d126301e13380618e34565b618d1b84618e34565b61854390919063ffffffff16565b9050618d57618d36618e54565b618d498388618d6190919063ffffffff16565b6173c290919063ffffffff16565b9250505092915050565b6000618dbc6b033b2e3c9fd0803ce8000000618dae618d8985876196fa90919063ffffffff16565b60026b033b2e3c9fd0803ce800000081618d9f57fe5b046173c290919063ffffffff16565b61978090919063ffffffff16565b905092915050565b600080618de18364ffffffffff164261782190919063ffffffff16565b90506000618dfc6301e133808661978090919063ffffffff16565b9050618e2a82618e1c618e0d618e54565b846173c290919063ffffffff16565b6197ca90919063ffffffff16565b9250505092915050565b6000618e4d633b9aca00836196fa90919063ffffffff16565b9050919050565b60006b033b2e3c9fd0803ce8000000905090565b618e878273ffffffffffffffffffffffffffffffffffffffff166123e2565b618ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310618f485780518252602082019150602081019050602083039250618f25565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114618faa576040519150601f19603f3d011682016040523d82523d6000602084013e618faf565b606091505b509150915081619027576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156190ad5780806020019051602081101561904657600080fd5b81019080805190602001909291905050506190ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c41602a913960400191505060405180910390fd5b5b50505050565b6000838311158290619160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561912557808201518184015260208101905061910a565b50505050905090810190601f1680156191525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061917f878761281c565b90506000603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600160028111156191d157fe5b8260028111156191dd57fe5b1415619282576000603760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061927c878260030154846194769092919063ffffffff16565b506192b5565b60028081111561928e57fe5b82600281111561929a57fe5b14156192b4576192b3868261963590919063ffffffff16565b5b5b60006192dc856192ce888a6173c290919063ffffffff16565b6173c290919063ffffffff16565b9050600160028111156192eb57fe5b8460028111156192f757fe5b141561931b57619316818360050154846193cb9092919063ffffffff16565b6193c0565b60028081111561932757fe5b84600281111561933357fe5b14156193515761934c818361961290919063ffffffff16565b6193bf565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c6964206e657720626f72726f772072617465206d6f64650000000081525060200191505060405180910390fd5b5b505050505050505050565b6000836002015490506193eb8385600201546173c290919063ffffffff16565b846002018190555060006194108361940286618e34565b618d6190919063ffffffff16565b90506000619433866006015461942585618e34565b618d6190919063ffffffff16565b90506194666194458760020154618e34565b61945883856173c290919063ffffffff16565b61854390919063ffffffff16565b8660060181905550505050505050565b81836002015410156194f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20646563726561736500000000000081525060200191505060405180910390fd5b60008360020154905061951083856002015461782190919063ffffffff16565b846002018190555060008460020154141561953557600084600601819055505061960d565b60006195528361954486618e34565b618d6190919063ffffffff16565b90506000619575866006015461956785618e34565b618d6190919063ffffffff16565b9050818110156195d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180619a056023913960400191505060405180910390fd5b6196016195e08760020154618e34565b6195f3848461782190919063ffffffff16565b61854390919063ffffffff16565b86600601819055505050505b505050565b6196298183600301546173c290919063ffffffff16565b82600301819055505050565b8082600301541015619692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605081526020018061994a6050913960600191505060405180910390fd5b6196a981836003015461782190919063ffffffff16565b82600301819055505050565b6000806002633b9aca00816196c657fe5b0490506196f2633b9aca006196e485846173c290919063ffffffff16565b61978090919063ffffffff16565b915050919050565b60008083141561970d576000905061977a565b600082840290508284828161971e57fe5b0414619775576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180619b816021913960400191505060405180910390fd5b809150505b92915050565b60006197c283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061984d565b905092915050565b600080600283816197d757fe5b0614156197f0576b033b2e3c9fd0803ce80000006197f2565b825b9050600282816197fe57fe5b0491505b60008214619847576198148384618d61565b925060006002838161982257fe5b0614619835576198328184618d61565b90505b6002828161983f57fe5b049150619802565b92915050565b600080831182906198f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156198be5780820151818401526020810190506198a3565b50505050905090810190601f1680156198eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161990557fe5b04905080915050939250505056fe466565206c69717569646174696f6e20646f6573206e6f74207265717569726520616e79207472616e73666572206f662076616c756554686520616d6f756e742074686174206973206265696e6720737562747261637465642066726f6d20746865207661726961626c6520746f74616c20626f72726f777320697320696e636f727265637454686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d617463684f6e6c7920636f6e7472616374732063616e2073656e6420657468657220746f20746865204c656e64696e6720706f6f6c20636f726554686520616d6f756e747320746f20737562747261637420646f6e2774206d6174636852657365727665206265696e672072656d6f76656420697320646966666572656e74207468616e20746865207265736572766520726571756573746564557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e20436865636b207468652076616c756520617474726962757465206f6620746865207472616e73616374696f6e43616e6e6f742072656d6f7665206120726573657276652077697468206c6971756964697479206465706f73697465645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e666967757261746f7220636f6e74726163745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220746f20746f6b656e206469737472696275746f72206661696c6564436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e7472616374496e76616c696420696e7465726573742072617465206d6f64652072656365697665645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ff0dadca6d038d83523527d8a626b197d658510f4b5b1f200d94d8f751b9404464736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b506158c180620000256000396000f3fe6080604052600436106104145760003560e01c8063a2353fdc1161021e578063d15e005311610123578063e8ae2f5b116100ab578063f61483111161007a578063f6148311146113ad578063f6ea8d7614611431578063fa51854c1461146c578063fa93b2a5146114b1578063feab31ac146114f45761045f565b8063e8ae2f5b146112d9578063eede87c11461130c578063ef1f937314611347578063f054ab461461137a5761045f565b8063dae4c4e7116100f2578063dae4c4e7146111c2578063e10076ad146111f5578063e2174d8614611230578063e240301914611273578063e6d18190146112a65761045f565b8063d15e0053146110ea578063d3ae26b31461111d578063d466016f14611132578063da12d96f1461116b5761045f565b8063bd7fd79a116101a6578063c540148e11610175578063c540148e14611000578063c72c4d1014611033578063c76a6c9c14611048578063c7d142371461107b578063d06e2ec1146110b75761045f565b8063bd7fd79a14610f34578063bfacad8414610f67578063c33cfd9014610f9a578063c4d66de814610fcd5761045f565b8063afcdbea3116101ed578063afcdbea314610e05578063b701d09314610e50578063b75d6f3414610e83578063b8c0f74514610eb6578063bcd6ffa414610ee95761045f565b8063a2353fdc14610d17578063a5bc826c14610d4a578063a8dc0f4514610d8f578063af825b0714610dc25761045f565b80635cf2e656116103245780637aca76eb116102ac578063906c0a411161027b578063906c0a4114610bea57806398bd473714610c1d5780639e3c4f3b14610c505780639e67484814610c8b5780639fb8afcd14610cbe5761045f565b80637aca76eb14610b1b5780637f90fec514610b4e57806388079d8814610b815780638f385c2214610bb45761045f565b806366d103f3116102f357806366d103f3146109ce57806368beb4d614610a095780636ae1441614610a745780636fffab0c14610aa757806370fb84f414610ae25761045f565b80635cf2e656146108f25780635fc526ff14610925578063646810831461098057806366bbd928146109955761045f565b80633443a14b116103a757806345330a401161037657806345330a40146107cc57806346bc0f28146108155780634a08accb146108485780634f1446091461087b5780634fe7a6e5146108c85761045f565b80633443a14b146106a557806334b3beee146106de57806337ac6fe41461072d5780633e72a454146107995761045f565b806318f9bbae116103e357806318f9bbae146105a25780631ca19f19146105d55780631d2118f91461063457806328fcf4d31461066f5761045f565b806305075d6e146104645780630902f1ac146104ab57806309ac29531461051057806318a4dbca146105555761045f565b3661045f576104223361152f565b61045d5760405162461bcd60e51b81526004018080602001828103825260368152602001806155f06036913960400191505060405180910390fd5b005b600080fd5b34801561047057600080fd5b506104976004803603602081101561048757600080fd5b50356001600160a01b031661156d565b604080519115158252519081900360200190f35b3480156104b757600080fd5b506104c0611595565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104fc5781810151838201526020016104e4565b505050509050019250505060405180910390f35b34801561051c57600080fd5b5061045d6004803603608081101561053357600080fd5b506001600160a01b0381351690602081013590604081013590606001356115f7565b34801561056157600080fd5b506105906004803603604081101561057857600080fd5b506001600160a01b03813581169160200135166116c5565b60408051918252519081900360200190f35b3480156105ae57600080fd5b50610497600480360360208110156105c557600080fd5b50356001600160a01b0316611758565b3480156105e157600080fd5b50610610600480360360408110156105f857600080fd5b506001600160a01b0381358116916020013516611780565b6040518082600281111561062057fe5b60ff16815260200191505060405180910390f35b34801561064057600080fd5b5061045d6004803603604081101561065757600080fd5b506001600160a01b03813581169160200135166117d5565b61045d6004803603606081101561068557600080fd5b506001600160a01b038135811691602081013590911690604001356118bb565b3480156106b157600080fd5b5061045d600480360360408110156106c857600080fd5b506001600160a01b038135169060200135611a86565b3480156106ea57600080fd5b506107116004803603602081101561070157600080fd5b50356001600160a01b0316611b5a565b604080516001600160a01b039092168252519081900360200190f35b34801561073957600080fd5b50610780600480360360a081101561075057600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060810135906080013560ff16611b7b565b6040805192835260208301919091528051918290030190f35b3480156107a557600080fd5b5061045d600480360360208110156107bc57600080fd5b50356001600160a01b0316611c1b565b3480156107d857600080fd5b5061045d600480360360808110156107ef57600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611cf7565b34801561082157600080fd5b506105906004803603602081101561083857600080fd5b50356001600160a01b0316611e51565b34801561085457600080fd5b506104976004803603602081101561086b57600080fd5b50356001600160a01b0316611e6f565b34801561088757600080fd5b506108ae6004803603602081101561089e57600080fd5b50356001600160a01b0316611e97565b6040805164ffffffffff9092168252519081900360200190f35b3480156108d457600080fd5b50610711600480360360208110156108eb57600080fd5b5035611ec3565b3480156108fe57600080fd5b506104976004803603602081101561091557600080fd5b50356001600160a01b0316611eea565b34801561093157600080fd5b506109586004803603602081101561094857600080fd5b50356001600160a01b0316611f12565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561098c57600080fd5b5061045d611f50565b3480156109a157600080fd5b5061045d600480360360408110156109b857600080fd5b506001600160a01b03813516906020013561200f565b3480156109da57600080fd5b50610590600480360360408110156109f157600080fd5b506001600160a01b03813581169160200135166120e3565b348015610a1557600080fd5b5061045d6004803603610120811015610a2d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a08101359060c08101359060e08101359061010001351515612119565b348015610a8057600080fd5b5061071160048036036020811015610a9757600080fd5b50356001600160a01b03166121bb565b348015610ab357600080fd5b5061059060048036036040811015610aca57600080fd5b506001600160a01b03813581169160200135166121dc565b348015610aee57600080fd5b5061045d60048036036040811015610b0557600080fd5b506001600160a01b03813516906020013561220b565b348015610b2757600080fd5b5061045d60048036036020811015610b3e57600080fd5b50356001600160a01b03166122df565b348015610b5a57600080fd5b5061059060048036036020811015610b7157600080fd5b50356001600160a01b03166123c1565b348015610b8d57600080fd5b5061059060048036036020811015610ba457600080fd5b50356001600160a01b03166123df565b61045d60048036036060811015610bca57600080fd5b506001600160a01b03813581169160208101359160409091013516612507565b348015610bf657600080fd5b5061059060048036036020811015610c0d57600080fd5b50356001600160a01b031661261d565b348015610c2957600080fd5b5061059060048036036020811015610c4057600080fd5b50356001600160a01b03166126cd565b348015610c5c57600080fd5b5061049760048036036040811015610c7357600080fd5b506001600160a01b03813581169160200135166126eb565b348015610c9757600080fd5b5061049760048036036020811015610cae57600080fd5b50356001600160a01b0316612724565b348015610cca57600080fd5b50610cf960048036036040811015610ce157600080fd5b506001600160a01b038135811691602001351661274c565b60408051938452602084019290925282820152519081900360600190f35b348015610d2357600080fd5b5061059060048036036020811015610d3a57600080fd5b50356001600160a01b03166127d7565b348015610d5657600080fd5b5061045d60048036036080811015610d6d57600080fd5b506001600160a01b0381351690602081013590604081013590606001356127f5565b348015610d9b57600080fd5b5061045d60048036036020811015610db257600080fd5b50356001600160a01b0316612943565b348015610dce57600080fd5b5061059060048036036060811015610de557600080fd5b506001600160a01b03813581169160208101359091169060400135612a72565b348015610e1157600080fd5b5061045d60048036036080811015610e2857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612b12565b348015610e5c57600080fd5b5061059060048036036020811015610e7357600080fd5b50356001600160a01b0316612b9a565b348015610e8f57600080fd5b5061045d60048036036020811015610ea657600080fd5b50356001600160a01b0316612bb8565b348015610ec257600080fd5b5061045d60048036036020811015610ed957600080fd5b50356001600160a01b0316612ceb565b348015610ef557600080fd5b5061045d60048036036080811015610f0c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612dc7565b348015610f4057600080fd5b5061059060048036036020811015610f5757600080fd5b50356001600160a01b0316612e4f565b348015610f7357600080fd5b5061059060048036036020811015610f8a57600080fd5b50356001600160a01b0316612e6a565b348015610fa657600080fd5b5061059060048036036020811015610fbd57600080fd5b50356001600160a01b0316612ed4565b348015610fd957600080fd5b5061045d60048036036020811015610ff057600080fd5b50356001600160a01b0316612f0d565b34801561100c57600080fd5b506105906004803603602081101561102357600080fd5b50356001600160a01b0316612fcc565b34801561103f57600080fd5b50610711612fea565b34801561105457600080fd5b506105906004803603602081101561106b57600080fd5b50356001600160a01b0316612ff9565b61045d6004803603608081101561109157600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516613017565b3480156110c357600080fd5b5061045d600480360360208110156110da57600080fd5b50356001600160a01b03166131c9565b3480156110f657600080fd5b506105906004803603602081101561110d57600080fd5b50356001600160a01b03166133ce565b34801561112957600080fd5b506107116133ef565b34801561113e57600080fd5b5061045d6004803603604081101561115557600080fd5b506001600160a01b0381351690602001356133fe565b34801561117757600080fd5b5061045d600480360360c081101561118e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a0013515156134d2565b3480156111ce57600080fd5b5061045d600480360360208110156111e557600080fd5b50356001600160a01b0316613541565b34801561120157600080fd5b506109586004803603604081101561121857600080fd5b506001600160a01b0381358116916020013516613623565b34801561123c57600080fd5b506104976004803603606081101561125357600080fd5b506001600160a01b038135811691602081013590911690604001356136d0565b34801561127f57600080fd5b506105906004803603602081101561129657600080fd5b50356001600160a01b0316613766565b3480156112b257600080fd5b50610590600480360360208110156112c957600080fd5b50356001600160a01b031661380a565b3480156112e557600080fd5b5061045d600480360360208110156112fc57600080fd5b50356001600160a01b031661382b565b34801561131857600080fd5b5061045d6004803603604081101561132f57600080fd5b506001600160a01b0381351690602001351515613946565b34801561135357600080fd5b5061045d6004803603602081101561136a57600080fd5b50356001600160a01b0316613a7d565b34801561138657600080fd5b506105906004803603602081101561139d57600080fd5b50356001600160a01b0316613b59565b3480156113b957600080fd5b50611406600480360360c08110156113d057600080fd5b5080356001600160a01b039081169160208101359091169060408101359060608101359060808101359060a0013560ff16613b77565b6040518083600281111561141657fe5b60ff1681526020018281526020019250505060405180910390f35b34801561143d57600080fd5b506105906004803603604081101561145457600080fd5b506001600160a01b0381358116916020013516613c09565b34801561147857600080fd5b5061045d6004803603606081101561148f57600080fd5b506001600160a01b038135811691602081013590911690604001351515613c38565b3480156114bd57600080fd5b5061045d600480360360608110156114d457600080fd5b506001600160a01b03813581169160208101359091169060400135613cca565b34801561150057600080fd5b506105906004803603604081101561151757600080fd5b506001600160a01b0381358116916020013516613df1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061156357508115155b925050505b919050565b6001600160a01b03166000908152603660205260409020600d0154600160e01b900460ff1690565b606060388054806020026020016040519081016040528092919081815260200182805480156115ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115cf575b5050505050905090565b6034546001600160a01b031633146116405760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b61164a8482613e20565b6001600160a01b038416600090815260366020526040902061166b90613f5d565b60006116866116798661380a565b859063ffffffff613ff516565b6001600160a01b03861660009081526036602052604090209091506116b290828563ffffffff61404f16565b6116be858460006140ad565b5050505050565b6001600160a01b038083166000908152603660209081526040808320600c015481516370a0823160e01b8152868616600482015291519394169283926370a082319260248082019391829003018186803b15801561172257600080fd5b505afa158015611736573d6000803e3d6000fd5b505050506040513d602081101561174c57600080fd5b50519150505b92915050565b6001600160a01b03166000908152603660205260409020600d0154600160d01b900460ff1690565b6001600160a01b038082166000908152603760209081526040808320938616835292905290812080546117b7576000915050611752565b60008160030154116117ca5760026117cd565b60015b949350505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561181957600080fd5b505afa15801561182d573d6000803e3d6000fd5b505050506040513d602081101561184357600080fd5b50516001600160a01b03161461188a5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b039182166000908152603660205260409020600d0180546001600160a01b03191691909216179055565b6034546001600160a01b031633146119045760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b61190c614252565b6001600160a01b0316836001600160a01b0316146119815734156119615760405162461bcd60e51b81526004018080602001828103825260328152602001806156866032913960400191505060405180910390fd5b61197c6001600160a01b03841683308463ffffffff61426a16565b611a81565b803410156119c05760405162461bcd60e51b81526004018080602001828103825260358152602001806155bb6035913960400191505060405180910390fd5b80341115611a815760006119da348363ffffffff6142c416565b6040519091506000906001600160a01b0385169061c35090859084818181858888f193505050503d8060008114611a2d576040519150601f19603f3d011682016040523d82523d6000602084013e611a32565b606091505b50509050806116be576040805162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881bd9881155120819985a5b195960521b604482015290519081900360640190fd5b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611aca57600080fd5b505afa158015611ade573d6000803e3d6000fd5b505050506040513d6020811015611af457600080fd5b50516001600160a01b031614611b3b5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03909116600090815260366020526040902060090155565b6001600160a01b039081166000908152603660205260409020600c01541690565b60345460009081906001600160a01b03163314611bc95760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b600080611bd6898961274c565b9250509150611be9898984848b8a614306565b611bf7898989848a8a614335565b611c03896000896140ad565b611c0d898961445a565b999098509650505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611c5f57600080fd5b505afa158015611c73573d6000803e3d6000fd5b505050506040513d6020811015611c8957600080fd5b50516001600160a01b031614611cd05760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60e01b19169055565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611d3b57600080fd5b505afa158015611d4f573d6000803e3d6000fd5b505050506040513d6020811015611d6557600080fd5b50516001600160a01b031614611dac5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b0380851660009081526036602052604080822081516304dda73560e21b8152600481019190915286841660248201526044810186905292841660648401525173__$2ec35834968386f54fa313129cf94664e4$__926313769cd4926084808301939192829003018186803b158015611e2a57600080fd5b505af4158015611e3e573d6000803e3d6000fd5b50505050611e4b846144ec565b50505050565b6001600160a01b031660009081526036602052604090206006015490565b6001600160a01b03166000908152603660205260409020600d0154600160e81b900460ff1690565b6001600160a01b03166000908152603660205260409020600d0154600160a01b900464ffffffffff1690565b60388181548110611ed057fe5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03166000908152603660205260409020600d0154600160c81b900460ff1690565b6001600160a01b03166000908152603660205260409020600b81015460088201546009830154600d909301549193909291600160d01b900460ff1690565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611f9457600080fd5b505afa158015611fa8573d6000803e3d6000fd5b505050506040513d6020811015611fbe57600080fd5b50516001600160a01b0316146120055760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b61200d614590565b565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561205357600080fd5b505afa158015612067573d6000803e3d6000fd5b505050506040513d602081101561207d57600080fd5b50516001600160a01b0316146120c45760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b039091166000908152603660205260409020600b0155565b6001600160a01b0390811660009081526037602090815260408083209490931682529290925290206004015464ffffffffff1690565b6034546001600160a01b031633146121625760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b61216e8988888561462b565b612177886146e4565b6121848988888786614708565b612190898760006140ad565b806121b0576121b08860006121ab888763ffffffff613ff516565b6140ad565b505050505050505050565b6001600160a01b039081166000908152603660205260409020600d01541690565b6001600160a01b0380821660009081526037602090815260408083209386168352929052206003015492915050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561224f57600080fd5b505afa158015612263573d6000803e3d6000fd5b505050506040513d602081101561227957600080fd5b50516001600160a01b0316146122c05760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b039091166000908152603660205260409020600a0155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561232357600080fd5b505afa158015612337573d6000803e3d6000fd5b505050506040513d602081101561234d57600080fd5b50516001600160a01b0316146123945760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60e81b1916600160e81b179055565b6001600160a01b031660009081526036602052604090206002015490565b6001600160a01b0380821660009081526036602090815260408083206035548251631b0c55dd60e11b815292519495919486949190921692633618abba9260048083019392829003018186803b15801561243857600080fd5b505afa15801561244c573d6000803e3d6000fd5b505050506040513d602081101561246257600080fd5b505160058301549091506124fc57806001600160a01b031663bb85c0bb856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124c657600080fd5b505afa1580156124da573d6000803e3d6000fd5b505050506040513d60208110156124f057600080fd5b50519250611568915050565b506005015492915050565b6034546001600160a01b031633146125505760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b80341561258e5760405162461bcd60e51b81526004018080602001828103825260368152602001806155356036913960400191505060405180910390fd5b612596614252565b6001600160a01b0316846001600160a01b0316146125cd576125c86001600160a01b038516828563ffffffff6147ba16565b611e4b565b6040516000906001600160a01b0383169061c35090869084818181858888f193505050503d8060008114611a2d576040519150601f19603f3d011682016040523d82523d6000602084013e611a32565b6001600160a01b038116600090815260366020526040812060048101546126c35780600d0160009054906101000a90046001600160a01b03166001600160a01b03166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b15801561268e57600080fd5b505afa1580156126a2573d6000803e3d6000fd5b505050506040513d60208110156126b857600080fd5b505191506115689050565b6004015492915050565b6001600160a01b031660009081526036602052604090206003015490565b6001600160a01b03908116600090815260376020908152604080832094909316825292909252902060040154600160281b900460ff1690565b6001600160a01b03166000908152603660205260409020600d0154600160d81b900460ff1690565b6001600160a01b038082166000908152603760209081526040808320938616835292905290812080548291829161278d5750600092508291508190506127d0565b80546001600160a01b03871660009081526036602052604081206127b290849061480c565b905081816127c6818363ffffffff6142c416565b9550955095505050505b9250925092565b6001600160a01b03166000908152603660205260409020600b015490565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561283957600080fd5b505afa15801561284d573d6000803e3d6000fd5b505050506040513d602081101561286357600080fd5b50516001600160a01b0316146128aa5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b038416600090815260366020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b15801561292557600080fd5b505af4158015612939573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561298757600080fd5b505afa15801561299b573d6000803e3d6000fd5b505050506040513d60208110156129b157600080fd5b50516001600160a01b0316146129f85760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b158015612a5e57600080fd5b505af41580156116be573d6000803e3d6000fd5b6034546000906001600160a01b03163314612abe5760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b612ac98484846148fe565b612ad484848461494e565b612ae0846000806140ad565b506001600160a01b038083166000908152603760209081526040808320938716835292905220600301545b9392505050565b6034546001600160a01b03163314612b5b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b6001600160a01b0384166000908152603660205260409020612b7c90613f5d565b612b88846000846140ad565b8015611e4b57611e4b84846000613c38565b6001600160a01b031660009081526036602052604090206007015490565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612bfc57600080fd5b505afa158015612c10573d6000803e3d6000fd5b505050506040513d6020811015612c2657600080fd5b50516001600160a01b031614612c6d5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b0381166000908152603660205260409020805415801590612c99575060008160070154115b612cd45760405162461bcd60e51b815260040180806020018281038252602481526020018061577e6024913960400191505060405180910390fd5b600d01805460ff60e01b1916600160e01b17905550565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612d2f57600080fd5b505afa158015612d43573d6000803e3d6000fd5b505050506040513d6020811015612d5957600080fd5b50516001600160a01b031614612da05760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60d81b19169055565b6034546001600160a01b03163314612e105760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b6001600160a01b0384166000908152603660205260409020612e3190613f5d565b612e3d848360006140ad565b8015611e4b57611e4b84846001613c38565b6001600160a01b031660009081526036602052604090205490565b6001600160a01b038116600090815260366020526040812081612e8c826149b7565b905080612e9e57600092505050611568565b6000612ea985613766565b9050612ecb612ebe828463ffffffff613ff516565b839063ffffffff6149d416565b95945050505050565b6001600160a01b0381166000908152603660205260408120612b0b612ef8826149b7565b612f0185613766565b9063ffffffff613ff516565b6000612f17614a10565b60015490915060ff1680612f2e5750612f2e614a15565b80612f3a575060005481115b612f755760405162461bcd60e51b815260040180806020018281038252602e8152602001806157e7602e913960400191505060405180910390fd5b60015460ff16158015612f94576001805460ff19168117905560008290555b603580546001600160a01b0319166001600160a01b038516179055612fb7614590565b8015611a81576001805460ff19169055505050565b6001600160a01b031660009081526036602052604090206001015490565b6035546001600160a01b031681565b6001600160a01b03166000908152603660205260409020600a015490565b6034546001600160a01b031633146130605760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b80613069614252565b6001600160a01b0316856001600160a01b0316146130de5734156130be5760405162461bcd60e51b815260040180806020018281038252605f8152602001806156b8605f913960600191505060405180910390fd5b6130d96001600160a01b03861685838663ffffffff61426a16565b6116be565b8234101561311d5760405162461bcd60e51b81526004018080602001828103825260358152602001806155bb6035913960400191505060405180910390fd5b6040516000906001600160a01b0383169061c35090869084818181858888f193505050503d806000811461316d576040519150601f19603f3d011682016040523d82523d6000602084013e613172565b606091505b50509050806131c1576040805162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881bd9881155120819985a5b195960521b604482015290519081900360640190fd5b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561320d57600080fd5b505afa158015613221573d6000803e3d6000fd5b505050506040513d602081101561323757600080fd5b50516001600160a01b03161461327e5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6038805460009190600019810190811061329457fe5b6000918252602090912001546001600160a01b039081169150821681146132ec5760405162461bcd60e51b815260040180806020018281038252603d815260200180615649603d913960400191505060405180910390fd5b6132f58161380a565b156133315760405162461bcd60e51b81526004018080602001828103825260308152602001806157176030913960400191505060405180910390fd5b6001600160a01b0381166000908152603660205260408120600d81018054600c830180546001600160a01b0319169055600b8301849055838355600783018490556008830184905560098301849055600a90920192909255600168ff00ffff000000000160a01b031916905560388054806133a857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b6001600160a01b0381166000908152603660205260408120612b0b81614a1b565b6034546001600160a01b031681565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561344257600080fd5b505afa158015613456573d6000803e3d6000fd5b505050506040513d602081101561346c57600080fd5b50516001600160a01b0316146134b35760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03909116600090815260366020526040902060080155565b6034546001600160a01b0316331461351b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b61352786868685614a49565b613535868686868686614ab0565b6131c1868560006140ad565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561358557600080fd5b505afa158015613599573d6000803e3d6000fd5b505050506040513d60208110156135af57600080fd5b50516001600160a01b0316146135f65760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60d81b1916600160d81b179055565b6001600160a01b03808316600081815260366020908152604080832094861683526037825280832093835292905290812090918291829182918261366789896116c5565b8254909150613694576004909101549095506000945084935060ff600160281b9091041691506136c79050565b806136a5838563ffffffff61480c16565b6002840154600490940154919850965091945050600160281b900460ff169150505b92959194509250565b6001600160a01b038381166000818152603660209081526040808320948716835260378252808320938352929052908120600d830154919291600160d81b900460ff1661372257600092505050612b0b565b6004810154600160281b900460ff1615806137495750600d820154600160d01b900460ff16155b8061375c575061375986866116c5565b84115b9695505050505050565b600080613771614252565b6001600160a01b0316836001600160a01b03161415613791575047611752565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156137d757600080fd5b505afa1580156137eb573d6000803e3d6000fd5b505050506040513d602081101561380157600080fd5b50519392505050565b6001600160a01b0381166000908152603660205260408120611752906149b7565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561386f57600080fd5b505afa158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b50516001600160a01b0316146138e05760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b038116600090815260366020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b158015612a5e57600080fd5b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561398a57600080fd5b505afa15801561399e573d6000803e3d6000fd5b505050506040513d60208110156139b457600080fd5b50516001600160a01b0316146139fb5760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b0382166000908152603660205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b158015613a6957600080fd5b505af41580156131c1573d6000803e3d6000fd5b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015613ac157600080fd5b505afa158015613ad5573d6000803e3d6000fd5b505050506040513d6020811015613aeb57600080fd5b50516001600160a01b031614613b325760405162461bcd60e51b81526004018080602001828103825260378152602001806157476037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60e81b19169055565b6001600160a01b031660009081526036602052604090206009015490565b60345460009081906001600160a01b03163314613bc55760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b613bd28888888887614b2d565b6000613be089898787614c2c565b9050613bee896000806140ad565b80613bf98a8a61445a565b9250925050965096945050505050565b6001600160a01b0380821660009081526037602090815260408083209386168352929052206001015492915050565b6034546001600160a01b03163314613c815760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b6001600160a01b0391821660009081526037602090815260408083209590941682529390935291206004018054911515600160281b0265ff000000000019909216919091179055565b6034546001600160a01b03163314613d135760405162461bcd60e51b815260040180806020018281038252602a815260200180615815602a913960400191505060405180910390fd5b613d1b614252565b6001600160a01b0316836001600160a01b031614613d4d5761197c6001600160a01b038416838363ffffffff6147ba16565b6040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114613d9d576040519150601f19603f3d011682016040523d82523d6000602084013e613da2565b606091505b5050905080611e4b576040805162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881bd9881155120819985a5b195960521b604482015290519081900360640190fd5b6001600160a01b0380821660009081526037602090815260408083209386168352929052206002015492915050565b60355460408051637744894b60e11b815290516000926001600160a01b03169163ee891296916004808301926020929190829003018186803b158015613e6557600080fd5b505afa158015613e79573d6000803e3d6000fd5b505050506040513d6020811015613e8f57600080fd5b50519050613e9b614252565b6001600160a01b0316836001600160a01b031614613ecd5761197c6001600160a01b038416828463ffffffff6147ba16565b6040516000906001600160a01b0383169084908381818185875af1925050503d8060008114613f18576040519150601f19603f3d011682016040523d82523d6000602084013e613f1d565b606091505b5050905080611e4b5760405162461bcd60e51b81526004018080602001828103825260248152602001806157c36024913960400191505060405180910390fd5b6000613f68826149b7565b90508015613ff1576001820154600d830154600091613f9491600160a01b900464ffffffffff16614d2a565b8354909150613faa90829063ffffffff614d7516565b83556004830154600d840154600091613fd091600160a01b900464ffffffffff16614dad565b9050613fe9846007015482614d7590919063ffffffff16565b600785015550505b5050565b600082820183811015612b0b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061407261405d84614dfc565b61406684614dfc565b9063ffffffff6149d416565b9050600061408e614081614e12565b839063ffffffff613ff516565b85549091506140a490829063ffffffff614d7516565b90945550505050565b6001600160a01b0380841660009081526036602052604081206006810154600d820154919390929182918291166357e37af0896140fd896140f18c612f0185613766565b9063ffffffff6142c416565b88600201548960030154896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b031681526020018581526020018481526020018381526020018281526020019550505050505060606040518083038186803b15801561416a57600080fd5b505afa15801561417e573d6000803e3d6000fd5b505050506040513d606081101561419457600080fd5b50805160208083015160409384015160018a0184905560058a0182905560048a01819055600d8a01805464ffffffffff4216600160a01b0264ffffffffff60a01b19909116179055895460078b015486518681529485018490528487018b905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a25050505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611e4b908590614e22565b6000612b0b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614fda565b6001600160a01b038616600090815260366020526040902061432790613f5d565b6131c1868686868686615071565b6001600160a01b038087166000818152603660209081526040808320948a1683526037825280832093835292905220600183600281111561437257fe5b141561438e576005820154600382015560006001820155614405565b600283600281111561439c57fe5b14156143b8576000600382015560078201546001820155614405565b6040805162461bcd60e51b815260206004820152601860248201527f496e76616c696420626f72726f772072617465206d6f64650000000000000000604482015290519081900360640190fd5b805461441d908690612f01908963ffffffff613ff516565b81556002810154614434908563ffffffff613ff516565b6002820155600401805464ffffffffff19164264ffffffffff1617905550505050505050565b6000806144678484611780565b9050600081600281111561447757fe5b1415614487576000915050611752565b600181600281111561449557fe5b146144bb576001600160a01b0384166000908152603660205260409020600401546117cd565b50506001600160a01b0390811660009081526037602090815260408083209490931682529290925290206003015490565b6000805b60385481101561453957826001600160a01b03166038828154811061451157fe5b6000918252602090912001546001600160a01b0316141561453157600191505b6001016144f0565b5080613ff157603880546001810182556000919091527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561990180546001600160a01b0384166001600160a01b03199091161790555050565b603560009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156145de57600080fd5b505afa1580156145f2573d6000803e3d6000fd5b505050506040513d602081101561460857600080fd5b5051603480546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b0380851660008181526036602090815260408083209488168352603782528083209383529290522061466382613f5d565b600061466f8787611780565b905060015b81600281111561468057fe5b14156146bb57600382015461469e908490869063ffffffff6151cd16565b60038201546146b6908490879063ffffffff61523d16565b6146db565b6146cb838563ffffffff61534816565b6146db838663ffffffff61536916565b50505050505050565b6001600160a01b038116600090815260366020526040902061470590613f5d565b50565b6001600160a01b03808516600090815260376020908152604080832093891683529281528282206036909152919020815461474f9086906140f1908663ffffffff613ff516565b8255600261475d8888611780565b600281111561476857fe5b141561477957600781015460018301555b831561479a576002820154614794908563ffffffff6142c416565b60028301555b50600401805464ffffffffff19164264ffffffffff161790555050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a81908490614e22565b815460009061481d57506000611752565b600061482c8460000154614dfc565b60038501549091506000908190156148605760038601546004870154614859919064ffffffffff16614dad565b90506148a2565b61489f8660010154614066876007015461489389600401548a600d0160149054906101000a900464ffffffffff16614dad565b9063ffffffff614d7516565b90505b6148ba6148b5848363ffffffff614d7516565b6153c1565b86549092508214156148f557600486015464ffffffffff1642146148f55785546148eb90600163ffffffff613ff516565b9350505050611752565b50949350505050565b6001600160a01b0380841660008181526036602090815260408083209487168352603782528083209383529290522061493682613f5d565b60038101546116be908390859063ffffffff6151cd16565b6001600160a01b03808316600090815260376020908152604080832093871683529281528282206036909152919020815461498f908463ffffffff613ff516565b8255600501546003820155600401805464ffffffffff19164264ffffffffff16179055505050565b600061175282600301548360020154613ff590919063ffffffff16565b6000600282046117cd83614a046149f7876b033b2e3c9fd0803ce80000006153da565b849063ffffffff613ff516565b9063ffffffff61543316565b600790565b303b1590565b600080612b0b8360000154614893856001015486600d0160149054906101000a900464ffffffffff16614d2a565b6001600160a01b03808516600081815260366020908152604080832094881683526037825280832093835292905290812090614a858787611780565b6001600160a01b0388166000908152603660205260409020909150614aa990613f5d565b6001614674565b6001600160a01b038087166000818152603660209081526040808320948a16835260378252808320938352929052208054614af79087906140f1908763ffffffff613ff516565b8155600782015460018201558215614b185760006003820181905560018201555b6002810154614434908663ffffffff6142c416565b6001600160a01b03808616600081815260366020908152604080832094891683526037825280832093835292905220614b6582613f5d565b6001836002811115614b7357fe5b1415614ba5576003810154614b8f83878363ffffffff61523d16565b614b9f838663ffffffff61534816565b506146db565b6002836002811115614bb357fe5b1415614bdf576005820154614bce838763ffffffff61536916565b614b9f83868363ffffffff6151cd16565b6040805162461bcd60e51b815260206004820152601a60248201527f496e76616c69642072617465206d6f6465207265636569766564000000000000604482015290519081900360640190fd5b6001600160a01b03808416600090815260376020908152604080832093881683529281528282206036909152918120909190826002856002811115614c6d57fe5b1415614c8e5750600581015460038301556000600183810191909155614cf2565b6001856002811115614c9c57fe5b1415614cbb575060006003830155600781015460018301556002614cf2565b60405162461bcd60e51b815260040180806020018281038252602381526020018061583f6023913960400191505060405180910390fd5b8254614d04908763ffffffff613ff516565b83556004909201805464ffffffffff19164264ffffffffff161790555095945050505050565b600080614d444264ffffffffff851663ffffffff6142c416565b90506000614d5861405d6301e13380614dfc565b9050612ecb614d65614e12565b612f01878463ffffffff614d7516565b6000612b0b6b033b2e3c9fd0803ce8000000614a04614d9a868663ffffffff6153da16565b6b019d971e4fe8401e7400000090613ff5565b600080614dc74264ffffffffff851663ffffffff6142c416565b90506000614ddf856301e1338063ffffffff61543316565b9050612ecb82614df06149f7614e12565b9063ffffffff61547516565b600061175282633b9aca0063ffffffff6153da16565b6b033b2e3c9fd0803ce800000090565b614e34826001600160a01b031661152f565b614e85576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614ec35780518252601f199092019160209182019101614ea4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614f25576040519150601f19603f3d011682016040523d82523d6000602084013e614f2a565b606091505b509150915081614f81576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e4b57808060200190516020811015614f9d57600080fd5b5051611e4b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615862602a913960400191505060405180910390fd5b600081848411156150695760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561502e578181015183820152602001615016565b50505050905090810190601f16801561505b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061507d8787611780565b6001600160a01b038816600090815260366020526040902090915060018260028111156150a657fe5b14156150ef576001600160a01b038088166000908152603760209081526040808320938c1683529290522060038101546150e9908390899063ffffffff61523d16565b50615113565b60028260028111156150fd57fe5b141561511357615113818763ffffffff61536916565b600061512985612f01898963ffffffff613ff516565b9050600184600281111561513957fe5b141561515c576005820154615157908390839063ffffffff6151cd16565b6121b0565b600284600281111561516a57fe5b141561518057615157828263ffffffff61534816565b6040805162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206e657720626f72726f772072617465206d6f646500000000604482015290519081900360640190fd5b60028301546151e2818463ffffffff613ff516565b600285015560006151f68361489386614dfc565b9050600061520b866006015461489385614dfc565b905061522d61521d8760020154614dfc565b614066848463ffffffff613ff516565b8660060181905550505050505050565b8183600201541015615296576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c696420616d6f756e7420746f206465637265617365000000000000604482015290519081900360640190fd5b60028301546152ab818463ffffffff6142c416565b600285018190556152c3575060006006840155611a81565b60006152d28361489386614dfc565b905060006152e7866006015461489385614dfc565b9050818110156153285760405162461bcd60e51b81526004018080602001828103825260238152602001806156266023913960400191505060405180910390fd5b61522d6153388760020154614dfc565b614066838563ffffffff6142c416565b600382015461535d908263ffffffff613ff516565b82600301819055505050565b80826003015410156153ac5760405162461bcd60e51b815260040180806020018281038252605081526020018061556b6050913960600191505060405180910390fd5b600382015461535d908263ffffffff6142c416565b6000631dcd6500612b0b633b9aca00614a048386613ff5565b6000826153e957506000611752565b828202828482816153f657fe5b0414612b0b5760405162461bcd60e51b81526004018080602001828103825260218152602001806157a26021913960400191505060405180910390fd5b6000612b0b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506154cf565b600060028206615491576b033b2e3c9fd0803ce8000000615493565b825b90506002820491505b8115611752576154ac8384614d75565b925060028206156154c4576154c18184614d75565b90505b60028204915061549c565b6000818361551e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561502e578181015183820152602001615016565b50600083858161552a57fe5b049594505050505056fe466565206c69717569646174696f6e20646f6573206e6f74207265717569726520616e79207472616e73666572206f662076616c756554686520616d6f756e742074686174206973206265696e6720737562747261637465642066726f6d20746865207661726961626c6520746f74616c20626f72726f777320697320696e636f727265637454686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d617463684f6e6c7920636f6e7472616374732063616e2073656e6420657468657220746f20746865204c656e64696e6720706f6f6c20636f726554686520616d6f756e747320746f20737562747261637420646f6e2774206d6174636852657365727665206265696e672072656d6f76656420697320646966666572656e74207468616e20746865207265736572766520726571756573746564557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e20436865636b207468652076616c756520617474726962757465206f6620746865207472616e73616374696f6e43616e6e6f742072656d6f7665206120726573657276652077697468206c6971756964697479206465706f73697465645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e666967757261746f7220636f6e74726163745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220746f20746f6b656e206469737472696275746f72206661696c6564436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e7472616374496e76616c696420696e7465726573742072617465206d6f64652072656365697665645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212208f73fe2cd58f9f3014eca62cd814873c7d298fdb08a4945a1f75d602529145e364736f6c63430006080033"; export interface LendingPoolCoreLibraryAddresses { ["__$2ec35834968386f54fa313129cf94664e4$__"]: string; diff --git a/types/LendingPoolDataProviderFactory.ts b/types/LendingPoolDataProviderFactory.ts index a619a242..b0b5a505 100644 --- a/types/LendingPoolDataProviderFactory.ts +++ b/types/LendingPoolDataProviderFactory.ts @@ -502,4 +502,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040526000805534801561001457600080fd5b50613c56806100246000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806376e9d6151161008c578063c3525c2811610066578063c3525c281461059c578063c4d66de8146105ba578063c72c4d10146105fe578063f2f4eb2614610648576100cf565b806376e9d6151461046f5780638daf609f146104f5578063bf92857c14610513576100cf565b806312737c33146100d457806328dd2d011461015e5780632c6d0e9b1461021957806335ea6a75146102a65780633e1501411461038c5780633e44bee814610451575b600080fd5b610148600480360360c08110156100ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610692565b6040518082815260200191505060405180910390f35b6101c06004803603604081101561017457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061096c565b604051808b81526020018a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019a505050505050505050505060405180910390f35b61025b6004803603602081101561022f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114b5565b60405180898152602001888152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019850505050505050505060405180910390f35b6102e8600480360360208110156102bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c7d565b604051808e81526020018d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018264ffffffffff1664ffffffffff1681526020019d505050505050505050505050505060405180910390f35b6103ce600480360360208110156103a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127ce565b604051808981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001851515151581526020018415151515815260200183151515158152602001821515151581526020019850505050505050505060405180910390f35b610459612d39565b6040518082815260200191505060405180910390f35b6104db6004803603606081101561048557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d49565b604051808215151515815260200191505060405180910390f35b6104fd61325c565b6040518082815260200191505060405180910390f35b6105556004803603602081101561052957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613261565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b6105a46132ac565b6040518082815260200191505060405180910390f35b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132b8565b005b6106066134aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106506134d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2353fdc896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561073457600080fd5b505afa158015610748573d6000803e3d6000fd5b505050506040513d602081101561075e57600080fd5b810190808051906020019092919050505090506000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156107db57600080fd5b505afa1580156107ef573d6000803e3d6000fd5b505050506040513d602081101561080557600080fd5b81019080805190602001909291905050509050600061090b83600a0a6108fd6108378b8d6134f690919063ffffffff16565b8573ffffffffffffffffffffffffffffffffffffffff1663b3596f078f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d60208110156108de57600080fd5b810190808051906020019092919050505061357e90919063ffffffff16565b61360490919063ffffffff16565b905060006109598661094b606461093d8661092f8d8f6134f690919063ffffffff16565b6134f690919063ffffffff16565b61357e90919063ffffffff16565b61360490919063ffffffff16565b9050809450505050509695505050505050565b600080600080600080600080600080603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee8d6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a1a57600080fd5b505afa158015610a2e573d6000803e3d6000fd5b505050506040513d6020811015610a4457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ad157600080fd5b505afa158015610ae5573d6000803e3d6000fd5b505050506040513d6020811015610afb57600080fd5b810190808051906020019092919050505099506000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ca19f198e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610be357600080fd5b505afa158015610bf7573d6000803e3d6000fd5b505050506040513d6020811015610c0d57600080fd5b81019080805190602001909291905050509050603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd8e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6060811015610d1d57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505050809b50819a50505060016002811115610d5857fe5b816002811115610d6457fe5b1415610e7f57603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fffab0c8e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d6020811015610e6757600080fd5b81019080805190602001909291905050509650610f7b565b600280811115610e8b57fe5b816002811115610e9757fe5b1415610f7a57603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663906c0a418e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f3c57600080fd5b505afa158015610f50573d6000803e3d6000fd5b505050506040513d6020811015610f6657600080fd5b810190808051906020019092919050505096505b5b806002811115610f8757fe5b9750603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c540148e8e6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561102857600080fd5b505afa15801561103c573d6000803e3d6000fd5b505050506040513d602081101561105257600080fd5b81019080805190602001909291905050509550603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feab31ac8e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561113857600080fd5b505afa15801561114c573d6000803e3d6000fd5b505050506040513d602081101561116257600080fd5b81019080805190602001909291905050509450603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f6ea8d768e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561124857600080fd5b505afa15801561125c573d6000803e3d6000fd5b505050506040513d602081101561127257600080fd5b81019080805190602001909291905050509350603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166366d103f38e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561135857600080fd5b505afa15801561136c573d6000803e3d6000fd5b505050506040513d602081101561138257600080fd5b81019080805190602001909291905050509250603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e3c4f3b8e8e6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561146857600080fd5b505afa15801561147c573d6000803e3d6000fd5b505050506040513d602081101561149257600080fd5b81019080805190602001909291905050509150509295989b9194979a5092959850565b6000806000806000806000806000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561152b57600080fd5b505afa15801561153f573d6000803e3d6000fd5b505050506040513d602081101561155557600080fd5b81019080805190602001909291905050509050611570613b01565b6060603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115da57600080fd5b505afa1580156115ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561161857600080fd5b810190808051604051939291908464010000000082111561163857600080fd5b8382019150602082018581111561164e57600080fd5b825186602082028301116401000000008211171561166b57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156116a2578082015181840152602081019050611687565b50505050905001604052505050905060008090505b8151811015611c09578181815181106116cc57fe5b602002602001015183610140019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e10076ad8461014001518f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060806040518083038186803b1580156117e457600080fd5b505afa1580156117f8573d6000803e3d6000fd5b505050506040513d608081101561180e57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505086604001876060018860e00189610120018415151515815250848152508481525084815250505050506000836040015114801561187e575060008360600151145b1561188857611bfc565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fc526ff8461014001516040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060806040518083038186803b15801561192c57600080fd5b505afa158015611940573d6000803e3d6000fd5b505050506040513d608081101561195657600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050866080018760a0018860c00189610100018415151515815250848152508481525084815250505050508260800151600a0a8360200181815250508373ffffffffffffffffffffffffffffffffffffffff1663b3596f078461014001516040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a4157600080fd5b505afa158015611a55573d6000803e3d6000fd5b505050506040513d6020811015611a6b57600080fd5b8101908080519060200190929190505050836000018181525050600083604001511115611b63576000611ac58460200151611ab78660400151876000015161357e90919063ffffffff16565b61360490919063ffffffff16565b9050611ada818e6134f690919063ffffffff16565b9c508361010001518015611af057508361012001515b15611b6157611b08818d6134f690919063ffffffff16565b9b50611b33611b248560a001518361357e90919063ffffffff16565b8a6134f690919063ffffffff16565b9850611b5e611b4f8560c001518361357e90919063ffffffff16565b896134f690919063ffffffff16565b97505b505b600083606001511115611bfb57611bb3611ba48460200151611b968660600151876000015161357e90919063ffffffff16565b61360490919063ffffffff16565b8b6134f690919063ffffffff16565b9950611bf8611be98460200151611bdb86600001518760e0015161357e90919063ffffffff16565b61360490919063ffffffff16565b8a6134f690919063ffffffff16565b98505b5b80806001019150506116b7565b5060008a11611c19576000611c2d565b611c2c8a8861360490919063ffffffff16565b5b965060008a11611c3e576000611c52565b611c518a8761360490919063ffffffff16565b5b9550611c608a8a8a8961364e565b9450670de0b6b3a764000085109350505050919395975091939597565b6000806000806000806000806000806000806000603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c33cfd908f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d3057600080fd5b505afa158015611d44573d6000803e3d6000fd5b505050506040513d6020811015611d5a57600080fd5b81019080805190602001909291905050509c50603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e24030198f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e0c57600080fd5b505afa158015611e20573d6000803e3d6000fd5b505050506040513d6020811015611e3657600080fd5b81019080805190602001909291905050509b50603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f90fec58f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611ee857600080fd5b505afa158015611efc573d6000803e3d6000fd5b505050506040513d6020811015611f1257600080fd5b81019080805190602001909291905050509a50603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398bd47378f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fc457600080fd5b505afa158015611fd8573d6000803e3d6000fd5b505050506040513d6020811015611fee57600080fd5b81019080805190602001909291905050509950603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c540148e8f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156120a057600080fd5b505afa1580156120b4573d6000803e3d6000fd5b505050506040513d60208110156120ca57600080fd5b81019080805190602001909291905050509850603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663906c0a418f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561217c57600080fd5b505afa158015612190573d6000803e3d6000fd5b505050506040513d60208110156121a657600080fd5b81019080805190602001909291905050509750603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388079d888f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561225857600080fd5b505afa15801561226c573d6000803e3d6000fd5b505050506040513d602081101561228257600080fd5b81019080805190602001909291905050509650603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346bc0f288f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561233457600080fd5b505afa158015612348573d6000803e3d6000fd5b505050506040513d602081101561235e57600080fd5b81019080805190602001909291905050509550603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bfacad848f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561241057600080fd5b505afa158015612424573d6000803e3d6000fd5b505050506040513d602081101561243a57600080fd5b81019080805190602001909291905050509450603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd7fd79a8f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124ec57600080fd5b505afa158015612500573d6000803e3d6000fd5b505050506040513d602081101561251657600080fd5b81019080805190602001909291905050509350603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b701d0938f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156125c857600080fd5b505afa1580156125dc573d6000803e3d6000fd5b505050506040513d60208110156125f257600080fd5b81019080805190602001909291905050509250603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee8f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126a457600080fd5b505afa1580156126b8573d6000803e3d6000fd5b505050506040513d60208110156126ce57600080fd5b81019080805190602001909291905050509150603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634f1446098f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561278057600080fd5b505afa158015612794573d6000803e3d6000fd5b505050506040513d60208110156127aa57600080fd5b8101908080519060200190929190505050905091939597999b9d90929496989a9c50565b600080600080600080600080603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fc526ff8a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060806040518083038186803b15801561287957600080fd5b505afa15801561288d573d6000803e3d6000fd5b505050506040513d60808110156128a357600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250809650819950829a50505050603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e6748488a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561298157600080fd5b505afa158015612995573d6000803e3d6000fd5b505050506040513d60208110156129ab57600080fd5b81019080805190602001909291905050509150603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cf2e6568a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612a5d57600080fd5b505afa158015612a71573d6000803e3d6000fd5b505050506040513d6020811015612a8757600080fd5b81019080805190602001909291905050509250603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305075d6e8a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b3957600080fd5b505afa158015612b4d573d6000803e3d6000fd5b505050506040513d6020811015612b6357600080fd5b81019080805190602001909291905050509050603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c76a6c9c8a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c1557600080fd5b505afa158015612c29573d6000803e3d6000fd5b505050506040513d6020811015612c3f57600080fd5b81019080805190602001909291905050509550603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ae144168a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612cf157600080fd5b505afa158015612d05573d6000803e3d6000fd5b505050506040513d6020811015612d1b57600080fd5b81019080805190602001909291905050509450919395975091939597565b6000670de0b6b3a7640000905090565b6000612d53613b75565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fc526ff866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060806040518083038186803b158015612df257600080fd5b505afa158015612e06573d6000803e3d6000fd5b505050506040513d6080811015612e1c57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909150836000018460a0018561014001831515151581525083815250838152505050508061014001511580612f8b5750603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e3c4f3b86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612f4e57600080fd5b505afa158015612f62573d6000803e3d6000fd5b505050506040513d6020811015612f7857600080fd5b8101908080519060200190929190505050155b15612f9a576001915050613255565b612fa3846114b5565b909192939495965090919250905050846020018560400186606001876080018481525084815250848152508481525050505050600081604001511415612fed576001915050613255565b6000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561305757600080fd5b505afa15801561306b573d6000803e3d6000fd5b505050506040513d602081101561308157600080fd5b810190808051906020019092919050505090506131778260000151600a0a613169868473ffffffffffffffffffffffffffffffffffffffff1663b3596f078b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d602081101561314a57600080fd5b810190808051906020019092919050505061357e90919063ffffffff16565b61360490919063ffffffff16565b8260c001818152505061319b8260c0015183602001516136d590919063ffffffff16565b8260e001818152505060008260e0015114156131bc57600092505050613255565b6132198260e0015161320b6131e28560a001518660c0015161357e90919063ffffffff16565b6131fd8660800151876020015161357e90919063ffffffff16565b6136d590919063ffffffff16565b61360490919063ffffffff16565b8261010001818152505060006132428360e001518460400151856060015186610100015161364e565b9050670de0b6b3a7640000811193505050505b9392505050565b600181565b600080600080600080600080613276896114b5565b50809750819950829850839b50849c50859d50869e505050505050505061329f8787878561371f565b9350919395975091939597565b670de0b6b3a764000081565b60006132c2613909565b9050600160009054906101000a900460ff16806132e357506132e2613912565b5b806132ef575060005481115b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613bf3602e913960400191505060405180910390fd5b6000600160009054906101000a900460ff1615905080156133815760018060006101000a81548160ff021916908315150217905550816000819055505b82603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561340857600080fd5b505afa15801561341c573d6000803e3d6000fd5b505050506040513d602081101561343257600080fd5b8101908080519060200190929190505050603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156134a5576000600160006101000a81548160ff0219169083151502179055505b505050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015613574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561359157600090506135fe565b60008284029050828482816135a257fe5b04146135f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613bd26021913960400191505060405180910390fd5b809150505b92915050565b600061364683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613923565b905092915050565b600080841415613680577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506136cd565b6136ca61369684866134f690919063ffffffff16565b6136bc60646136ae868a61357e90919063ffffffff16565b61360490919063ffffffff16565b6139e990919063ffffffff16565b90505b949350505050565b600061371783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a41565b905092915050565b600080613748606461373a858961357e90919063ffffffff16565b61360490919063ffffffff16565b90508481101561375c576000915050613901565b61378161377285876134f690919063ffffffff16565b826136d590919063ffffffff16565b90506000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbeefc3c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156137ed57600080fd5b505afa158015613801573d6000803e3d6000fd5b505050506040513d602081101561381757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e563a7d033846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156138ac57600080fd5b505afa1580156138c0573d6000803e3d6000fd5b505050506040513d60208110156138d657600080fd5b810190808051906020019092919050505090506138fc81836136d590919063ffffffff16565b925050505b949350505050565b60006001905090565b600080303b90506000811491505090565b600080831182906139cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613994578082015181840152602081019050613979565b50505050905090810190601f1680156139c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816139db57fe5b049050809150509392505050565b600080600283816139f657fe5b049050613a3883613a2a613a1b670de0b6b3a76400008861357e90919063ffffffff16565b846134f690919063ffffffff16565b61360490919063ffffffff16565b91505092915050565b6000838311158290613aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613ab3578082015181840152602081019050613a98565b50505050905090810190601f168015613ae05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6040518061016001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600015158152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212207aca5b55cfd113abe4416a0e2aa8fa7a615a81c63fe2092f39cf00a81fe9ca2c64736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b50612a01806100246000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806376e9d6151161008c578063c3525c2811610066578063c3525c28146103e4578063c4d66de8146103ec578063c72c4d1014610414578063f2f4eb2614610438576100cf565b806376e9d6151461032b5780638daf609f14610375578063bf92857c1461037d576100cf565b806312737c33146100d457806328dd2d011461012a5780632c6d0e9b146101aa57806335ea6a75146102135780633e150141146102ae5780633e44bee814610323575b600080fd5b610118600480360360c08110156100ea57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a00135610440565b60408051918252519081900360200190f35b6101586004803603604081101561014057600080fd5b506001600160a01b0381358116916020013516610633565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152151561012083015251908190036101400190f35b6101d0600480360360208110156101c057600080fd5b50356001600160a01b0316610e1e565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c0840152151560e083015251908190036101000190f35b6102396004803603602081101561022957600080fd5b50356001600160a01b03166113c8565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e08801526101008701526101208601526101408501526001600160a01b031661016084015264ffffffffff1661018083015251908190036101a00190f35b6102d4600480360360208110156102c457600080fd5b50356001600160a01b0316611c6f565b604080519889526020890197909752878701959095526001600160a01b0390931660608701529015156080860152151560a0850152151560c0840152151560e083015251908190036101000190f35b610118611fe2565b6103616004803603606081101561034157600080fd5b506001600160a01b03813581169160208101359091169060400135611fee565b604080519115158252519081900360200190f35b6101186122e9565b6103a36004803603602081101561039357600080fd5b50356001600160a01b03166122ee565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b61011861232f565b6104126004803603602081101561040257600080fd5b50356001600160a01b031661233b565b005b61041c612477565b604080516001600160a01b039092168252519081900360200190f35b61041c612486565b6034546040805163288d4ff760e21b81526001600160a01b03898116600483015291516000938493169163a2353fdc916024808301926020929190829003018186803b15801561048f57600080fd5b505afa1580156104a3573d6000803e3d6000fd5b505050506040513d60208110156104b957600080fd5b505160355460408051631f94a27560e31b815290519293506000926001600160a01b039092169163fca513a891600480820192602092909190829003018186803b15801561050657600080fd5b505afa15801561051a573d6000803e3d6000fd5b505050506040513d602081101561053057600080fd5b5051905060006105eb600a84900a6105df6105518c8c63ffffffff61249516565b856001600160a01b031663b3596f078f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b50519063ffffffff6124f816565b9063ffffffff61255116565b90506000610624866105df60646106188661060c8e8e63ffffffff61249516565b9063ffffffff61249516565b9063ffffffff6124f816565b9b9a5050505050505050505050565b600080600080600080600080600080603460009054906101000a90046001600160a01b03166001600160a01b03166334b3beee8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ad57600080fd5b505afa1580156106c1573d6000803e3d6000fd5b505050506040513d60208110156106d757600080fd5b5051604080516370a0823160e01b81526001600160a01b038e81166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561072357600080fd5b505afa158015610737573d6000803e3d6000fd5b505050506040513d602081101561074d57600080fd5b810190808051906020019092919050505099506000603460009054906101000a90046001600160a01b03166001600160a01b0316631ca19f198e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156107e757600080fd5b505afa1580156107fb573d6000803e3d6000fd5b505050506040513d602081101561081157600080fd5b81019080805190602001909291905050509050603460009054906101000a90046001600160a01b03166001600160a01b0316639fb8afcd8e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060606040518083038186803b1580156108a957600080fd5b505afa1580156108bd573d6000803e3d6000fd5b505050506040513d60608110156108d357600080fd5b5080516020909101519a50985060018160028111156108ee57fe5b14156109ac57603460009054906101000a90046001600160a01b03166001600160a01b0316636fffab0c8e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b15801561097957600080fd5b505afa15801561098d573d6000803e3d6000fd5b505050506040513d60208110156109a357600080fd5b50519650610a5a565b60028160028111156109ba57fe5b1415610a5a57603460009054906101000a90046001600160a01b03166001600160a01b031663906c0a418e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610a2b57600080fd5b505afa158015610a3f573d6000803e3d6000fd5b505050506040513d6020811015610a5557600080fd5b505196505b806002811115610a6657fe5b9750603460009054906101000a90046001600160a01b03166001600160a01b031663c540148e8e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610ad357600080fd5b505afa158015610ae7573d6000803e3d6000fd5b505050506040513d6020811015610afd57600080fd5b81019080805190602001909291905050509550603460009054906101000a90046001600160a01b03166001600160a01b031663feab31ac8e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015610b9557600080fd5b505afa158015610ba9573d6000803e3d6000fd5b505050506040513d6020811015610bbf57600080fd5b81019080805190602001909291905050509450603460009054906101000a90046001600160a01b03166001600160a01b031663f6ea8d768e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015610c5757600080fd5b505afa158015610c6b573d6000803e3d6000fd5b505050506040513d6020811015610c8157600080fd5b81019080805190602001909291905050509350603460009054906101000a90046001600160a01b03166001600160a01b03166366d103f38e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015610d1957600080fd5b505afa158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b81019080805190602001909291905050509250603460009054906101000a90046001600160a01b03166001600160a01b0316639e3c4f3b8e8e6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015610ddb57600080fd5b505afa158015610def573d6000803e3d6000fd5b505050506040513d6020811015610e0557600080fd5b50519a9d999c50979a5095989497939650919450929091565b6000806000806000806000806000603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7a57600080fd5b505afa158015610e8e573d6000803e3d6000fd5b505050506040513d6020811015610ea457600080fd5b50519050610eb06128b9565b60345460408051630240bc6b60e21b815290516060926001600160a01b031691630902f1ac916004808301926000929190829003018186803b158015610ef557600080fd5b505afa158015610f09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610f3257600080fd5b8101908080516040519392919084640100000000821115610f5257600080fd5b908301906020820185811115610f6757600080fd5b8251866020820283011164010000000082111715610f8457600080fd5b82525081516020918201928201910280838360005b83811015610fb1578181015183820152602001610f99565b50505050905001604052505050905060008090505b815181101561135c57818181518110610fdb57fe5b60200260200101518361014001906001600160a01b031690816001600160a01b031681525050603460009054906101000a90046001600160a01b03166001600160a01b031663e10076ad8461014001518f6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b031681526020019250505060806040518083038186803b15801561108b57600080fd5b505afa15801561109f573d6000803e3d6000fd5b505050506040513d60808110156110b557600080fd5b5080516020820151604080840151606094850151151561012089015260e0880152928601529084018190521580156110ef57506060830151155b156110f957611354565b60345461014084015160408051635fc526ff60e01b81526001600160a01b03928316600482015290519190921691635fc526ff916024808301926080929190829003018186803b15801561114c57600080fd5b505afa158015611160573d6000803e3d6000fd5b505050506040513d608081101561117657600080fd5b508051602080830151604080850151606090950151151561010089015260c088019490945260a087015260808601829052600a9190910a85820152610140850151825163b3596f0760e01b81526001600160a01b03918216600482015292519087169263b3596f07926024808301939192829003018186803b1580156111fb57600080fd5b505afa15801561120f573d6000803e3d6000fd5b505050506040513d602081101561122557600080fd5b505183526040830151156112ec57600061125884602001516105df866040015187600001516124f890919063ffffffff16565b905061126a8d8263ffffffff61249516565b9c50836101000151801561128057508361012001515b156112ea576112958c8263ffffffff61249516565b9b506112be6112b18560a00151836124f890919063ffffffff16565b8a9063ffffffff61249516565b98506112e76112da8560c00151836124f890919063ffffffff16565b899063ffffffff61249516565b97505b505b6060830151156113545761132961131c84602001516105df866060015187600001516124f890919063ffffffff16565b8b9063ffffffff61249516565b99506113516112b184602001516105df86600001518760e001516124f890919063ffffffff16565b98505b600101610fc6565b5060008a1161136c57600061137c565b61137c878b63ffffffff61255116565b965060008a1161138d57600061139d565b61139d868b63ffffffff61255116565b95506113ab8a8a8a89612593565b9450670de0b6b3a764000085109350505050919395975091939597565b6000806000806000806000806000806000806000603460009054906101000a90046001600160a01b03166001600160a01b031663c33cfd908f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561144757600080fd5b505afa15801561145b573d6000803e3d6000fd5b505050506040513d602081101561147157600080fd5b81019080805190602001909291905050509c50603460009054906101000a90046001600160a01b03166001600160a01b031663e24030198f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156114ef57600080fd5b505afa158015611503573d6000803e3d6000fd5b505050506040513d602081101561151957600080fd5b81019080805190602001909291905050509b50603460009054906101000a90046001600160a01b03166001600160a01b0316637f90fec58f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561159757600080fd5b505afa1580156115ab573d6000803e3d6000fd5b505050506040513d60208110156115c157600080fd5b81019080805190602001909291905050509a50603460009054906101000a90046001600160a01b03166001600160a01b03166398bd47378f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561163f57600080fd5b505afa158015611653573d6000803e3d6000fd5b505050506040513d602081101561166957600080fd5b81019080805190602001909291905050509950603460009054906101000a90046001600160a01b03166001600160a01b031663c540148e8f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156116e757600080fd5b505afa1580156116fb573d6000803e3d6000fd5b505050506040513d602081101561171157600080fd5b81019080805190602001909291905050509850603460009054906101000a90046001600160a01b03166001600160a01b031663906c0a418f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561178f57600080fd5b505afa1580156117a3573d6000803e3d6000fd5b505050506040513d60208110156117b957600080fd5b81019080805190602001909291905050509750603460009054906101000a90046001600160a01b03166001600160a01b03166388079d888f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561183757600080fd5b505afa15801561184b573d6000803e3d6000fd5b505050506040513d602081101561186157600080fd5b81019080805190602001909291905050509650603460009054906101000a90046001600160a01b03166001600160a01b03166346bc0f288f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156118df57600080fd5b505afa1580156118f3573d6000803e3d6000fd5b505050506040513d602081101561190957600080fd5b81019080805190602001909291905050509550603460009054906101000a90046001600160a01b03166001600160a01b031663bfacad848f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561198757600080fd5b505afa15801561199b573d6000803e3d6000fd5b505050506040513d60208110156119b157600080fd5b81019080805190602001909291905050509450603460009054906101000a90046001600160a01b03166001600160a01b031663bd7fd79a8f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611a2f57600080fd5b505afa158015611a43573d6000803e3d6000fd5b505050506040513d6020811015611a5957600080fd5b81019080805190602001909291905050509350603460009054906101000a90046001600160a01b03166001600160a01b031663b701d0938f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611ad757600080fd5b505afa158015611aeb573d6000803e3d6000fd5b505050506040513d6020811015611b0157600080fd5b81019080805190602001909291905050509250603460009054906101000a90046001600160a01b03166001600160a01b03166334b3beee8f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611b7f57600080fd5b505afa158015611b93573d6000803e3d6000fd5b505050506040513d6020811015611ba957600080fd5b81019080805190602001909291905050509150603460009054906101000a90046001600160a01b03166001600160a01b0316634f1446098f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d6020811015611c5157600080fd5b50519c9e9b9d50999b989a9799509597949693959294919390929190565b600080600080600080600080603460009054906101000a90046001600160a01b03166001600160a01b0316635fc526ff8a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060806040518083038186803b158015611ce657600080fd5b505afa158015611cfa573d6000803e3d6000fd5b505050506040513d6080811015611d1057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505090919250809650819950829a50505050603460009054906101000a90046001600160a01b03166001600160a01b0316639e6748488a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611dba57600080fd5b505afa158015611dce573d6000803e3d6000fd5b505050506040513d6020811015611de457600080fd5b505160345460408051632e79732b60e11b81526001600160a01b038d811660048301529151939550911691635cf2e65691602480820192602092909190829003018186803b158015611e3557600080fd5b505afa158015611e49573d6000803e3d6000fd5b505050506040513d6020811015611e5f57600080fd5b505160345460408051630283aeb760e11b81526001600160a01b038d8116600483015291519396509116916305075d6e91602480820192602092909190829003018186803b158015611eb057600080fd5b505afa158015611ec4573d6000803e3d6000fd5b505050506040513d6020811015611eda57600080fd5b5051603454604080516331da9b2760e21b81526001600160a01b038d81166004830152915193945091169163c76a6c9c91602480820192602092909190829003018186803b158015611f2b57600080fd5b505afa158015611f3f573d6000803e3d6000fd5b505050506040513d6020811015611f5557600080fd5b505160345460408051633570a20b60e11b81526001600160a01b038d811660048301529151939950911691636ae1441691602480820192602092909190829003018186803b158015611fa657600080fd5b505afa158015611fba573d6000803e3d6000fd5b505050506040513d6020811015611fd057600080fd5b50519799969850949695929491935091565b670de0b6b3a764000090565b6000611ff8612920565b60345460408051635fc526ff60e01b81526001600160a01b03888116600483015291519190921691635fc526ff916024808301926080929190829003018186803b15801561204557600080fd5b505afa158015612059573d6000803e3d6000fd5b505050506040513d608081101561206f57600080fd5b508051604082015160609092015115801561014085015260a0840192909252825280612119575060345460408051639e3c4f3b60e01b81526001600160a01b038881166004830152878116602483015291519190921691639e3c4f3b916044808301926020929190829003018186803b1580156120eb57600080fd5b505afa1580156120ff573d6000803e3d6000fd5b505050506040513d602081101561211557600080fd5b5051155b156121285760019150506122e2565b61213184610e1e565b505060808701525060608501526040840181905260208401919091521515905061215f5760019150506122e2565b60355460408051631f94a27560e31b815290516000926001600160a01b03169163fca513a8916004808301926020929190829003018186803b1580156121a457600080fd5b505afa1580156121b8573d6000803e3d6000fd5b505050506040513d60208110156121ce57600080fd5b505182516040805163b3596f0760e01b81526001600160a01b038a81166004830152915193945061223093600a9390930a926105df9289929087169163b3596f0791602480820192602092909190829003018186803b1580156105a757600080fd5b60c08301819052602083015161224b9163ffffffff6125e216565b60e08301819052612261576000925050506122e2565b6122ac8260e001516105df6122878560a001518660c001516124f890919063ffffffff16565b608086015160208701516122a09163ffffffff6124f816565b9063ffffffff6125e216565b610100830181905260e0830151604084015160608501516000936122d293929190612593565b670de0b6b3a76400001093505050505b9392505050565b600181565b60008060008060008060008061230389610e1e565b50959d50939b5091995097509094509250905061232287878785612624565b9350919395975091939597565b670de0b6b3a764000081565b6000612345612786565b60015490915060ff168061235c575061235c61278b565b80612368575060005481115b6123a35760405162461bcd60e51b815260040180806020018281038252602e81526020018061299e602e913960400191505060405180910390fd5b60015460ff161580156123c2576001805460ff19168117905560008290555b603580546001600160a01b0319166001600160a01b0385169081179091556040805163076b7fbb60e51b8152905163ed6ff76091600480820192602092909190829003018186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d602081101561244057600080fd5b5051603480546001600160a01b0319166001600160a01b039092169190911790558015612472576001805460ff191690555b505050565b6035546001600160a01b031681565b6034546001600160a01b031681565b6000828201838110156124ef576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082612507575060006124f2565b8282028284828161251457fe5b04146124ef5760405162461bcd60e51b815260040180806020018281038252602181526020018061297d6021913960400191505060405180910390fd5b60006124ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612791565b6000836125a357506000196125da565b6125d76125b6858563ffffffff61249516565b6125cb60646105df898763ffffffff6124f816565b9063ffffffff61283316565b90505b949350505050565b60006124ef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061285f565b60008061263c60646105df888663ffffffff6124f816565b9050848110156126505760009150506125da565b612670612663868663ffffffff61249516565b829063ffffffff6125e216565b90506000603560009054906101000a90046001600160a01b03166001600160a01b031663fbeefc3c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c257600080fd5b505afa1580156126d6573d6000803e3d6000fd5b505050506040513d60208110156126ec57600080fd5b505160408051630e563a7d60e41b81523360048201526024810185905290516001600160a01b039092169163e563a7d091604480820192602092909190829003018186803b15801561273d57600080fd5b505afa158015612751573d6000803e3d6000fd5b505050506040513d602081101561276757600080fd5b5051905061277b828263ffffffff6125e216565b979650505050505050565b600190565b303b1590565b6000818361281d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127e25781810151838201526020016127ca565b50505050905090810190601f16801561280f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161282957fe5b0495945050505050565b6000600282046125da836105df61285287670de0b6b3a76400006124f8565b849063ffffffff61249516565b600081848411156128b15760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156127e25781810151838201526020016127ca565b505050900390565b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160006001600160a01b031681525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220a4dbfaa2c0548ae867892ef5a58f2d1219607112107d4b908af6e8a55cf13d9764736f6c63430006080033"; diff --git a/types/LendingPoolFactory.ts b/types/LendingPoolFactory.ts index c47f678e..6de90dca 100644 --- a/types/LendingPoolFactory.ts +++ b/types/LendingPoolFactory.ts @@ -1052,4 +1052,4 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b5060016000806101000a81548160ff02191690831515021790555061715580620000406000396000f3fe6080604052600436106101295760003560e01c80638afaff02116100ab578063c72c4d101161006f578063c72c4d1014610934578063c858f5f91461098b578063cd112382146109fe578063d0fc81d214610a6f578063d2d0e06614610a9a578063f2f4eb2614610af657610129565b80638afaff02146107465780639895e3d814610771578063b334ed86146107f6578063bf92857c1461084d578063c4d66de8146108e357610129565b806348ca1300116100f257806348ca1300146104c157806358707e06146105125780635a3b74b9146105695780635ceae9c4146105c65780635cffe9de1461063457610129565b8062a718a91461012e5780630902f1ac146101c857806328dd2d011461023457806335ea6a75146102fc5780633e150141146103ef575b600080fd5b6101c6600480360360a081101561014457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050610b4d565b005b3480156101d457600080fd5b506101dd611149565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610220578082015181840152602081019050610205565b505050509050019250505060405180910390f35b34801561024057600080fd5b506102a36004803603604081101561025757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128d565b604051808b81526020018a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019a505050505050505050505060405180910390f35b34801561030857600080fd5b5061034b6004803603602081101561031f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611429565b604051808e81526020018d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018264ffffffffff1664ffffffffff1681526020019d505050505050505050505050505060405180910390f35b3480156103fb57600080fd5b5061043e6004803603602081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115bc565b604051808981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001851515151581526020018415151515815260200183151515158152602001821515151581526020019850505050505050505060405180910390f35b3480156104cd57600080fd5b50610510600480360360208110156104e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611705565b005b34801561051e57600080fd5b50610527611dd1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057557600080fd5b506105c46004803603604081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611df7565b005b610632600480360360608110156105dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612355565b005b34801561064057600080fd5b506107446004803603608081101561065757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106be57600080fd5b8201836020820111156106d057600080fd5b803590602001918460018302840111640100000000831117156106f257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613156565b005b34801561075257600080fd5b5061075b613a83565b6040518082815260200191505060405180910390f35b34801561077d57600080fd5b506107f46004803603608081101561079457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050613a88565b005b34801561080257600080fd5b5061080b614056565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561085957600080fd5b5061089c6004803603602081101561087057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061407c565b604051808981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060405180910390f35b3480156108ef57600080fd5b506109326004803603602081101561090657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506141c5565b005b34801561094057600080fd5b50610949614683565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561099757600080fd5b506109fc600480360360808110156109ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803561ffff1690602001909291905050506146a9565b005b348015610a0a57600080fd5b50610a6d60048036036040811015610a2157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061555b565b005b348015610a7b57600080fd5b50610a84615ebe565b6040518082815260200191505060405180910390f35b610af460048036036060811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803561ffff169060200190929190505050615ee2565b005b348015610b0257600080fd5b50610b0b616463565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900460ff16610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555083610bf281616489565b85610bfc81616489565b6000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635834eb9a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6657600080fd5b505afa158015610c7a573d6000803e3d6000fd5b505050506040513d6020811015610c9057600080fd5b81019080805190602001909291905050509050600060608273ffffffffffffffffffffffffffffffffffffffff168a8a8a8a8a604051602401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001955050505050506040516020818303038152906040527ea718a9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610e265780518252602082019150602081019050602083039250610e03565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e86576040519150601f19603f3d011682016040523d82523d6000602084013e610e8b565b606091505b509150915081610f03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4c69717569646174696f6e2063616c6c206661696c656400000000000000000081525060200191505060405180910390fd5b60006060828060200190516040811015610f1c57600080fd5b810190808051906020019092919080516040519392919084640100000000821115610f4657600080fd5b83820191506020820185811115610f5c57600080fd5b8251866001820283011164010000000082111715610f7957600080fd5b8083526020830192505050908051906020019080838360005b83811015610fad578082015181840152602081019050610f92565b50505050905090810190601f168015610fda5780820380516001836020036101000a031916815260200191505b506040525050509150915060008214611121578060405160200180807f4c69717569646174696f6e206661696c65643a2000000000000000000000000081525060140182805190602001908083835b6020831061104c5780518252602082019150602081019050602083039250611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110e65780820151818401526020810190506110cb565b50505050905090810190601f1680156111135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050505060016000806101000a81548160ff0219169083151502179055505050505050565b6060603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156111f157600080fd5b810190808051604051939291908464010000000082111561121157600080fd5b8382019150602082018581111561122757600080fd5b825186602082028301116401000000008211171561124457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561127b578082015181840152602081019050611260565b50505050905001604052505050905090565b600080600080600080600080600080603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328dd2d018d8d6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b15801561137057600080fd5b505afa158015611384573d6000803e3d6000fd5b505050506040513d61014081101561139b57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505099509950995099509950995099509950995099509295989b9194979a5092959850565b6000806000806000806000806000806000806000603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166335ea6a758f6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101a06040518083038186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d6101a081101561150857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509c509c509c509c509c509c509c509c509c509c509c509c509c5091939597999b9d90929496989a9c50565b600080600080600080600080603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e1501418a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561166857600080fd5b505afa15801561167c573d6000803e3d6000fd5b505050506040513d61010081101561169357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505097509750975097509750975097509750919395975091939597565b6000809054906101000a900460ff16611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550806117aa81616489565b816117b4816165bb565b6000806000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd87336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b15801561188c57600080fd5b505afa1580156118a0573d6000803e3d6000fd5b505050506040513d60608110156118b657600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925092506000821161193a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180616e536037913960400191505060405180910390fd5b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ca19f1988336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611a0f57600080fd5b505afa158015611a23573d6000803e3d6000fd5b505050506040513d6020811015611a3957600080fd5b81019080805190602001909291905050509050600280811115611a5857fe5b816002811115611a6457fe5b1415611bd657603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2174d868833866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b158015611b4557600080fd5b505afa158015611b59573d6000803e3d6000fd5b505050506040513d6020811015611b6f57600080fd5b8101908080519060200190929190505050611bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806170886030913960400191505060405180910390fd5b5b600080603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f61483118a33898989896040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001826002811115611cb257fe5b60ff16815260200196505050505050506040805180830381600087803b158015611cdb57600080fd5b505af1158015611cef573d6000803e3d6000fd5b505050506040513d6040811015611d0557600080fd5b810190808051906020019092919080519060200190929190505050915091503373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fb3e2773606abfd36b5bd91394b3a54d1398336c65005baf7bf7a05efeffaf75b846002811115611d7f57fe5b8488426040518085815260200184815260200183815260200182815260200194505050505060405180910390a3505050505050505060016000806101000a81548160ff02191690831515021790555050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900460ff16611e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555081611e9c81616489565b82611ea6816165bb565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318a4dbca86336040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611f7b57600080fd5b505afa158015611f8f573d6000803e3d6000fd5b505050506040513d6020811015611fa557600080fd5b8101908080519060200190929190505050905060008111612011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616ff9602a913960400191505060405180910390fd5b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e9d6158633846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d602081101561211657600080fd5b810190808051906020019092919050505061217c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180616cf06030913960400191505060405180910390fd5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa51854c8633876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019350505050600060405180830381600087803b15801561225d57600080fd5b505af1158015612271573d6000803e3d6000fd5b5050505083156122d9573373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a3612334565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a35b50505060016000806101000a81548160ff0219169083151502179055505050565b6000809054906101000a900460ff166123d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550826123fa81616489565b82612404816166ee565b61240c616b3c565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd87866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b1580156124df57600080fd5b505afa1580156124f3573d6000803e3d6000fd5b505050506040513d606081101561250957600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050836000018460200185604001838152508381525083815250505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feab31ac87866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d602081101561264657600080fd5b81019080805190602001909291905050508160e00181815250508573ffffffffffffffffffffffffffffffffffffffff1661267f616767565b73ffffffffffffffffffffffffffffffffffffffff16148160600190151590811515815250506000816020015111612702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061705f6029913960400191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8514158061275c57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6127b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260448152602001806170b86044913960600191505060405180910390fd5b6127cc8160e00151826020015161678390919063ffffffff16565b8160800181815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85141580156128085750806080015185105b1561281857848160800181815250505b8060600151158061282d575080608001513410155b612882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180616da96028913960400191505060405180910390fd5b8060e00151816080015111612c3457603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da12d96f878660008560800151866040015160006040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001821515151581526020019650505050505050600060405180830381600087803b15801561299457600080fd5b505af11580156129a8573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7d1423782606001516129fa576000612a00565b82608001515b88878560800151603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015612a6f57600080fd5b505afa158015612a83573d6000803e3d6000fd5b505050506040513d6020811015612a9957600080fd5b81019080805190602001909291905050506040518663ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019450505050506000604051808303818588803b158015612b7857600080fd5b505af1158015612b8c573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb718f0b14f03d8c3adf35b15e3da52421b042ac879e5a689011a8b1e0036773d600085608001518660400151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a450613135565b612c4f8160e00151826080015161680b90919063ffffffff16565b8160a0018181525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da12d96f87868460a001518560e0015186604001518760a001518860200151146040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001838152602001821515151581526020019650505050505050600060405180830381600087803b158015612d6757600080fd5b505af1158015612d7b573d6000803e3d6000fd5b5050505060008160e001511115612f7257603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7d142378260600151612dda576000612de0565b8260e001515b88878560e00151603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015612e4f57600080fd5b505afa158015612e63573d6000803e3d6000fd5b505050506040513d6020811015612e7957600080fd5b81019080805190602001909291905050506040518663ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019450505050506000604051808303818588803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b50505050505b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fcf4d38260600151612fc0576000612fd8565b612fd78360e001513461680b90919063ffffffff16565b5b88338560a001516040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303818588803b15801561307a57600080fd5b505af115801561308e573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb718f0b14f03d8c3adf35b15e3da52421b042ac879e5a689011a8b1e0036773d8460a001518560e001518660400151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a4505b505060016000806101000a81548160ff021916908315150217905550505050565b6000809054906101000a900460ff166131d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff021916908315150217905550826131fb81616489565b82613205816166ee565b600061320f616767565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614613320578573ffffffffffffffffffffffffffffffffffffffff166370a08231603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156132e057600080fd5b505afa1580156132f4573d6000803e3d6000fd5b505050506040513d602081101561330a57600080fd5b810190808051906020019092919050505061335b565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16315b9050848110156133b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616c4d6031913960400191505060405180910390fd5b600080603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663586feb406040518163ffffffff1660e01b8152600401604080518083038186803b15801561342057600080fd5b505afa158015613434573d6000803e3d6000fd5b505050506040513d604081101561344a57600080fd5b810190808051906020019092919080519060200190929190505050915091506000613492612710613484858b61685590919063ffffffff16565b6168db90919063ffffffff16565b905060006134bd6127106134af858561685590919063ffffffff16565b6168db90919063ffffffff16565b90506000821180156134cf5750600081115b613524576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180616f606032913960400191505060405180910390fd5b60008b905060008c9050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a58d838e6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561360b57600080fd5b505af115801561361f573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663ee8725588d8d878e6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156136d05780820151818401526020810190506136b5565b50505050905090810190601f1680156136fd5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561371f57600080fd5b505af1158015613733573d6000803e3d6000fd5b505050506000613741616767565b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614613852578c73ffffffffffffffffffffffffffffffffffffffff166370a08231603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561381257600080fd5b505afa158015613826573d6000803e3d6000fd5b505050506040513d602081101561383c57600080fd5b810190808051906020019092919050505061388d565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16315b90506138a2858961678390919063ffffffff16565b81146138f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180616e216032913960400191505060405180910390fd5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309ac29538e8a61394c888a61680b90919063ffffffff16565b886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b1580156139c457600080fd5b505af11580156139d8573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558e8888426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050505050505060016000806101000a81548160ff02191690831515021790555050505050565b600281565b6000809054906101000a900460ff16613b09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555083603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613bc357600080fd5b505afa158015613bd7573d6000803e3d6000fd5b505050506040513d6020811015613bed57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b815260200180616ebe604b913960600191505060405180910390fd5b84613c8b81616489565b83613c95816166ee565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2403019896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613d3657600080fd5b505afa158015613d4a573d6000803e3d6000fd5b505050506040513d6020811015613d6057600080fd5b8101908080519060200190929190505050905085811015613dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616d446031913960400191505060405180910390fd5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afcdbea389898960008a146040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015613eb857600080fd5b505af1158015613ecc573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a58989896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015613fad57600080fd5b505af1158015613fc1573d6000803e3d6000fd5b505050508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68842604051808381526020018281526020019250505060405180910390a35050505060016000806101000a81548160ff02191690831515021790555050505050565b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600080603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf92857c8a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561412857600080fd5b505afa15801561413c573d6000803e3d6000fd5b505050506040513d61010081101561415357600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505097509750975097509750975097509750919395975091939597565b60006141cf616925565b9050600260009054906101000a900460ff16806141f057506141ef61692e565b5b806141fc575060015481115b614251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616f92602e913960400191505060405180910390fd5b6000600260009054906101000a900460ff16159050801561428f576001600260006101000a81548160ff021916908315150217905550816001819055505b82603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561433857600080fd5b505afa15801561434c573d6000803e3d6000fd5b505050506040513d602081101561436257600080fd5b8101908080519060200190929190505050603660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f58b80d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561441b57600080fd5b505afa15801561442f573d6000803e3d6000fd5b505050506040513d602081101561444557600080fd5b8101908080519060200190929190505050603760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304061d8e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156144fe57600080fd5b505afa158015614512573d6000803e3d6000fd5b505050506040513d602081101561452857600080fd5b8101908080519060200190929190505050603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbeefc3c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156145e157600080fd5b505afa1580156145f5573d6000803e3d6000fd5b505050506040513d602081101561460b57600080fd5b8101908080519060200190929190505050603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561467e576000600260006101000a81548160ff0219169083151502179055505b505050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900460ff1661472a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055508361474e81616489565b84614758816165bb565b84614762816166ee565b61476a616b83565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cf2e656896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561480957600080fd5b505afa15801561481d573d6000803e3d6000fd5b505050506040513d602081101561483357600080fd5b8101908080519060200190929190505050614899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180616d206024913960400191505060405180910390fd5b856002808111156148a657fe5b14806148bd575085600160028111156148bb57fe5b145b614912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180616c7e6023913960400191505060405180910390fd5b85600281111561491e57fe5b816101c00190600281111561492f57fe5b9081600281111561493c57fe5b81525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2403019896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156149df57600080fd5b505afa1580156149f3573d6000803e3d6000fd5b505050506040513d6020811015614a0957600080fd5b810190808051906020019092919050505081610160018181525050868161016001511015614a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616f2a6036913960400191505060405180910390fd5b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c6d0e9b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b158015614b2257600080fd5b505afa158015614b36573d6000803e3d6000fd5b505050506040513d610100811015614b4d57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192939495965090508660c0018760e0018861010001896020018a6040018b6101e0018615151515815250868152508681525086815250868152508681525050505050505060008160c0015111614c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f6c6c61746572616c2062616c616e63652069732030000000000081525060200191505060405180910390fd5b806101e0015115614cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180616c0e603f913960400191505060405180910390fd5b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e563a7d033896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015614d6757600080fd5b505afa158015614d7b573d6000803e3d6000fd5b505050506040513d6020811015614d9157600080fd5b81019080805190602001909291905050508160600181815250506000816060015111614e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616ca16021913960400191505060405180910390fd5b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312737c33898984606001518560e0015186610100015187602001516040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060206040518083038186803b158015614ee057600080fd5b505afa158015614ef4573d6000803e3d6000fd5b505050506040513d6020811015614f0a57600080fd5b81019080805190602001909291905050508160a00181815250508060c001518160a001511115614f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180616e8a6034913960400191505060405180910390fd5b60016002811115614f9257fe5b816101c001516002811115614fa357fe5b141561524657603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2174d8689338a6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561508457600080fd5b505afa158015615098573d6000803e3d6000fd5b505050506040513d60208110156150ae57600080fd5b8101908080519060200190929190505050615114576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180616fc06039913960400191505060405180910390fd5b6000603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d6b725ac6040518163ffffffff1660e01b815260040160206040518083038186803b15801561517e57600080fd5b505afa158015615192573d6000803e3d6000fd5b505050506040513d60208110156151a857600080fd5b8101908080519060200190929190505050905060006151e860646151da8486610160015161685590919063ffffffff16565b6168db90919063ffffffff16565b905080891115615243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180617023603c913960400191505060405180910390fd5b50505b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166337ac6fe489338a8560600151866101c001516040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600281111561532157fe5b60ff168152602001955050505050506040805180830381600087803b15801561534957600080fd5b505af115801561535d573d6000803e3d6000fd5b505050506040513d604081101561537357600080fd5b810190808051906020019092919080519060200190929190505050826101a001836101200182815250828152505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a589338a6040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561547f57600080fd5b505af1158015615493573d6000803e3d6000fd5b505050508461ffff163373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f1e77446728e5558aa1b7e81e0cdab9cc1b075ba893b740600c76a315c2caa5538a8a866101a0015187606001518861012001514260405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a45050505060016000806101000a81548160ff02191690831515021790555050505050565b6000809054906101000a900460ff166155dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055508161560081616489565b600080603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd86866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b1580156156d657600080fd5b505afa1580156156ea573d6000803e3d6000fd5b505050506040513d606081101561570057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050925092505060008211615783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616cc2602e913960400191505060405180910390fd5b6001600281111561579057fe5b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ca19f1987876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561586357600080fd5b505afa158015615877573d6000803e3d6000fd5b505050506040513d602081101561588d57600080fd5b810190808051906020019092919050505060028111156158a957fe5b146158ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180616d756034913960400191505060405180910390fd5b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636fffab0c87876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156159d457600080fd5b505afa1580156159e8573d6000803e3d6000fd5b505050506040513d60208110156159fe57600080fd5b810190808051906020019092919050505090506000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c540148e886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015615ab257600080fd5b505afa158015615ac6573d6000803e3d6000fd5b505050506040513d6020811015615adc57600080fd5b810190808051906020019092919050505090506000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388079d88896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015615b9057600080fd5b505afa158015615ba4573d6000803e3d6000fd5b505050506040513d6020811015615bba57600080fd5b810190808051906020019092919050505090506000615c9d615c8e603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166346f4f8d16040518163ffffffff1660e01b815260040160206040518083038186803b158015615c3d57600080fd5b505afa158015615c51573d6000803e3d6000fd5b505050506040513d6020811015615c6757600080fd5b8101908080519060200190929190505050615c8061693f565b61678390919063ffffffff16565b8361695390919063ffffffff16565b905082841080615cac57508084115b15615e4e576000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af825b078b8b896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015615d9057600080fd5b505af1158015615da4573d6000803e3d6000fd5b505050506040513d6020811015615dba57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f5050ad184862424ee0852d1838d355ad65bed1e5e6da67ac9a2dac1922677f6083894260405180848152602001838152602001828152602001935050505060405180910390a350505050505050615e9f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180616df2602f913960400191505060405180910390fd5b5060016000806101000a81548160ff0219169083151502179055505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6000809054906101000a900460ff16615f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60008060006101000a81548160ff02191690831515021790555082615f8781616489565b83615f91816165bb565b83615f9b816166ee565b6000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561603c57600080fd5b505afa158015616050573d6000803e3d6000fd5b505050506040513d602081101561606657600080fd5b810190808051906020019092919050505090506000808273ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156160f957600080fd5b505afa15801561610d573d6000803e3d6000fd5b505050506040513d602081101561612357600080fd5b8101908080519060200190929190505050149050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bcd6ffa489338a856040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561622057600080fd5b505af1158015616234573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166394362e8b33896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156162bf57600080fd5b505af11580156162d3573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fcf4d3348a338b6040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303818588803b1580156163b457600080fd5b505af11580156163c8573d6000803e3d6000fd5b50505050508561ffff163373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c828a42604051808381526020018281526020019250505060405180910390a4505050505060016000806101000a81548160ff021916908315150217905550505050565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305075d6e826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561652857600080fd5b505afa15801561653c573d6000803e3d6000fd5b505050506040513d602081101561655257600080fd5b81019080805190602001909291905050506165b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616dd16021913960400191505060405180910390fd5b50565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634a08accb826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561665a57600080fd5b505afa15801561666e573d6000803e3d6000fd5b505050506040513d602081101561668457600080fd5b8101908080519060200190929190505050156166eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806170fc6024913960400191505060405180910390fd5b50565b60008111616764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416d6f756e74206d7573742062652067726561746572207468616e203000000081525060200191505060405180910390fd5b50565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b600080828401905083811015616801576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061684d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506169b6565b905092915050565b60008083141561686857600090506168d5565b600082840290508284828161687957fe5b04146168d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616f096021913960400191505060405180910390fd5b809150505b92915050565b600061691d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250616a76565b905092915050565b60006002905090565b600080303b90506000811491505090565b60006b033b2e3c9fd0803ce8000000905090565b60006169ae6b033b2e3c9fd0803ce80000006169a061697b858761685590919063ffffffff16565b60026b033b2e3c9fd0803ce80000008161699157fe5b0461678390919063ffffffff16565b6168db90919063ffffffff16565b905092915050565b6000838311158290616a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015616a28578082015181840152602081019050616a0d565b50505050905090810190601f168015616a555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290616b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015616ae7578082015181840152602081019050616acc565b50505050905090810190601f168015616b145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581616b2e57fe5b049050809150509392505050565b604051806101000160405280600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b604051806102000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006002811115616bfe57fe5b8152602001600015158152509056fe54686520626f72726f7765722063616e20616c7265616479206265206c69717569646174656420736f2068652063616e6e6f7420626f72726f77206d6f72655468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f77496e76616c696420696e7465726573742072617465206d6f64652073656c656374656454686520616d6f756e7420746f20626f72726f7720697320746f6f20736d616c6c5573657220646f6573206e6f74206861766520616e7920626f72726f7720666f722074686973207265736572766555736572206465706f73697420697320616c7265616479206265696e67207573656420617320636f6c6c61746572616c52657365727665206973206e6f7420656e61626c656420666f7220626f72726f77696e675468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f2072656465656d546865207573657220626f72726f77206973207661726961626c6520616e642063616e6e6f7420626520726562616c616e636564496e76616c6964206d73672e76616c75652073656e7420666f72207468652072657061796d656e74416374696f6e20726571756972657320616e206163746976652072657365727665496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745573657220646f6573206e6f742068617665206120626f72726f7720696e2070726f6772657373206f6e207468697320726573657276655468657265206973206e6f7420656e6f75676820636f6c6c61746572616c20746f20636f7665722061206e657720626f72726f775468652063616c6c6572206f6620746869732066756e6374696f6e2063616e206f6e6c79206265207468652061546f6b656e20636f6e7472616374206f6620746869732072657365727665536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520696e2074686520726573657276655468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120666c6173684c6f616e2e436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564557365722063616e6e6f7420626f72726f77207468652073656c656374656420616d6f756e742077697468206120737461626c6520726174655573657220646f6573206e6f74206861766520616e79206c6971756964697479206465706f73697465645573657220697320747279696e6720746f20626f72726f7720746f6f206d756368206c6971756964697479206174206120737461626c652072617465546865207573657220646f6573206e6f74206861766520616e7920626f72726f772070656e64696e67557365722063616e6e6f7420626f72726f77207468652073656c656374656420616d6f756e7420617420737461626c65546f207265706179206f6e20626568616c66206f6620616e207573657220616e206578706c6963697420616d6f756e7420746f207265706179206973206e65656465642e416374696f6e20726571756972657320616e20756e667265657a65642072657365727665a26469706673582212209fd961d9726ec23b368b87d654abc826d007d87dcdd6a7441a1440c8780804e664736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b506000805460ff19166001179055614739806100326000396000f3fe6080604052600436106101295760003560e01c80638afaff02116100ab578063c72c4d101161006f578063c72c4d1014610664578063c858f5f914610679578063cd112382146106c2578063d0fc81d2146106fd578063d2d0e06614610712578063f2f4eb261461074857610129565b80638afaff02146105385780639895e3d81461055f578063b334ed86146105a8578063bf92857c146105bd578063c4d66de81461063157610129565b806348ca1300116100f257806348ca13001461039057806358707e06146103c35780635a3b74b9146103f45780635ceae9c41461042f5780635cffe9de1461046557610129565b8062a718a91461012e5780630902f1ac1461017457806328dd2d01146101d957806335ea6a75146102665780633e1501411461030e575b600080fd5b610172600480360360a081101561014457600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135151561075d565b005b34801561018057600080fd5b50610189610b7e565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101c55781810151838201526020016101ad565b505050509050019250505060405180910390f35b3480156101e557600080fd5b50610214600480360360408110156101fc57600080fd5b506001600160a01b0381358116916020013516610c91565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152151561012083015251908190036101400190f35b34801561027257600080fd5b506102996004803603602081101561028957600080fd5b50356001600160a01b0316610db2565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e08801526101008701526101208601526101408501526001600160a01b031661016084015264ffffffffff1661018083015251908190036101a00190f35b34801561031a57600080fd5b506103416004803603602081101561033157600080fd5b50356001600160a01b0316610f11565b604080519889526020890197909752878701959095526001600160a01b0390931660608701529015156080860152151560a0850152151560c0840152151560e083015251908190036101000190f35b34801561039c57600080fd5b50610172600480360360208110156103b357600080fd5b50356001600160a01b0316610ffa565b3480156103cf57600080fd5b506103d86113c8565b604080516001600160a01b039092168252519081900360200190f35b34801561040057600080fd5b506101726004803603604081101561041757600080fd5b506001600160a01b03813516906020013515156113d7565b6101726004803603606081101561044557600080fd5b506001600160a01b038135811691602081013591604090910135166116bb565b34801561047157600080fd5b506101726004803603608081101561048857600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156104c357600080fd5b8201836020820111156104d557600080fd5b803590602001918460018302840111640100000000831117156104f757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611ec1945050505050565b34801561054457600080fd5b5061054d612491565b60408051918252519081900360200190f35b34801561056b57600080fd5b506101726004803603608081101561058257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612496565b3480156105b457600080fd5b506103d86127ca565b3480156105c957600080fd5b506105f0600480360360208110156105e057600080fd5b50356001600160a01b03166127d9565b604080519889526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561063d57600080fd5b506101726004803603602081101561065457600080fd5b50356001600160a01b0316612851565b34801561067057600080fd5b506103d8612b26565b34801561068557600080fd5b506101726004803603608081101561069c57600080fd5b5080356001600160a01b0316906020810135906040810135906060013561ffff16612b35565b3480156106ce57600080fd5b50610172600480360360408110156106e557600080fd5b506001600160a01b0381358116916020013516613443565b34801561070957600080fd5b5061054d6139a0565b6101726004803603606081101561072857600080fd5b5080356001600160a01b0316906020810135906040013561ffff166139a6565b34801561075457600080fd5b506103d8613cc8565b60005460ff166107a2576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff19169055836107b681613cd7565b856107c081613cd7565b60355460408051632c1a75cd60e11b815290516000926001600160a01b031691635834eb9a916004808301926020929190829003018186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d602081101561082f57600080fd5b5051604080516001600160a01b038b811660248301528a8116604483015289811660648301526084820189905287151560a4808401919091528351808403909101815260c490920183526020820180516001600160e01b031662a718a960e01b17815292518251949550600094606094928716939282918083835b602083106108c95780518252601f1990920191602091820191016108aa565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610929576040519150601f19603f3d011682016040523d82523d6000602084013e61092e565b606091505b509150915081610985576040805162461bcd60e51b815260206004820152601760248201527f4c69717569646174696f6e2063616c6c206661696c6564000000000000000000604482015290519081900360640190fd5b6000606082806020019051604081101561099e57600080fd5b8151602083018051604051929492938301929190846401000000008211156109c557600080fd5b9083019060208201858111156109da57600080fd5b82516401000000008111828201881017156109f457600080fd5b82525081516020918201929091019080838360005b83811015610a21578181015183820152602001610a09565b50505050905090810190601f168015610a4e5780820380516001836020036101000a031916815260200191505b506040525050509150915081600014610b63578060405160200180807302634b8bab4b230ba34b7b7103330b4b632b21d160651b81525060140182805190602001908083835b60208310610ab35780518252601f199092019160209182019101610a94565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529384905262461bcd60e51b84526004840181815282516024860152825192965094508493604401925085019080838360005b83811015610b28578181015183820152602001610b10565b50505050905090810190601f168015610b555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50506000805460ff1916600117905550505050505050505050565b60365460408051630240bc6b60e21b815290516060926001600160a01b031691630902f1ac916004808301926000929190829003018186803b158015610bc357600080fd5b505afa158015610bd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610c0057600080fd5b8101908080516040519392919084640100000000821115610c2057600080fd5b908301906020820185811115610c3557600080fd5b8251866020820283011164010000000082111715610c5257600080fd5b82525081516020918201928201910280838360005b83811015610c7f578181015183820152602001610c67565b50505050905001604052505050905090565b603754604080516328dd2d0160e01b81526001600160a01b0385811660048301528481166024830152915160009384938493849384938493849384938493849316916328dd2d0191604480830192610140929190829003018186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d610140811015610d2457600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505099509950995099509950995099509950995099509295989b9194979a5092959850565b6000806000806000806000806000806000806000603760009054906101000a90046001600160a01b03166001600160a01b03166335ea6a758f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101a06040518083038186803b158015610e3257600080fd5b505afa158015610e46573d6000803e3d6000fd5b505050506040513d6101a0811015610e5d57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509c509c509c509c509c509c509c509c509c509c509c509c509c5091939597999b9d90929496989a9c50565b600080600080600080600080603760009054906101000a90046001600160a01b03166001600160a01b0316633e1501418a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101006040518083038186803b158015610f8957600080fd5b505afa158015610f9d573d6000803e3d6000fd5b505050506040513d610100811015610fb457600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e090970151959e50939c50919a509850965094509092509050919395975091939597565b60005460ff1661103f576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff191690558061105381613cd7565b8161105d81613d8e565b60365460408051639fb8afcd60e01b81526001600160a01b038681166004830152336024830152915160009384938493911691639fb8afcd91604480820192606092909190829003018186803b1580156110b657600080fd5b505afa1580156110ca573d6000803e3d6000fd5b505050506040513d60608110156110e057600080fd5b50805160208201516040909201519094509092509050816111325760405162461bcd60e51b81526004018080602001828103825260378152602001806144376037913960400191505060405180910390fd5b60365460408051631ca19f1960e01b81526001600160a01b03898116600483015233602483015291516000939290921691631ca19f1991604480820192602092909190829003018186803b15801561118957600080fd5b505afa15801561119d573d6000803e3d6000fd5b505050506040513d60208110156111b357600080fd5b5051905060028160028111156111c557fe5b141561128c576036546040805163710ba6c360e11b81526001600160a01b038a81166004830152336024830152604482018790529151919092169163e2174d86916064808301926020929190829003018186803b15801561122557600080fd5b505afa158015611239573d6000803e3d6000fd5b505050506040513d602081101561124f57600080fd5b505161128c5760405162461bcd60e51b815260040180806020018281038252603081526020018061466c6030913960400191505060405180910390fd5b60365460405163f614831160e01b81526001600160a01b03898116600483019081523360248401819052604484018990526064840188905260848401879052600094859493169263f6148311928d92918b918b918b918b9160a4018260028111156112f357fe5b60ff16815260200196505050505050506040805180830381600087803b15801561131c57600080fd5b505af1158015611330573d6000803e3d6000fd5b505050506040513d604081101561134657600080fd5b5080516020909101519092509050336001600160a01b038a167fb3e2773606abfd36b5bd91394b3a54d1398336c65005baf7bf7a05efeffaf75b84600281111561138c57fe5b6040805191825260208201869052818101899052426060830152519081900360800190a350506000805460ff1916600117905550505050505050565b6038546001600160a01b031681565b60005460ff1661141c576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff191690558161143081613cd7565b8261143a81613d8e565b60365460408051630c526de560e11b81526001600160a01b038781166004830152336024830152915160009392909216916318a4dbca91604480820192602092909190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b50519050806114fb5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145dd602a913960400191505060405180910390fd5b603754604080516376e9d61560e01b81526001600160a01b03888116600483015233602483015260448201859052915191909216916376e9d615916064808301926020929190829003018186803b15801561155557600080fd5b505afa158015611569573d6000803e3d6000fd5b505050506040513d602081101561157f57600080fd5b50516115bc5760405162461bcd60e51b81526004018080602001828103825260308152602001806142d46030913960400191505060405180910390fd5b60365460408051633e94615360e21b81526001600160a01b03888116600483015233602483015287151560448301529151919092169163fa51854c91606480830192600092919082900301818387803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050505083156116705760405133906001600160a01b038716907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a36116a7565b60405133906001600160a01b038716907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b50506000805460ff19166001179055505050565b60005460ff16611700576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff191690558261171481613cd7565b8261171e81613e43565b611726614102565b60365460408051639fb8afcd60e01b81526001600160a01b038981166004830152878116602483015291519190921691639fb8afcd916044808301926060929190829003018186803b15801561177b57600080fd5b505afa15801561178f573d6000803e3d6000fd5b505050506040513d60608110156117a557600080fd5b50805160208083015160409384015185850152848201529083526036548251633faacc6b60e21b81526001600160a01b038a8116600483015288811660248301529351939091169263feab31ac92604480840193919291829003018186803b15801561181057600080fd5b505afa158015611824573d6000803e3d6000fd5b505050506040513d602081101561183a57600080fd5b505160e08201526001600160a01b038616611853613e98565b6001600160a01b031614606082015260208101516118a25760405162461bcd60e51b81526004018080602001828103825260298152602001806146436029913960400191505060405180910390fd5b600019851415806118bb5750336001600160a01b038516145b6118f65760405162461bcd60e51b815260040180806020018281038252604481526020018061469c6044913960600191505060405180910390fd5b60e0810151602082015161190f9163ffffffff613eb016565b608082015260001985148015906119295750806080015185105b1561193657608081018590525b8060600151158061194b575080608001513410155b6119865760405162461bcd60e51b815260040180806020018281038252602881526020018061438d6028913960400191505060405180910390fd5b8060e00151816080015111611bb1576036546080820151604080840151815163da12d96f60e01b81526001600160a01b038b8116600483015289811660248301526000604483018190526064830195909552608482019290925260a48101849052915193169263da12d96f9260c48084019391929182900301818387803b158015611a1057600080fd5b505af1158015611a24573d6000803e3d6000fd5b505060365460608401516001600160a01b03909116925063c7d142379150611a4d576000611a53565b82608001515b88878560800151603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa857600080fd5b505afa158015611abc573d6000803e3d6000fd5b505050506040513d6020811015611ad257600080fd5b5051604080516001600160e01b031960e089901b1681526001600160a01b039586166004820152938516602485015260448401929092529290921660648201529051608480830192600092919082900301818588803b158015611b3457600080fd5b505af1158015611b48573d6000803e3d6000fd5b505050608080840151604080860151815160008152602081019390935282820152426060830152513394506001600160a01b0389811694508b16927fb718f0b14f03d8c3adf35b15e3da52421b042ac879e5a689011a8b1e0036773d928290030190a4506116a7565b60e08101516080820151611bca9163ffffffff613f1316565b60a0820181905260365460e08301516040808501516020860151825163da12d96f60e01b81526001600160a01b038d811660048301528b81166024830152604482018890526064820195909552608481019290925290941460a48501525191169163da12d96f9160c480830192600092919082900301818387803b158015611c5157600080fd5b505af1158015611c65573d6000803e3d6000fd5b5050505060e081015115611d995760365460608201516001600160a01b039091169063c7d1423790611c98576000611c9e565b8260e001515b88878560e00151603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015611cf357600080fd5b505afa158015611d07573d6000803e3d6000fd5b505050506040513d6020811015611d1d57600080fd5b5051604080516001600160e01b031960e089901b1681526001600160a01b039586166004820152938516602485015260448401929092529290921660648201529051608480830192600092919082900301818588803b158015611d7f57600080fd5b505af1158015611d93573d6000803e3d6000fd5b50505050505b60365460608201516001600160a01b03909116906328fcf4d390611dbe576000611dd4565b60e0830151611dd490349063ffffffff613f1316565b60a0840151604080516001600160e01b031960e086901b1681526001600160a01b038c166004820152336024820152604481019290925251606480830192600092919082900301818588803b158015611e2c57600080fd5b505af1158015611e40573d6000803e3d6000fd5b50505060a083015160e08401516040808601518151938452602084019290925282810191909152426060830152513393506001600160a01b0388811693508a16917fb718f0b14f03d8c3adf35b15e3da52421b042ac879e5a689011a8b1e0036773d919081900360800190a45050506000805460ff19166001179055505050565b60005460ff16611f06576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff1916905582611f1a81613cd7565b82611f2481613e43565b6000611f2e613e98565b6001600160a01b0316866001600160a01b031614611fc457603654604080516370a0823160e01b81526001600160a01b0392831660048201529051918816916370a0823191602480820192602092909190829003018186803b158015611f9357600080fd5b505afa158015611fa7573d6000803e3d6000fd5b505050506040513d6020811015611fbd57600080fd5b5051611fd2565b6036546001600160a01b0316315b9050848110156120135760405162461bcd60e51b81526004018080602001828103825260318152602001806142316031913960400191505060405180910390fd5b60385460408051630161bfad60e61b8152815160009384936001600160a01b039091169263586feb409260048083019392829003018186803b15801561205857600080fd5b505afa15801561206c573d6000803e3d6000fd5b505050506040513d604081101561208257600080fd5b508051602090910151909250905060006120b46127106120a88a8663ffffffff613f5516565b9063ffffffff613fae16565b905060006120ce6127106120a8848663ffffffff613f5516565b90506000821180156120e05750600081115b61211b5760405162461bcd60e51b81526004018080602001828103825260328152602001806145446032913960400191505060405180910390fd5b6036546040805163fa93b2a560e01b81526001600160a01b038d81166004830152808f166024830152604482018d905291518e938493169163fa93b2a591606480830192600092919082900301818387803b15801561217957600080fd5b505af115801561218d573d6000803e3d6000fd5b50505050816001600160a01b031663ee8725588d8d878e6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156122145781810151838201526020016121fc565b50505050905090810190601f1680156122415780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561226357600080fd5b505af1158015612277573d6000803e3d6000fd5b505050506000612285613e98565b6001600160a01b03168d6001600160a01b03161461231b57603654604080516370a0823160e01b81526001600160a01b0392831660048201529051918f16916370a0823191602480820192602092909190829003018186803b1580156122ea57600080fd5b505afa1580156122fe573d6000803e3d6000fd5b505050506040513d602081101561231457600080fd5b5051612329565b6036546001600160a01b0316315b905061233b888663ffffffff613eb016565b81146123785760405162461bcd60e51b81526004018080602001828103825260328152602001806144056032913960400191505060405180910390fd5b6036546001600160a01b03166309ac29538e8a61239b898963ffffffff613f1316565b886040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b1580156123f957600080fd5b505af115801561240d573d6000803e3d6000fd5b505050508c6001600160a01b03168e6001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558e8888426040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff19166001179055505050505050505050505050565b600281565b60005460ff166124db576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff1916905560365460408051631a59df7760e11b81526001600160a01b0380881660048301529151879392909216916334b3beee91602480820192602092909190829003018186803b15801561253557600080fd5b505afa158015612549573d6000803e3d6000fd5b505050506040513d602081101561255f57600080fd5b50516001600160a01b031633146125a75760405162461bcd60e51b815260040180806020018281038252604b8152602001806144a2604b913960600191505060405180910390fd5b846125b181613cd7565b836125bb81613e43565b6036546040805163e240301960e01b81526001600160a01b038a811660048301529151600093929092169163e240301991602480820192602092909190829003018186803b15801561260c57600080fd5b505afa158015612620573d6000803e3d6000fd5b505050506040513d602081101561263657600080fd5b50519050858110156126795760405162461bcd60e51b81526004018080602001828103825260318152602001806143286031913960400191505060405180910390fd5b6036546040805163afcdbea360e01b81526001600160a01b038b811660048301528a81166024830152604482018a9052881560648301529151919092169163afcdbea391608480830192600092919082900301818387803b1580156126dd57600080fd5b505af11580156126f1573d6000803e3d6000fd5b50506036546040805163fa93b2a560e01b81526001600160a01b038d811660048301528c81166024830152604482018c9052915191909216935063fa93b2a59250606480830192600092919082900301818387803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b50506040805189815242602082015281516001600160a01b03808d1695508d1693507f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c6929181900390910190a350506000805460ff19166001179055505050505050565b6037546001600160a01b031681565b600080600080600080600080603760009054906101000a90046001600160a01b03166001600160a01b031663bf92857c8a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101006040518083038186803b158015610f8957600080fd5b600061285b613ff0565b60025490915060ff16806128725750612872613ff5565b8061287e575060015481115b6128b95760405162461bcd60e51b815260040180806020018281038252602e815260200180614576602e913960400191505060405180910390fd5b60025460ff161580156128da576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b0385811691909117918290556040805163076b7fbb60e51b81529051929091169163ed6ff76091600480820192602092909190829003018186803b15801561293657600080fd5b505afa15801561294a573d6000803e3d6000fd5b505050506040513d602081101561296057600080fd5b5051603680546001600160a01b0319166001600160a01b0392831617905560355460408051632f58b80d60e01b815290519190921691632f58b80d916004808301926020929190829003018186803b1580156129bb57600080fd5b505afa1580156129cf573d6000803e3d6000fd5b505050506040513d60208110156129e557600080fd5b5051603780546001600160a01b0319166001600160a01b03928316179055603554604080516302030ec760e11b8152905191909216916304061d8e916004808301926020929190829003018186803b158015612a4057600080fd5b505afa158015612a54573d6000803e3d6000fd5b505050506040513d6020811015612a6a57600080fd5b5051603880546001600160a01b0319166001600160a01b0392831617905560355460408051633efbbf0f60e21b81529051919092169163fbeefc3c916004808301926020929190829003018186803b158015612ac557600080fd5b505afa158015612ad9573d6000803e3d6000fd5b505050506040513d6020811015612aef57600080fd5b5051603980546001600160a01b0319166001600160a01b039092169190911790558015612b21576002805460ff191690555b505050565b6035546001600160a01b031681565b60005460ff16612b7a576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff1916905583612b8e81613cd7565b84612b9881613d8e565b84612ba281613e43565b612baa614149565b60365460408051632e79732b60e11b81526001600160a01b038b8116600483015291519190921691635cf2e656916024808301926020929190829003018186803b158015612bf757600080fd5b505afa158015612c0b573d6000803e3d6000fd5b505050506040513d6020811015612c2157600080fd5b5051612c5e5760405162461bcd60e51b81526004018080602001828103825260248152602001806143046024913960400191505060405180910390fd5b8560021480612c6d5750856001145b612ca85760405162461bcd60e51b81526004018080602001828103825260238152602001806142626023913960400191505060405180910390fd5b856002811115612cb457fe5b816101c001906002811115612cc557fe5b90816002811115612cd257fe5b9052506036546040805163e240301960e01b81526001600160a01b038b811660048301529151919092169163e2403019916024808301926020929190829003018186803b158015612d2257600080fd5b505afa158015612d36573d6000803e3d6000fd5b505050506040513d6020811015612d4c57600080fd5b50516101608201819052871115612d945760405162461bcd60e51b815260040180806020018281038252603681526020018061450e6036913960400191505060405180910390fd5b60375460408051632c6d0e9b60e01b815233600482015290516001600160a01b0390921691632c6d0e9b9160248082019261010092909190829003018186803b158015612de057600080fd5b505afa158015612df4573d6000803e3d6000fd5b505050506040513d610100811015612e0b57600080fd5b506020808201516040808401516060850151608086015160a087015160e09788015115156101e08a015293880193909352938601919091526101008501929092529183015260c08201819052612ea8576040805162461bcd60e51b815260206004820152601b60248201527f54686520636f6c6c61746572616c2062616c616e636520697320300000000000604482015290519081900360640190fd5b806101e0015115612eea5760405162461bcd60e51b815260040180806020018281038252603f8152602001806141d2603f913960400191505060405180910390fd5b60395460408051630e563a7d60e41b8152336004820152602481018a905290516001600160a01b039092169163e563a7d091604480820192602092909190829003018186803b158015612f3c57600080fd5b505afa158015612f50573d6000803e3d6000fd5b505050506040513d6020811015612f6657600080fd5b505160608201819052612faa5760405162461bcd60e51b81526004018080602001828103825260218152602001806142856021913960400191505060405180910390fd5b603760009054906101000a90046001600160a01b03166001600160a01b03166312737c33898984606001518560e0015186610100015187602001516040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060206040518083038186803b15801561304e57600080fd5b505afa158015613062573d6000803e3d6000fd5b505050506040513d602081101561307857600080fd5b505160a0820181905260c082015110156130c35760405162461bcd60e51b815260040180806020018281038252603481526020018061446e6034913960400191505060405180910390fd5b6001816101c0015160028111156130d657fe5b1415613275576036546040805163710ba6c360e11b81526001600160a01b038b81166004830152336024830152604482018b90529151919092169163e2174d86916064808301926020929190829003018186803b15801561313657600080fd5b505afa15801561314a573d6000803e3d6000fd5b505050506040513d602081101561316057600080fd5b505161319d5760405162461bcd60e51b81526004018080602001828103825260398152602001806145a46039913960400191505060405180910390fd5b603854604080516335adc96b60e21b815290516000926001600160a01b03169163d6b725ac916004808301926020929190829003018186803b1580156131e257600080fd5b505afa1580156131f6573d6000803e3d6000fd5b505050506040513d602081101561320c57600080fd5b5051610160830151909150600090613231906064906120a8908563ffffffff613f5516565b9050808911156132725760405162461bcd60e51b815260040180806020018281038252603c815260200180614607603c913960400191505060405180910390fd5b50505b60365460608201516101c0830151604051630deb1bf960e21b81526001600160a01b038c8116600483019081523360248401819052604484018e90526064840186905291909516946337ac6fe4948e9492938e939192906084018260028111156132db57fe5b60ff168152602001955050505050506040805180830381600087803b15801561330357600080fd5b505af1158015613317573d6000803e3d6000fd5b505050506040513d604081101561332d57600080fd5b5080516020909101516101208301526101a08201526036546040805163fa93b2a560e01b81526001600160a01b038b81166004830152336024830152604482018b90529151919092169163fa93b2a591606480830192600092919082900301818387803b15801561339d57600080fd5b505af11580156133b1573d6000803e3d6000fd5b5050506101a0820151606080840151610120850151604080518d8152602081018d9052808201959095529284019190915260808301524260a08301525161ffff8816925033916001600160a01b038c16917f1e77446728e5558aa1b7e81e0cdab9cc1b075ba893b740600c76a315c2caa5539181900360c00190a450506000805460ff19166001179055505050505050565b60005460ff16613488576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff191690558161349c81613cd7565b60365460408051639fb8afcd60e01b81526001600160a01b0386811660048301528581166024830152915160009384931691639fb8afcd916044808301926060929190829003018186803b1580156134f357600080fd5b505afa158015613507573d6000803e3d6000fd5b505050506040513d606081101561351d57600080fd5b50602081015160409091015190925090508161356a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806142a6602e913960400191505060405180910390fd5b600160365460408051631ca19f1960e01b81526001600160a01b038981166004830152888116602483015291519190921691631ca19f19916044808301926020929190829003018186803b1580156135c157600080fd5b505afa1580156135d5573d6000803e3d6000fd5b505050506040513d60208110156135eb57600080fd5b505160028111156135f857fe5b146136345760405162461bcd60e51b81526004018080602001828103825260348152602001806143596034913960400191505060405180910390fd5b60365460408051631bffeac360e21b81526001600160a01b038881166004830152878116602483015291516000939290921691636fffab0c91604480820192602092909190829003018186803b15801561368d57600080fd5b505afa1580156136a1573d6000803e3d6000fd5b505050506040513d60208110156136b757600080fd5b5051603654604080516362a00a4760e11b81526001600160a01b038a811660048301529151939450600093919092169163c540148e916024808301926020929190829003018186803b15801561370c57600080fd5b505afa158015613720573d6000803e3d6000fd5b505050506040513d602081101561373657600080fd5b505160365460408051631100f3b160e31b81526001600160a01b038b81166004830152915193945060009391909216916388079d88916024808301926020929190829003018186803b15801561378b57600080fd5b505afa15801561379f573d6000803e3d6000fd5b505050506040513d60208110156137b557600080fd5b5051603854604080516346f4f8d160e01b815290519293506000926138579261384a926001600160a01b03909116916346f4f8d191600480820192602092909190829003018186803b15801561380a57600080fd5b505afa15801561381e573d6000803e3d6000fd5b505050506040513d602081101561383457600080fd5b505161383e613ffb565b9063ffffffff613eb016565b839063ffffffff61400b16565b90508284108061386657508084115b15613957576036546040805163af825b0760e01b81526001600160a01b038c811660048301528b81166024830152604482018990529151600093929092169163af825b079160648082019260209290919082900301818787803b1580156138cc57600080fd5b505af11580156138e0573d6000803e3d6000fd5b505050506040513d60208110156138f657600080fd5b50516040805182815260208101899052428183015290519192506001600160a01b03808c1692908d16917f5050ad184862424ee0852d1838d355ad65bed1e5e6da67ac9a2dac1922677f60919081900360600190a35050505050505061398e565b60405162461bcd60e51b815260040180806020018281038252602f8152602001806143d6602f913960400191505060405180910390fd5b50506000805460ff1916600117905550565b60001981565b60005460ff166139eb576040805162461bcd60e51b815260206004820152601f6024820152600080516020614211833981519152604482015290519081900360640190fd5b6000805460ff19169055826139ff81613cd7565b83613a0981613d8e565b83613a1381613e43565b60365460408051631a59df7760e11b81526001600160a01b038981166004830152915160009392909216916334b3beee91602480820192602092909190829003018186803b158015613a6457600080fd5b505afa158015613a78573d6000803e3d6000fd5b505050506040513d6020811015613a8e57600080fd5b5051604080516370a0823160e01b815233600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015613adc57600080fd5b505afa158015613af0573d6000803e3d6000fd5b505050506040513d6020811015613b0657600080fd5b505160365460408051632f35bfe960e21b81526001600160a01b038c81166004830152336024830152604482018c90529315606482018190529151919450929091169163bcd6ffa491608480830192600092919082900301818387803b158015613b6f57600080fd5b505af1158015613b83573d6000803e3d6000fd5b5050604080516394362e8b60e01b8152336004820152602481018b905290516001600160a01b03861693506394362e8b9250604480830192600092919082900301818387803b158015613bd557600080fd5b505af1158015613be9573d6000803e3d6000fd5b5050603654604080516328fcf4d360e01b81526001600160a01b038d81166004830152336024830152604482018d905291519190921693506328fcf4d39250349160648082019260009290919082900301818588803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b5050604080518b8152426020820152815161ffff8c1695503394506001600160a01b038e1693507fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82929181900390910190a450506000805460ff19166001179055505050505050565b6036546001600160a01b031681565b60365460408051630283aeb760e11b81526001600160a01b038481166004830152915191909216916305075d6e916024808301926020929190829003018186803b158015613d2457600080fd5b505afa158015613d38573d6000803e3d6000fd5b505050506040513d6020811015613d4e57600080fd5b5051613d8b5760405162461bcd60e51b81526004018080602001828103825260218152602001806143b56021913960400191505060405180910390fd5b50565b60365460408051634a08accb60e01b81526001600160a01b03848116600483015291519190921691634a08accb916024808301926020929190829003018186803b158015613ddb57600080fd5b505afa158015613def573d6000803e3d6000fd5b505050506040513d6020811015613e0557600080fd5b505115613d8b5760405162461bcd60e51b81526004018080602001828103825260248152602001806146e06024913960400191505060405180910390fd5b60008111613d8b576040805162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b600082820183811015613f0a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000613f0a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614043565b600082613f6457506000613f0d565b82820282848281613f7157fe5b0414613f0a5760405162461bcd60e51b81526004018080602001828103825260218152602001806144ed6021913960400191505060405180910390fd5b6000613f0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061409d565b600290565b303b1590565b6b033b2e3c9fd0803ce800000090565b6000613f0a6b033b2e3c9fd0803ce80000006120a8614030868663ffffffff613f5516565b6b019d971e4fe8401e7400000090613eb0565b600081848411156140955760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610b28578181015183820152602001610b10565b505050900390565b600081836140ec5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610b28578181015183820152602001610b10565b5060008385816140f857fe5b0495945050505050565b604051806101000160405280600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b6040518061020001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060028111156141c457fe5b815260006020909101529056fe54686520626f72726f7765722063616e20616c7265616479206265206c69717569646174656420736f2068652063616e6e6f7420626f72726f77206d6f72655265656e7472616e637947756172643a207265656e7472616e742063616c6c005468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f77496e76616c696420696e7465726573742072617465206d6f64652073656c656374656454686520616d6f756e7420746f20626f72726f7720697320746f6f20736d616c6c5573657220646f6573206e6f74206861766520616e7920626f72726f7720666f722074686973207265736572766555736572206465706f73697420697320616c7265616479206265696e67207573656420617320636f6c6c61746572616c52657365727665206973206e6f7420656e61626c656420666f7220626f72726f77696e675468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f2072656465656d546865207573657220626f72726f77206973207661726961626c6520616e642063616e6e6f7420626520726562616c616e636564496e76616c6964206d73672e76616c75652073656e7420666f72207468652072657061796d656e74416374696f6e20726571756972657320616e206163746976652072657365727665496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745573657220646f6573206e6f742068617665206120626f72726f7720696e2070726f6772657373206f6e207468697320726573657276655468657265206973206e6f7420656e6f75676820636f6c6c61746572616c20746f20636f7665722061206e657720626f72726f775468652063616c6c6572206f6620746869732066756e6374696f6e2063616e206f6e6c79206265207468652061546f6b656e20636f6e7472616374206f6620746869732072657365727665536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520696e2074686520726573657276655468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120666c6173684c6f616e2e436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564557365722063616e6e6f7420626f72726f77207468652073656c656374656420616d6f756e742077697468206120737461626c6520726174655573657220646f6573206e6f74206861766520616e79206c6971756964697479206465706f73697465645573657220697320747279696e6720746f20626f72726f7720746f6f206d756368206c6971756964697479206174206120737461626c652072617465546865207573657220646f6573206e6f74206861766520616e7920626f72726f772070656e64696e67557365722063616e6e6f7420626f72726f77207468652073656c656374656420616d6f756e7420617420737461626c65546f207265706179206f6e20626568616c66206f6620616e207573657220616e206578706c6963697420616d6f756e7420746f207265706179206973206e65656465642e416374696f6e20726571756972657320616e20756e667265657a65642072657365727665a26469706673582212208ab74bfd103c50402ad7ede4606c00e8775e8dda282e1d0f28e21b517ab14d5464736f6c63430006080033"; diff --git a/types/LendingPoolLiquidationManagerFactory.ts b/types/LendingPoolLiquidationManagerFactory.ts index d3d38e81..3dbd8b3b 100644 --- a/types/LendingPoolLiquidationManagerFactory.ts +++ b/types/LendingPoolLiquidationManagerFactory.ts @@ -204,4 +204,4 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b5060016000806101000a81548160ff021916908315150217905550611fda8061003f6000396000f3fe6080604052600436106100285760003560e01c8062a718a91461002d578063c72c4d1014610147575b600080fd5b6100c5600480360360a081101561004357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080351515906020019092919050505061019e565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561010b5780820151818401526020810190506100f0565b50505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561015357600080fd5b5061015c611523565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060606101aa611e19565b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c6d0e9b876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561024a57600080fd5b505afa15801561025e573d6000803e3d6000fd5b505050506040513d61010081101561027557600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050509091929394959650909192939495509091929394509091929350909192509091509050816101a001811515151581525050806101a00151610337576004600581111561031457fe5b604051806060016040528060288152602001611f53602891399250925050611519565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318a4dbca89886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d602081101561043457600080fd5b81019080805190602001909291905050508160000181815250506000816000015114156104a8576001600581111561046857fe5b6040518060400160405280601f81526020017f496e76616c696420636f6c6c61746572616c20746f206c6971756964617465008152509250925050611519565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318f9bbae896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561054757600080fd5b505afa15801561055b573d6000803e3d6000fd5b505050506040513d602081101561057157600080fd5b810190808051906020019092919050505080156106985750603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e3c4f3b89886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b81019080805190602001909291905050505b816101800190151590811515815250508061018001516106e257600260058111156106bf57fe5b6040518060600160405280602a8152602001611f29602a91399250925050611519565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb8afcd88886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060606040518083038186803b1580156107b557600080fd5b505afa1580156107c9573d6000803e3d6000fd5b505050506040513d60608110156107df57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050909150826020018360400182815250828152505050600081602001511415610856576003600581111561083357fe5b6040518060600160405280602a8152602001611f7b602a91399250925050611519565b61088160646108736032846020015161154990919063ffffffff16565b6115cf90919063ffffffff16565b8160600181815250508060600151851161089b57846108a1565b80606001515b8160800181815250506000806108c18a8a85608001518660000151611619565b91509150603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feab31ac8a8a6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561099857600080fd5b505afa1580156109ac573d6000803e3d6000fd5b505050506040513d60208110156109c257600080fd5b81019080805190602001909291905050508360e001818152505060008360e001511115610a2457610a0f8a8a8560e00151610a0a868860000151611c4990919063ffffffff16565b611619565b84610120018561010001828152508281525050505b8260800151811015610a3b57808360800181815250505b85610b5a576000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e24030198c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ae157600080fd5b505afa158015610af5573d6000803e3d6000fd5b505050506040513d6020811015610b0b57600080fd5b8101908080519060200190929190505050905082811015610b5857600580811115610b3257fe5b604051806060016040528060338152602001611ef6603391399550955050505050611519565b505b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368beb4d68a8c8b8760800151878961010001518a61012001518b604001518f6040518a63ffffffff1660e01b8152600401808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019950505050505050505050600060405180830381600087803b158015610ca957600080fd5b505af1158015610cbd573d6000803e3d6000fd5b505050506000603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334b3beee8c6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d6257600080fd5b505afa158015610d76573d6000803e3d6000fd5b505050506040513d6020811015610d8c57600080fd5b810190808051906020019092919050505090508615610e7d578073ffffffffffffffffffffffffffffffffffffffff1663f866c3198a33866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610e6057600080fd5b505af1158015610e74573d6000803e3d6000fd5b50505050611012565b8073ffffffffffffffffffffffffffffffffffffffff16633edb7cb88a856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610f0457600080fd5b505af1158015610f18573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa93b2a58c33866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b505050505b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fcf4d3348c3388608001516040518563ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050600084610100015111156113f1578073ffffffffffffffffffffffffffffffffffffffff16633edb7cb88a8661012001516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156111a657600080fd5b505af11580156111ba573d6000803e3d6000fd5b50505050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f385c228c866101200151603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561126b57600080fd5b505afa15801561127f573d6000803e3d6000fd5b505050506040513d602081101561129557600080fd5b81019080805190602001909291905050506040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561134257600080fd5b505af1158015611356573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f36ca8b16d61dc13b1062adff83e3778ab92d14f9e35bfe9fd1283e02b13fb0a18761010001518861012001514260405180848152602001838152602001828152602001935050505060405180910390a45b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f56864757fd5b1fc9f38f5f3a981cd8ae512ce41b902cf73fc506ee369c6bc2378760800151878960400151338e42604051808781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828152602001965050505050505060405180910390a4600060058111156114da57fe5b6040518060400160405280600981526020017f4e6f206572726f7273000000000000000000000000000000000000000000000081525095509550505050505b9550959350505050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561155c57600090506115c9565b600082840290508284828161156d57fe5b04146115c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611ed56021913960400191505060405180910390fd5b809150505b92915050565b600061161183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c93565b905092915050565b60008060009150600090506000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561168e57600080fd5b505afa1580156116a2573d6000803e3d6000fd5b505050506040513d60208110156116b857600080fd5b810190808051906020019092919050505090506116d3611e97565b8173ffffffffffffffffffffffffffffffffffffffff1663b3596f07896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561175057600080fd5b505afa158015611764573d6000803e3d6000fd5b505050506040513d602081101561177a57600080fd5b81019080805190602001909291905050508160400181815250508173ffffffffffffffffffffffffffffffffffffffff1663b3596f07886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561181157600080fd5b505afa158015611825573d6000803e3d6000fd5b505050506040513d602081101561183b57600080fd5b8101908080519060200190929190505050816060018181525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c76a6c9c896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156118f457600080fd5b505afa158015611908573d6000803e3d6000fd5b505050506040513d602081101561191e57600080fd5b8101908080519060200190929190505050816020018181525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2353fdc886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156119d757600080fd5b505afa1580156119eb573d6000803e3d6000fd5b505050506040513d6020811015611a0157600080fd5b81019080805190602001909291905050508160a0018181525050603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2353fdc896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d6020811015611ae457600080fd5b81019080805190602001909291905050508160c0018181525050611b866064611b788360200151611b6a611b2c8660a00151600a0a876040015161154990919063ffffffff16565b611b5c8760c00151600a0a611b4e8e8a6060015161154990919063ffffffff16565b61154990919063ffffffff16565b6115cf90919063ffffffff16565b61154990919063ffffffff16565b6115cf90919063ffffffff16565b8160800181815250508481608001511115611c2d57849350611c268160200151611c186064611c0a611bcc8660c00151600a0a876060015161154990919063ffffffff16565b611bfc8760a00151600a0a611bee8c8a6040015161154990919063ffffffff16565b61154990919063ffffffff16565b6115cf90919063ffffffff16565b61154990919063ffffffff16565b6115cf90919063ffffffff16565b9250611c38565b806080015193508592505b838393509350505094509492505050565b6000611c8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d59565b905092915050565b60008083118290611d3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d04578082015181840152602081019050611ce9565b50505050905090810190601f168015611d315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611d4b57fe5b049050809150509392505050565b6000838311158290611e06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dcb578082015181840152602081019050611db0565b50505050905090810190601f168015611df85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b604051806101c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006002811115611e7857fe5b8152602001600081526020016000151581526020016000151581525090565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686572652069736e277420656e6f756768206c697175696469747920617661696c61626c6520746f206c697175696461746554686520636f6c6c61746572616c2063686f73656e2063616e6e6f74206265206c6971756964617465644865616c746820666163746f72206973206e6f742062656c6f7720746865207468726573686f6c645573657220646964206e6f7420626f72726f7720746865207370656369666965642063757272656e6379a264697066735822122009fb8b6bd34094fb0bb5e47fb1a8e11abdf1e3f7f3461fcd7ddd1dad6b00b1f164736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b506000805460ff1916600117905561145f806100326000396000f3fe6080604052600436106100285760003560e01c8062a718a91461002d578063c72c4d10146100f0575b600080fd5b610071600480360360a081101561004357600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610121565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100b457818101518382015260200161009c565b50505050905090810190601f1680156100e15780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156100fc57600080fd5b50610105610cd4565b604080516001600160a01b039092168252519081900360200190f35b6000606061012d6112a2565b60375460408051632c6d0e9b60e01b81526001600160a01b03898116600483015291519190921691632c6d0e9b91602480830192610100929190829003018186803b15801561017b57600080fd5b505afa15801561018f573d6000803e3d6000fd5b505050506040513d6101008110156101a657600080fd5b5060e0015115156101a082018190526101de5760046040518060600160405280602881526020016113d8602891399250925050610cca565b60365460408051630c526de560e11b81526001600160a01b038b811660048301528981166024830152915191909216916318a4dbca916044808301926020929190829003018186803b15801561023357600080fd5b505afa158015610247573d6000803e3d6000fd5b505050506040513d602081101561025d57600080fd5b50518082526102a557505060408051808201909152601f81527f496e76616c696420636f6c6c61746572616c20746f206c697175696461746500602082015260019150610cca565b60365460408051630c7cddd760e11b81526001600160a01b038b81166004830152915191909216916318f9bbae916024808301926020929190829003018186803b1580156102f257600080fd5b505afa158015610306573d6000803e3d6000fd5b505050506040513d602081101561031c57600080fd5b505180156103a7575060365460408051639e3c4f3b60e01b81526001600160a01b038b81166004830152898116602483015291519190921691639e3c4f3b916044808301926020929190829003018186803b15801561037a57600080fd5b505afa15801561038e573d6000803e3d6000fd5b505050506040513d60208110156103a457600080fd5b50515b151561018082018190526103da5760026040518060600160405280602a81526020016113ae602a91399250925050610cca565b60365460408051639fb8afcd60e01b81526001600160a01b038a81166004830152898116602483015291519190921691639fb8afcd916044808301926060929190829003018186803b15801561042f57600080fd5b505afa158015610443573d6000803e3d6000fd5b505050506040513d606081101561045957600080fd5b5060208082015160409283015192840192909252820181905261049b5760036040518060600160405280602a8152602001611400602a91399250925050610cca565b6104c460646104b860328460200151610ce390919063ffffffff16565b9063ffffffff610d4516565b6060820181905285116104d757846104dd565b80606001515b60808201819052815160009182916104f9918c918c9190610d87565b60365460408051633faacc6b60e21b81526001600160a01b038e811660048301528d811660248301529151949650929450169163feab31ac91604480820192602092909190829003018186803b15801561055257600080fd5b505afa158015610566573d6000803e3d6000fd5b505050506040513d602081101561057c57600080fd5b505160e08401819052156105bd576105b08a8a8560e001516105ab86886000015161116490919063ffffffff16565b610d87565b6101008501526101208401525b82608001518110156105d157608083018190525b85610687576036546040805163e240301960e01b81526001600160a01b038d811660048301529151600093929092169163e240301991602480820192602092909190829003018186803b15801561062757600080fd5b505afa15801561063b573d6000803e3d6000fd5b505050506040513d602081101561065157600080fd5b505190508281101561068557600560405180606001604052806033815260200161137b603391399550955050505050610cca565b505b603660009054906101000a90046001600160a01b03166001600160a01b03166368beb4d68a8c8b8760800151878961010001518a61012001518b604001518f6040518a63ffffffff1660e01b8152600401808a6001600160a01b03166001600160a01b03168152602001896001600160a01b03166001600160a01b03168152602001886001600160a01b03166001600160a01b03168152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019950505050505050505050600060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505060365460408051631a59df7760e11b81526001600160a01b038f811660048301529151600095509190921692506334b3beee91602480820192602092909190829003018186803b1580156107d757600080fd5b505afa1580156107eb573d6000803e3d6000fd5b505050506040513d602081101561080157600080fd5b505190508615610880576040805163f866c31960e01b81526001600160a01b038b811660048301523360248301526044820186905291519183169163f866c3199160648082019260009290919082900301818387803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050506109a0565b806001600160a01b0316633edb7cb88a856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b50505050603660009054906101000a90046001600160a01b03166001600160a01b031663fa93b2a58c33866040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b505050505b6036546080850151604080516328fcf4d360e01b81526001600160a01b038e811660048301523360248301526044820193909352905191909216916328fcf4d391349160648082019260009290919082900301818588803b158015610a0457600080fd5b505af1158015610a18573d6000803e3d6000fd5b505050505060008461010001511115610c2b57806001600160a01b0316633edb7cb88a8661012001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610a9057600080fd5b505af1158015610aa4573d6000803e3d6000fd5b50505050603660009054906101000a90046001600160a01b03166001600160a01b0316638f385c228c866101200151603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2157600080fd5b505afa158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b0394851660048201526024810193909352921660448201529051606480830192600092919082900301818387803b158015610ba357600080fd5b505af1158015610bb7573d6000803e3d6000fd5b50505050886001600160a01b03168a6001600160a01b03168c6001600160a01b03167f36ca8b16d61dc13b1062adff83e3778ab92d14f9e35bfe9fd1283e02b13fb0a18761010001518861012001514260405180848152602001838152602001828152602001935050505060405180910390a45b60808085015160408087015181519283526020830187905282820152336060830152891515928201929092524260a082015290516001600160a01b03808c16928d821692918f16917f56864757fd5b1fc9f38f5f3a981cd8ae512ce41b902cf73fc506ee369c6bc2379181900360c00190a46000604051806040016040528060098152602001684e6f206572726f727360b81b81525095509550505050505b9550959350505050565b6035546001600160a01b031681565b600082610cf257506000610d3f565b82820282848281610cff57fe5b0414610d3c5760405162461bcd60e51b815260040180806020018281038252602181526020018061135a6021913960400191505060405180910390fd5b90505b92915050565b6000610d3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111a6565b60355460408051631f94a27560e31b81529051600092839283926001600160a01b039092169163fca513a891600480820192602092909190829003018186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d6020811015610dfd57600080fd5b50519050610e0961131c565b816001600160a01b031663b3596f07896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e5f57600080fd5b505afa158015610e73573d6000803e3d6000fd5b505050506040513d6020811015610e8957600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b03898116600483015291519184169163b3596f0791602480820192602092909190829003018186803b158015610edc57600080fd5b505afa158015610ef0573d6000803e3d6000fd5b505050506040513d6020811015610f0657600080fd5b50516060820152603654604080516331da9b2760e21b81526001600160a01b038b811660048301529151919092169163c76a6c9c916024808301926020929190829003018186803b158015610f5a57600080fd5b505afa158015610f6e573d6000803e3d6000fd5b505050506040513d6020811015610f8457600080fd5b50516020828101919091526036546040805163288d4ff760e21b81526001600160a01b038b811660048301529151919092169263a2353fdc9260248082019391829003018186803b158015610fd857600080fd5b505afa158015610fec573d6000803e3d6000fd5b505050506040513d602081101561100257600080fd5b505160a08201526036546040805163288d4ff760e21b81526001600160a01b038b811660048301529151919092169163a2353fdc916024808301926020929190829003018186803b15801561105657600080fd5b505afa15801561106a573d6000803e3d6000fd5b505050506040513d602081101561108057600080fd5b505160c0820152602081015160a082015160408301516110e6926064926104b8926110da916110b89190600a0a63ffffffff610ce316565b6104b88760c00151600a0a6110da8e8a60600151610ce390919063ffffffff16565b9063ffffffff610ce316565b6080820181905285101561114e5784935061114781602001516104b860646110da6111258660c00151600a0a8760600151610ce390919063ffffffff16565b6104b88760a00151600a0a6110da8c8a60400151610ce390919063ffffffff16565b9250611159565b806080015193508592505b505094509492505050565b6000610d3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611248565b600081836112325760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f75781810151838201526020016111df565b50505050905090810190601f1680156112245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161123e57fe5b0495945050505050565b6000818484111561129a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156111f75781810151838201526020016111df565b505050900390565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000600281111561130157fe5b81526000602082018190526040820181905260609091015290565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686572652069736e277420656e6f756768206c697175696469747920617661696c61626c6520746f206c697175696461746554686520636f6c6c61746572616c2063686f73656e2063616e6e6f74206265206c6971756964617465644865616c746820666163746f72206973206e6f742062656c6f7720746865207468726573686f6c645573657220646964206e6f7420626f72726f7720746865207370656369666965642063757272656e6379a264697066735822122027fd39fd7b7a695a4c6e0751b630a0a2c4d5a79b1039291af09f0cdb9586edfb64736f6c63430006080033"; diff --git a/types/LendingPoolParametersProviderFactory.ts b/types/LendingPoolParametersProviderFactory.ts index cbb4e9b4..5076787a 100644 --- a/types/LendingPoolParametersProviderFactory.ts +++ b/types/LendingPoolParametersProviderFactory.ts @@ -100,4 +100,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040526000805534801561001457600080fd5b50610290806100246000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346f4f8d114610051578063586feb401461006f578063c4d66de814610094578063d6b725ac146100d8575b600080fd5b6100596100f6565b6040518082815260200191505060405180910390f35b610077610109565b604051808381526020018281526020019250505060405180910390f35b6100d6600480360360208110156100aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610119565b005b6100e0610209565b6040518082815260200191505060405180910390f35b60006aa56fa5b99019a5c8000000905090565b6000806009610bb8915091509091565b6000610123610212565b9050600160009054906101000a900460ff1680610144575061014361021b565b5b80610150575060005481115b6101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061022d602e913960400191505060405180910390fd5b6000600160009054906101000a900460ff1615905080156101e25760018060006101000a81548160ff021916908315150217905550816000819055505b8015610204576000600160006101000a81548160ff0219169083151502179055505b505050565b60006019905090565b60006002905090565b600080303b9050600081149150509056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122050334318a13f1846df34a2f3f07056510a562429c75e298756c07808c9722f5264736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b506101e5806100246000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806346f4f8d114610051578063586feb401461006b578063c4d66de81461008c578063d6b725ac146100b4575b600080fd5b6100596100bc565b60408051918252519081900360200190f35b6100736100cb565b6040805192835260208301919091528051918290030190f35b6100b2600480360360208110156100a257600080fd5b50356001600160a01b03166100d4565b005b610059610171565b6aa56fa5b99019a5c800000090565b6009610bb89091565b60006100de610176565b60015490915060ff16806100f557506100f561017b565b80610101575060005481115b61013c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610182602e913960400191505060405180910390fd5b60015460ff1615801561015b576001805460ff19168117905560008290555b801561016c576001805460ff191690555b505050565b601990565b600290565b303b159056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122063901128b8eb0844da98c6440cfb4a178fa19b719b954c9bf24df1d1abd1811064736f6c63430006080033"; diff --git a/types/LendingRateOracleFactory.ts b/types/LendingRateOracleFactory.ts index c1f16dc8..f268246a 100644 --- a/types/LendingRateOracleFactory.ts +++ b/types/LendingRateOracleFactory.ts @@ -163,4 +163,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060006100216100c460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100cc565b600033905090565b61093c806100db6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee14610124578063bb85c0bb14610172578063f2fde38b146101ca578063fbe5ba1e1461020e5761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100da575b600080fd5b61008a610266565b005b6100d8600480360360408110156100a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103ee565b005b6100e26104ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101706004803603604081101561013a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610528565b005b6101b46004803603602081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610639565b6040518082815260200191505060405180910390f35b61020c600480360360208110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610682565b005b6102506004803603602081101561022457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061088f565b6040518082815260200191505060405180910390f35b61026e6108d8565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461032f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6103f66108d8565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105306108d8565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61068a6108d8565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461074b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806108e16026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122091810586b443199599f0d8ea92cf080251db4c906b261d8ede25a7111ca682ff64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060006100246001600160e01b0361007316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610077565b3390565b6104d3806100866000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212204134584d2bf186a26bc5c000197a27d72a145e0a3eaa0ba592365833121b292164736f6c63430006080033"; diff --git a/types/MintableErc20Factory.ts b/types/MintableErc20Factory.ts index cd70e5f1..ff60274e 100644 --- a/types/MintableErc20Factory.ts +++ b/types/MintableErc20Factory.ts @@ -360,4 +360,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200162938038062001629833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505082828160039080519060200190620001dc9291906200024c565b508060049080519060200190620001f59291906200024c565b506012600560006101000a81548160ff021916908360ff160217905550505062000225816200022e60201b60201c565b505050620002fb565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028f57805160ff1916838001178555620002c0565b82800160010185558215620002c0579182015b82811115620002bf578251825591602001919060010190620002a2565b5b509050620002cf9190620002d3565b5090565b620002f891905b80821115620002f4576000816000905550600101620002da565b5090565b90565b61131e806200030b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c8e6746eaa2d2495d8c400b50944363bb2c277d2a6826b97149af1bab3c4602e64736f6c63430006080033"; + "0x60806040523480156200001157600080fd5b5060405162000e1338038062000e13833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd9160039185019062000216565b508051620001d390600490602084019062000216565b50506005805460ff1916601217905550620001f7816001600160e01b036200020016565b505050620002bb565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025957805160ff191683800117855562000289565b8280016001018555821562000289579182015b82811115620002895782518255916020019190600101906200026c565b50620002979291506200029b565b5090565b620002b891905b80821115620002975760008155600101620002a2565b90565b610b4880620002cb6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122058c9d98164700e215f61705eda4eb5b213c1250c88ca9f40806574d566818a5564736f6c63430006080033"; diff --git a/types/MockAggregator.d.ts b/types/MockAggregator.d.ts new file mode 100644 index 00000000..8b7d147e --- /dev/null +++ b/types/MockAggregator.d.ts @@ -0,0 +1,62 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, ContractTransaction, EventFilter, Signer } from "ethers"; +import { Listener, Provider } from "ethers/providers"; +import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils"; +import { + TransactionOverrides, + TypedEventDescription, + TypedFunctionDescription +} from "."; + +interface MockAggregatorInterface extends Interface { + functions: { + latestAnswer: TypedFunctionDescription<{ encode([]: []): string }>; + }; + + events: { + AnswerUpdated: TypedEventDescription<{ + encodeTopics([current, roundId, timestamp]: [ + BigNumberish | null, + BigNumberish | null, + null + ]): string[]; + }>; + }; +} + +export class MockAggregator extends Contract { + connect(signerOrProvider: Signer | Provider | string): MockAggregator; + attach(addressOrName: string): MockAggregator; + deployed(): Promise; + + on(event: EventFilter | string, listener: Listener): MockAggregator; + once(event: EventFilter | string, listener: Listener): MockAggregator; + addListener( + eventName: EventFilter | string, + listener: Listener + ): MockAggregator; + removeAllListeners(eventName: EventFilter | string): MockAggregator; + removeListener(eventName: any, listener: Listener): MockAggregator; + + interface: MockAggregatorInterface; + + functions: { + latestAnswer(): Promise; + }; + + latestAnswer(): Promise; + + filters: { + AnswerUpdated( + current: BigNumberish | null, + roundId: BigNumberish | null, + timestamp: null + ): EventFilter; + }; + + estimate: { + latestAnswer(): Promise; + }; +} diff --git a/types/MockAggregatorBaseFactory.ts b/types/MockAggregatorBaseFactory.ts index 4f28c385..53de1c08 100644 --- a/types/MockAggregatorBaseFactory.ts +++ b/types/MockAggregatorBaseFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011c38038061011c8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a3506088806100946000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea264697066735822122083cd3338e2c5f27a248c6cdcef44a00876f4c0a90224071a888dde6fe01f9b4964736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101003803806101008339818101604052602081101561003357600080fd5b5051600081815560408051428152905183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f919081900360200190a35060818061007f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220060be671455ecf17204969f30e34b79826d0c5978aa24f70ee045096a697a9a764736f6c63430006080033"; diff --git a/types/MockAggregatorBatFactory.ts b/types/MockAggregatorBatFactory.ts index b3042254..019b55ea 100644 --- a/types/MockAggregatorBatFactory.ts +++ b/types/MockAggregatorBatFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220d02cf6d0c06b0214acfdf5e8b4a57a0c44208ace17e6c4480413bc174398d4e064736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea264697066735822122067d1fc92dfb4035995fc56942a8fac11af7dd9f3a19251990effa2c9b6e9e8ab64736f6c63430006080033"; diff --git a/types/MockAggregatorBusdFactory.ts b/types/MockAggregatorBusdFactory.ts index 4f56e5a5..b03b158a 100644 --- a/types/MockAggregatorBusdFactory.ts +++ b/types/MockAggregatorBusdFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220c29b105d310069f50df84f472945922156c9124f347756abceadb0750ad984ef64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212201f1bc6664c0ae2c54149c6ff1b532f7c023d4323052eec4d7e5668bb18caf4ad64736f6c63430006080033"; diff --git a/types/MockAggregatorDaiFactory.ts b/types/MockAggregatorDaiFactory.ts index 901b0750..c35104df 100644 --- a/types/MockAggregatorDaiFactory.ts +++ b/types/MockAggregatorDaiFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212202f3e307b78e825c1b1c5a5fb19f7c382e9b3e0cc54843d37895492794bbd407264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220bc460a71c6f5f56df369342d0898d38ca6d1be268930ce0e8c567cd7620b901364736f6c63430006080033"; diff --git a/types/MockAggregatorFactory.ts b/types/MockAggregatorFactory.ts new file mode 100644 index 00000000..4edcb705 --- /dev/null +++ b/types/MockAggregatorFactory.ts @@ -0,0 +1,96 @@ +/* Generated by ts-generator ver. 0.0.8 */ +/* tslint:disable */ + +import { Contract, ContractFactory, Signer } from "ethers"; +import { Provider } from "ethers/providers"; +import { UnsignedTransaction } from "ethers/utils/transaction"; +import { BigNumberish } from "ethers/utils"; + +import { TransactionOverrides } from "."; +import { MockAggregator } from "./MockAggregator"; + +export class MockAggregatorFactory extends ContractFactory { + constructor(signer?: Signer) { + super(_abi, _bytecode, signer); + } + + deploy( + _initialAnswer: BigNumberish, + overrides?: TransactionOverrides + ): Promise { + return super.deploy(_initialAnswer, overrides) as Promise; + } + getDeployTransaction( + _initialAnswer: BigNumberish, + overrides?: TransactionOverrides + ): UnsignedTransaction { + return super.getDeployTransaction(_initialAnswer, overrides); + } + attach(address: string): MockAggregator { + return super.attach(address) as MockAggregator; + } + connect(signer: Signer): MockAggregatorFactory { + return super.connect(signer) as MockAggregatorFactory; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): MockAggregator { + return new Contract(address, _abi, signerOrProvider) as MockAggregator; + } +} + +const _abi = [ + { + inputs: [ + { + internalType: "int256", + name: "_initialAnswer", + type: "int256" + } + ], + stateMutability: "nonpayable", + type: "constructor" + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "int256", + name: "current", + type: "int256" + }, + { + indexed: true, + internalType: "uint256", + name: "roundId", + type: "uint256" + }, + { + indexed: false, + internalType: "uint256", + name: "timestamp", + type: "uint256" + } + ], + name: "AnswerUpdated", + type: "event" + }, + { + inputs: [], + name: "latestAnswer", + outputs: [ + { + internalType: "int256", + name: "", + type: "int256" + } + ], + stateMutability: "view", + type: "function" + } +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516101003803806101008339818101604052602081101561003357600080fd5b5051600081815560408051428152905183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f919081900360200190a35060818061007f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea264697066735822122091d4f0afd82a633f8071a785eb6981a22f2cbb2175e6501f53f446275b42e05764736f6c63430006080033"; diff --git a/types/MockAggregatorKncFactory.ts b/types/MockAggregatorKncFactory.ts index fb6c67b9..8dd1a865 100644 --- a/types/MockAggregatorKncFactory.ts +++ b/types/MockAggregatorKncFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220c1598fa744ebcea86458f984f431c22f1d863e1617c6375a4e0f76d26e49d68f64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212207e4193c6d3a7b272f2a1e7e5919a1edd6c2af8c0b6c73078ae651be5282994c164736f6c63430006080033"; diff --git a/types/MockAggregatorLendFactory.ts b/types/MockAggregatorLendFactory.ts index 365c2833..1a713b00 100644 --- a/types/MockAggregatorLendFactory.ts +++ b/types/MockAggregatorLendFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea264697066735822122032a78581958ebf57e47858fd14727ea3c47822f615663616da8f69baf5da7a1964736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212201e824ba62d5f29376dee29e5a3a6929bcbd951f7cb75d88c5f4a5f736096ccd164736f6c63430006080033"; diff --git a/types/MockAggregatorLinkFactory.ts b/types/MockAggregatorLinkFactory.ts index 7942a3df..9371faf1 100644 --- a/types/MockAggregatorLinkFactory.ts +++ b/types/MockAggregatorLinkFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220d60c6adb05ffc74d674a463b81f5b9979bd3a212e71761917c690656712b11c664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212200820bb3fa0b8e5bd17658d500240b157ab200a944908b2d378035e34f0430d5864736f6c63430006080033"; diff --git a/types/MockAggregatorManaFactory.ts b/types/MockAggregatorManaFactory.ts index f67bc9d6..54d9c9ac 100644 --- a/types/MockAggregatorManaFactory.ts +++ b/types/MockAggregatorManaFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220e0700283c2ad9c9bcaba29705e84da907804c3351faaac1d4a844e902dd98e9264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220e7b3306e2bb66e9e9a3d7344a5e19e7f07bde990d057682c0c76fe83c2727a9964736f6c63430006080033"; diff --git a/types/MockAggregatorMkrFactory.ts b/types/MockAggregatorMkrFactory.ts index 58a6da31..b72ef8db 100644 --- a/types/MockAggregatorMkrFactory.ts +++ b/types/MockAggregatorMkrFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212209576800c958dbc26170623c44cb565d947f6ff35587a18bd3466e2bc765582f364736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea264697066735822122051a88c2198cb6692898abde3f0f1baf8d6b7c52201611c0a4c04453635130b6b64736f6c63430006080033"; diff --git a/types/MockAggregatorRepFactory.ts b/types/MockAggregatorRepFactory.ts index e8988ddd..89c91e4d 100644 --- a/types/MockAggregatorRepFactory.ts +++ b/types/MockAggregatorRepFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220331570ec14621ec93ed849eb6ce3809e99cbf14c7cff76248b74aa32177a639664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212205451c4b8cfbf9ded926cae2fa4db4a7f379ad06e935193895ac984bd9c8a44f464736f6c63430006080033"; diff --git a/types/MockAggregatorSnxFactory.ts b/types/MockAggregatorSnxFactory.ts index 95fd0b67..6c2c9c0c 100644 --- a/types/MockAggregatorSnxFactory.ts +++ b/types/MockAggregatorSnxFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212200ade34d4595541978f0069ee3f84bcfa09ad941dcd8c0c31f836bd282b28c5e664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea264697066735822122007bc29efab04b7548967f8ac1fb485a5f910968a04f5f02e3c409e43be252d9764736f6c63430006080033"; diff --git a/types/MockAggregatorSusdFactory.ts b/types/MockAggregatorSusdFactory.ts index fc27c600..2ae106b8 100644 --- a/types/MockAggregatorSusdFactory.ts +++ b/types/MockAggregatorSusdFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220b46ebfecbec5d74b50767e663667dabbb10adee12ebabc889ae8d9b6b7fa053c64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220396214f66cc6dae4ac4df2de75d412cda13649370d678f01f1f162f304264e5c64736f6c63430006080033"; diff --git a/types/MockAggregatorTusdFactory.ts b/types/MockAggregatorTusdFactory.ts index 84c0b8fe..d137b843 100644 --- a/types/MockAggregatorTusdFactory.ts +++ b/types/MockAggregatorTusdFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220bebe635d15b696b848f88e1caf551ca82c2e0a1297a7fe6d90136d72de92938664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212207f5bd9b60d1d2fb1c740da91ebaab40eba25d0e8c0dffb88ae5c5706d5a50dff64736f6c63430006080033"; diff --git a/types/MockAggregatorUniDaiEthFactory.ts b/types/MockAggregatorUniDaiEthFactory.ts index a67fd43a..6b1cde46 100644 --- a/types/MockAggregatorUniDaiEthFactory.ts +++ b/types/MockAggregatorUniDaiEthFactory.ts @@ -99,4 +99,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212204341bb4c01895983b3ca0479cca92832f0757a690d801c27f5b7b6b33dd9977664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220ca9e7e837206f25a56d62db3aae4fc49a3e0ed327373cc7ef1b4a8135e04b94d64736f6c63430006080033"; diff --git a/types/MockAggregatorUniLendEthFactory.ts b/types/MockAggregatorUniLendEthFactory.ts index f7818126..53af6405 100644 --- a/types/MockAggregatorUniLendEthFactory.ts +++ b/types/MockAggregatorUniLendEthFactory.ts @@ -99,4 +99,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212209567b705725cb720d9f6843fb3872e7ae5e6b2e05cb8f50704bdf18bc6a7177164736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212202cd94c803b45c9921e61b7e529507ff5a46911bf92147594a184752785dd9b5f64736f6c63430006080033"; diff --git a/types/MockAggregatorUniLinkEthFactory.ts b/types/MockAggregatorUniLinkEthFactory.ts index fd60770b..cc1b44eb 100644 --- a/types/MockAggregatorUniLinkEthFactory.ts +++ b/types/MockAggregatorUniLinkEthFactory.ts @@ -99,4 +99,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea264697066735822122039c8656a5c4707e3eead0f89d5f1f904cdb984bea0b3a851a1dccd2ae03e976264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220fa715ec3aad02e0fd561be2b226d91f615ba8269690fbf2c624f5610ef7a0a7464736f6c63430006080033"; diff --git a/types/MockAggregatorUniMkrEthFactory.ts b/types/MockAggregatorUniMkrEthFactory.ts index 525282dd..b5f2c3e9 100644 --- a/types/MockAggregatorUniMkrEthFactory.ts +++ b/types/MockAggregatorUniMkrEthFactory.ts @@ -99,4 +99,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220ed4b87d7262d695100f7153ed281ae4ec9e604ba0888c89aaf7cbff346bdf48164736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220abf8bc4ec473889426cc620b5807dad5ca0183f6f27ac1e6b0cb65215ac6a46164736f6c63430006080033"; diff --git a/types/MockAggregatorUniSethEthFactory.ts b/types/MockAggregatorUniSethEthFactory.ts index 3cb006bc..71815fcb 100644 --- a/types/MockAggregatorUniSethEthFactory.ts +++ b/types/MockAggregatorUniSethEthFactory.ts @@ -99,4 +99,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220c16aa8271366865432ec9445872473ce919c2efc6371d93459d7c491f0d0e7f164736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212208b07eebb75d27ac2e2a7c4abf0ca885abe8ca170052598567ded0cb201fa393c64736f6c63430006080033"; diff --git a/types/MockAggregatorUniUsdcEthFactory.ts b/types/MockAggregatorUniUsdcEthFactory.ts index 5f0f5947..7b2e1376 100644 --- a/types/MockAggregatorUniUsdcEthFactory.ts +++ b/types/MockAggregatorUniUsdcEthFactory.ts @@ -99,4 +99,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220c368ade4c20877ddb0302dffbaf15f0be531420a6307e8f382e17b65660efd4564736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212207b5e291e8ee45269d7da3ffbcde11e1e7aa111accc3860a61ba11cf7f5b1537c64736f6c63430006080033"; diff --git a/types/MockAggregatorUsdFactory.ts b/types/MockAggregatorUsdFactory.ts index 8c5e2af9..6292edbc 100644 --- a/types/MockAggregatorUsdFactory.ts +++ b/types/MockAggregatorUsdFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212204366c81037a4bd22a4dda381a8dcb57bba51ded018460de1712311df41f7f54d64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220cb5c993248f4342cf40f7bbb24442b022562eaff82fda810c453624d5d0219a064736f6c63430006080033"; diff --git a/types/MockAggregatorUsdcFactory.ts b/types/MockAggregatorUsdcFactory.ts index e3de6db8..64be4067 100644 --- a/types/MockAggregatorUsdcFactory.ts +++ b/types/MockAggregatorUsdcFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220a36d5e330ae7f70e43dc9d7c352fb20b10a3a0ac3a877b9df0d748b9769eb2df64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea26469706673582212207e0f1f2e3dd25f21390c9d6570efbeef685fd04deb69739a738caf0b76f69e4364736f6c63430006080033"; diff --git a/types/MockAggregatorUsdtFactory.ts b/types/MockAggregatorUsdtFactory.ts index bfae57da..d45035a2 100644 --- a/types/MockAggregatorUsdtFactory.ts +++ b/types/MockAggregatorUsdtFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212205eae2ea79916a25c9791526457bc25756ddb322fac4714808f61801549334d1064736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220ff69adca6a02f40ad3cce7511dae9b05d9ca200542516300e4831201703d838a64736f6c63430006080033"; diff --git a/types/MockAggregatorWbtcFactory.ts b/types/MockAggregatorWbtcFactory.ts index a842cdc9..5cf07aac 100644 --- a/types/MockAggregatorWbtcFactory.ts +++ b/types/MockAggregatorWbtcFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea2646970667358221220c04f5341670ccd48c16c9751777b36f460e3770e6f651ee1c01a936681b09bb464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220d04d858e564e9146e058acc517c8cd10ec96da2fd6644019d09878f36c509fd564736f6c63430006080033"; diff --git a/types/MockAggregatorZrxFactory.ts b/types/MockAggregatorZrxFactory.ts index 293387a0..2d9d7b5f 100644 --- a/types/MockAggregatorZrxFactory.ts +++ b/types/MockAggregatorZrxFactory.ts @@ -95,4 +95,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161011e38038061011e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080806000819055506000817f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a350506088806100966000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000805490509056fea26469706673582212209a80f49cf5ebb27678a40bb2c080f9e2e3f5c6b4220d47b754357fb856b985de64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516101033803806101038339818101604052602081101561003357600080fd5b5051600081815560408051428152905183929183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f9181900360200190a350506081806100826000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806350d25bcd14602d575b600080fd5b60336045565b60408051918252519081900360200190f35b6000549056fea2646970667358221220b3b36b1466563d2296ad3911021352eba21919c06775a8d54892854f5d944bf664736f6c63430006080033"; diff --git a/types/MockBatFactory.ts b/types/MockBatFactory.ts index a103543c..cd6786bf 100644 --- a/types/MockBatFactory.ts +++ b/types/MockBatFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f42415400000000000000000000000000000000000000000000000000000000008152506040518060400160405280601581526020017f426173696320417474656e74696f6e20546f6b656e00000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205b52a9cfb16c6c4efadcf71492f6fd5c78b1ebf94d0611a4e386b5b8604ab4b564736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600381526020016210905560ea1b8152506040518060400160405280601581526020017f426173696320417474656e74696f6e20546f6b656e000000000000000000000081525060128282816003908051906020019061007d9291906100d1565b5080516100919060049060208401906100d1565b50506005805460ff19166012179055506100b3816001600160e01b036100bb16565b50505061016c565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061011257805160ff191683800117855561013f565b8280016001018555821561013f579182015b8281111561013f578251825591602001919060010190610124565b5061014b92915061014f565b5090565b61016991905b8082111561014b5760008155600101610155565b90565b610b488061017b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220158537984c7e94231132d6c274c79f2a16ac8391950f053ef11e385cd59cb81b64736f6c63430006080033"; diff --git a/types/MockBusdFactory.ts b/types/MockBusdFactory.ts index 946312ef..942f82c7 100644 --- a/types/MockBusdFactory.ts +++ b/types/MockBusdFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f42555344000000000000000000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f42696e616e6365205553440000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208e071c21c5897b64d7ab5ac419455a556a3d49f8df822736024af81d8e34c23864736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060405180604001604052806004815260200163109554d160e21b8152506040518060400160405280600b81526020016a109a5b985b98d9481554d160aa1b81525060128282816003908051906020019061006c9291906100c0565b5080516100809060049060208401906100c0565b50506005805460ff19166012179055506100a2816001600160e01b036100aa16565b50505061015b565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010157805160ff191683800117855561012e565b8280016001018555821561012e579182015b8281111561012e578251825591602001919060010190610113565b5061013a92915061013e565b5090565b61015891905b8082111561013a5760008155600101610144565b90565b610b488061016a6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209036ef75e7cc780d1302719579b0c0b11a8a3ac5565964bf64994bcc34c9817864736f6c63430006080033"; diff --git a/types/MockDaiFactory.ts b/types/MockDaiFactory.ts index 8d2ac4d3..e258fb46 100644 --- a/types/MockDaiFactory.ts +++ b/types/MockDaiFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f44414900000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f44414900000000000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ec756f92c4a50a84609591163ec498746ff138bd1eba93bb4b10f6abd161dbbb64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600381526020016244414960e81b8152506040518060400160405280600381526020016244414960e81b8152506012828281600390805190602001906100639291906100b7565b5080516100779060049060208401906100b7565b50506005805460ff1916601217905550610099816001600160e01b036100a116565b505050610152565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100f857805160ff1916838001178555610125565b82800160010185558215610125579182015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b61014f91905b80821115610131576000815560010161013b565b90565b610b48806101616000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ab71b861c25cccb8d317f9caef3d0c12674259017d09a729d38515ecd5f7c3ac64736f6c63430006080033"; diff --git a/types/MockFlashLoanReceiverFactory.ts b/types/MockFlashLoanReceiverFactory.ts index f6606828..d5001fb0 100644 --- a/types/MockFlashLoanReceiverFactory.ts +++ b/types/MockFlashLoanReceiverFactory.ts @@ -166,4 +166,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405260008060146101000a81548160ff02191690831515021790555034801561002a57600080fd5b50604051610c35380380610c358339818101604052602081101561004d57600080fd5b810190808051906020019092919050505080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610b85806100b06000396000f3fe6080604052600436106100385760003560e01c8063388f70f114610044578063c72c4d1014610081578063ee872558146100d85761003f565b3661003f57005b600080fd5b34801561005057600080fd5b5061007f6004803603602081101561006757600080fd5b810190808035151590602001909291905050506101d4565b005b34801561008d57600080fd5b506100966101f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100e457600080fd5b506101d2600480360360808110156100fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561014c57600080fd5b82018360208201111561015e57600080fd5b8035906020019184600183028401116401000000008311171561018057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610216565b005b80600060146101000a81548160ff02191690831515021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008490506102253086610489565b84111561029a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496e76616c69642062616c616e636520666f722074686520636f6e747261637481525060200191505060405180910390fd5b600060149054906101000a900460ff1615610328577f816f6a6bc084e1996be1a831afa1af30763d0501b6b43b9e1922a11f347366d7858585604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150610483565b6103306105a6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146103f2578073ffffffffffffffffffffffffffffffffffffffff1663a0712d68846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156103b557600080fd5b505af11580156103c9573d6000803e3d6000fd5b505050506040513d60208110156103df57600080fd5b8101908080519060200190929190505050505b61040e8561040985876105c290919063ffffffff16565b61064a565b7f7d94e9d0c906b8d7b2b52a581b9e9ba728aa6f8cd8532bd87243d193f47401be858585604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1505b50505050565b60006104936105a6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156104e5578273ffffffffffffffffffffffffffffffffffffffff163190506105a0565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561056257600080fd5b505afa158015610576573d6000803e3d6000fd5b505050506040513d602081101561058c57600080fd5b810190808051906020019092919050505090505b92915050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b600080828401905083811015610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156106b357600080fd5b505afa1580156106c7573d6000803e3d6000fd5b505050506040513d60208110156106dd57600080fd5b810190808051906020019092919050505090506106fb818484610700565b505050565b6107086105a6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107a6578273ffffffffffffffffffffffffffffffffffffffff168160405180600001905060006040518083038185875af1925050503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b5050506107d2565b6107d183828473ffffffffffffffffffffffffffffffffffffffff166107d79092919063ffffffff16565b5b505050565b61088a8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061088f565b505050565b6108ae8273ffffffffffffffffffffffffffffffffffffffff16610ada565b610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061096f578051825260208201915060208101905060208303925061094c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109d1576040519150601f19603f3d011682016040523d82523d6000602084013e6109d6565b606091505b509150915081610a4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610ad457808060200190516020811015610a6d57600080fd5b8101908080519060200190929190505050610ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610b26602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610b1c57506000801b8214155b9250505091905056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220786a7c21f296333f0744f23ae49949fccf13ab6f3e1019a45a379b0f9b4ed98264736f6c63430006080033"; + "0x60806040526000805460ff60a01b1916905534801561001d57600080fd5b506040516108c53803806108c58339818101604052602081101561004057600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610853806100726000396000f3fe6080604052600436106100385760003560e01c8063388f70f114610044578063c72c4d1014610072578063ee872558146100a35761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100706004803603602081101561006757600080fd5b50351515610172565b005b34801561007e57600080fd5b50610087610190565b604080516001600160a01b039092168252519081900360200190f35b3480156100af57600080fd5b50610070600480360360808110156100c657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156100fd57600080fd5b82018360208201111561010f57600080fd5b8035906020019184600183028401116401000000008311171561013157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061019f945050505050565b60008054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031681565b836101aa308261035c565b8411156101fe576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b600054600160a01b900460ff161561025f57604080516001600160a01b03871681526020810186905280820185905290517f816f6a6bc084e1996be1a831afa1af30763d0501b6b43b9e1922a11f347366d79181900360600190a150610356565b61026761041b565b6001600160a01b0316856001600160a01b0316146102f257806001600160a01b031663a0712d68846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156102c557600080fd5b505af11580156102d9573d6000803e3d6000fd5b505050506040513d60208110156102ef57600080fd5b50505b61030b85610306868663ffffffff61043316565b610494565b604080516001600160a01b03871681526020810186905280820185905290517f7d94e9d0c906b8d7b2b52a581b9e9ba728aa6f8cd8532bd87243d193f47401be9181900360600190a1505b50505050565b600061036661041b565b6001600160a01b0316826001600160a01b0316141561039057506001600160a01b03821631610415565b816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103e657600080fd5b505afa1580156103fa573d6000803e3d6000fd5b505050506040513d602081101561041057600080fd5b505190505b92915050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b60008282018381101561048d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156104e357600080fd5b505afa1580156104f7573d6000803e3d6000fd5b505050506040513d602081101561050d57600080fd5b5051905061051c818484610521565b505050565b61052961041b565b6001600160a01b0316826001600160a01b03161415610598576040516001600160a01b038416908290600081818185875af1925050503d806000811461058b576040519150601f19603f3d011682016040523d82523d6000602084013e610590565b606091505b50505061051c565b61051c6001600160a01b038316848363ffffffff6105b216565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261051c908490610611826001600160a01b03166107b7565b610662576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106106a05780518252601f199092019160209182019101610681565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610702576040519150601f19603f3d011682016040523d82523d6000602084013e610707565b606091505b50915091508161075e576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156103565780806020019051602081101561077a57600080fd5b50516103565760405162461bcd60e51b815260040180806020018281038252602a8152602001806107f4602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906107eb57508115155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212205213a82cae92575961239453c62b2f128e07301b8cc934f702636a90eaa09ecd64736f6c63430006080033"; diff --git a/types/MockKncFactory.ts b/types/MockKncFactory.ts index bac8bae5..6207ca63 100644 --- a/types/MockKncFactory.ts +++ b/types/MockKncFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f4b4e4300000000000000000000000000000000000000000000000000000000008152506040518060400160405280600d81526020017f4b79626572204e6574776f726b000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ce5cace56cc96f6635060c56808c3b778fef1e7dd3dd27107f785f5ee086538d64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060038152602001624b4e4360e81b8152506040518060400160405280600d81526020016c4b79626572204e6574776f726b60981b81525060128282816003908051906020019061006d9291906100c1565b5080516100819060049060208401906100c1565b50506005805460ff19166012179055506100a3816001600160e01b036100ab16565b50505061015c565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010257805160ff191683800117855561012f565b8280016001018555821561012f579182015b8281111561012f578251825591602001919060010190610114565b5061013b92915061013f565b5090565b61015991905b8082111561013b5760008155600101610145565b90565b610b488061016b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122056c234f6185c33236de7592f34f133844b5a3802b94610c5974bbf2c2553447464736f6c63430006080033"; diff --git a/types/MockKyberProxyFactory.ts b/types/MockKyberProxyFactory.ts index daa7eec1..7113dd7c 100644 --- a/types/MockKyberProxyFactory.ts +++ b/types/MockKyberProxyFactory.ts @@ -121,4 +121,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506040516109203803806109208339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061088c806100946000396000f3fe6080604052600436106100295760003560e01c806329589f611461002e5780634f1b86eb1461015a575b600080fd5b610144600480360361010081101561004557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561010057600080fd5b82018360208201111561011257600080fd5b8035906020019184600183028401116401000000008311171561013457600080fd5b90919293919293905050506101b1565b6040518082815260200191505060405180910390f35b34801561016657600080fd5b5061016f6103b0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68670de0b6b3a76400006040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561022f57600080fd5b505af1158015610243573d6000803e3d6000fd5b505050506040513d602081101561025957600080fd5b81019080805190602001909291905050506102dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54524144455f574954485f48494e542e205265766572746564206d696e74282981525060200191505060405180910390fd5b6102e46103d5565b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146103445761034333308b8d73ffffffffffffffffffffffffffffffffffffffff166103f1909392919063ffffffff16565b5b61039833670de0b6b3a76400006000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166104de9092919063ffffffff16565b670de0b6b3a764000090509998505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b6104d8846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610596565b50505050565b6105918363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610596565b505050565b6105b58273ffffffffffffffffffffffffffffffffffffffff166107e1565b610627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106106765780518252602082019150602081019050602083039250610653565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146106d8576040519150601f19603f3d011682016040523d82523d6000602084013e6106dd565b606091505b509150915081610755576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156107db5780806020019051602081101561077457600080fd5b81019080805190602001909291905050506107da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061082d602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561082357506000801b8214155b9250505091905056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220e4edc96bf0a1cf3ebc50d752e471c20c700219387601db4e22992b5dd725cdca64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516105fd3803806105fd8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610598806100656000396000f3fe6080604052600436106100295760003560e01c806329589f611461002e5780634f1b86eb146100ec575b600080fd5b6100da600480360361010081101561004557600080fd5b6001600160a01b0382358116926020810135926040820135831692606083013581169260808101359260a08201359260c0830135169190810190610100810160e082013564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460018302840111640100000000831117156100cf57600080fd5b50909250905061011d565b60408051918252519081900360200190f35b3480156100f857600080fd5b50610101610266565b604080516001600160a01b039092168252519081900360200190f35b600080546040805163140e25ad60e31b8152670de0b6b3a7640000600482015290516001600160a01b039092169163a0712d689160248082019260209290919082900301818787803b15801561017257600080fd5b505af1158015610186573d6000803e3d6000fd5b505050506040513d602081101561019c57600080fd5b50516101ef576040805162461bcd60e51b815260206004820181905260248201527f54524144455f574954485f48494e542e205265766572746564206d696e742829604482015290519081900360640190fd5b6101f7610275565b6001600160a01b03168a6001600160a01b03161461022a5761022a6001600160a01b038b1633308c63ffffffff61028d16565b60005461024f906001600160a01b031633670de0b6b3a764000063ffffffff6102ed16565b50670de0b6b3a76400009998505050505050505050565b6000546001600160a01b031681565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526102e7908590610344565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261033f908490610344565b505050565b610356826001600160a01b03166104fc565b6103a7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106103e55780518252601f1990920191602091820191016103c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610447576040519150601f19603f3d011682016040523d82523d6000602084013e61044c565b606091505b5091509150816104a3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156102e7578080602001905160208110156104bf57600080fd5b50516102e75760405162461bcd60e51b815260040180806020018281038252602a815260200180610539602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061053057508115155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212204217cd7d546f66051c30fdaa4e283314470f9c5edda974b8ca382dab7b05781364736f6c63430006080033"; diff --git a/types/MockLendFactory.ts b/types/MockLendFactory.ts index 87b52110..da79ad95 100644 --- a/types/MockLendFactory.ts +++ b/types/MockLendFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4c454e44000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c454e44000000000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208e9845b9c73772123b417ee8006a533e37120c0d6a606d6aa329711c97f3947f64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001631311539160e21b815250604051806040016040528060048152602001631311539160e21b8152506012828281600390805190602001906100659291906100b9565b5080516100799060049060208401906100b9565b50506005805460ff191660121790555061009b816001600160e01b036100a316565b505050610154565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100fa57805160ff1916838001178555610127565b82800160010185558215610127579182015b8281111561012757825182559160200191906001019061010c565b50610133929150610137565b5090565b61015191905b80821115610133576000815560010161013d565b90565b610b48806101636000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122028771d83d4aaeef1112c3b75c773de202989df72352df12eb488f236925d54f364736f6c63430006080033"; diff --git a/types/MockLendingPoolCoreFactory.ts b/types/MockLendingPoolCoreFactory.ts index 535a03ac..1e981d6e 100644 --- a/types/MockLendingPoolCoreFactory.ts +++ b/types/MockLendingPoolCoreFactory.ts @@ -1704,7 +1704,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600080553480156200001557600080fd5b50619ce480620000266000396000f3fe6080604052600436106104145760003560e01c8063a2353fdc1161021e578063d15e005311610123578063e8ae2f5b116100ab578063f61483111161007a578063f61483111461211b578063f6ea8d76146121e0578063fa51854c14612265578063fa93b2a5146122e2578063feab31ac1461235d5761048f565b8063e8ae2f5b14611fb7578063eede87c114612008578063ef1f937314612065578063f054ab46146120b65761048f565b8063dae4c4e7116100f2578063dae4c4e714611d6b578063e10076ad14611dbc578063e2174d8614611e5a578063e240301914611eed578063e6d1819014611f525761048f565b8063d15e005314611bb9578063d3ae26b314611c1e578063d466016f14611c75578063da12d96f14611cd05761048f565b8063bd7fd79a116101a6578063c540148e11610175578063c540148e146119b9578063c72c4d1014611a1e578063c76a6c9c14611a75578063c7d1423714611ada578063d06e2ec114611b685761048f565b8063bd7fd79a14611839578063bfacad841461189e578063c33cfd9014611903578063c4d66de8146119685761048f565b8063afcdbea3116101ed578063afcdbea314611624578063b701d093146116ab578063b75d6f3414611710578063b8c0f74514611761578063bcd6ffa4146117b25761048f565b8063a2353fdc14611470578063a5bc826c146114d5578063a8dc0f4514611544578063af825b07146115955761048f565b80635cf2e656116103245780637aca76eb116102ac578063906c0a411161027b578063906c0a411461122157806398bd4737146112865780639e3c4f3b146112eb5780639e674848146113745780639fb8afcd146113dd5761048f565b80637aca76eb146110985780637f90fec5146110e957806388079d881461114e5780638f385c22146111b35761048f565b806366d103f3116102f357806366d103f314610dd257806368beb4d614610e575780636ae1441614610f275780636fffab0c14610fb857806370fb84f41461103d5761048f565b80635cf2e65614610c795780635fc526ff14610ce25780636468108314610d6057806366bbd92814610d775761048f565b80633443a14b116103a757806345330a401161037657806345330a4014610a2257806346bc0f2814610abd5780634a08accb14610b225780634f14460914610b8b5780634fe7a6e514610bfe5761048f565b80633443a14b1461083857806334b3beee1461089357806337ac6fe4146109245780633e72a454146109d15761048f565b806318f9bbae116103e357806318f9bbae1461065d5780631ca19f19146106c65780631d2118f91461075957806328fcf4d3146107ca5761048f565b806305075d6e146104945780630902f1ac146104fd57806309ac29531461056957806318a4dbca146105d85761048f565b3661048f576104383373ffffffffffffffffffffffffffffffffffffffff166123e2565b61048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180619a136036913960400191505060405180910390fd5b005b600080fd5b3480156104a057600080fd5b506104e3600480360360208110156104b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061242d565b604051808215151515815260200191505060405180910390f35b34801561050957600080fd5b5061051261248b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561055557808201518184015260208101905061053a565b505050509050019250505060405180910390f35b34801561057557600080fd5b506105d66004803603608081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050612519565b005b3480156105e457600080fd5b50610647600480360360408110156105fb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612695565b6040518082815260200191505060405180910390f35b34801561066957600080fd5b506106ac6004803603602081101561068057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127be565b604051808215151515815260200191505060405180910390f35b3480156106d257600080fd5b50610735600480360360408110156106e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061281c565b6040518082600281111561074557fe5b60ff16815260200191505060405180910390f35b34801561076557600080fd5b506107c86004803603604081101561077c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128d4565b005b610836600480360360608110156107e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a7f565b005b34801561084457600080fd5b506108916004803603604081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d4c565b005b34801561089f57600080fd5b506108e2600480360360208110156108b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ec3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561093057600080fd5b506109b4600480360360a081101561094757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190505050612f34565b604051808381526020018281526020019250505060405180910390f35b3480156109dd57600080fd5b50610a20600480360360208110156109f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613032565b005b348015610a2e57600080fd5b50610abb60048036036080811015610a4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506131bc565b005b348015610ac957600080fd5b50610b0c60048036036020811015610ae057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613408565b6040518082815260200191505060405180910390f35b348015610b2e57600080fd5b50610b7160048036036020811015610b4557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613459565b604051808215151515815260200191505060405180910390f35b348015610b9757600080fd5b50610bda60048036036020811015610bae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134b7565b604051808264ffffffffff1664ffffffffff16815260200191505060405180910390f35b348015610c0a57600080fd5b50610c3760048036036020811015610c2157600080fd5b8101908080359060200190929190505050613519565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c8557600080fd5b50610cc860048036036020811015610c9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613555565b604051808215151515815260200191505060405180910390f35b348015610cee57600080fd5b50610d3160048036036020811015610d0557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135b3565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b348015610d6c57600080fd5b50610d75613643565b005b348015610d8357600080fd5b50610dd060048036036040811015610d9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613773565b005b348015610dde57600080fd5b50610e4160048036036040811015610df557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138ea565b6040518082815260200191505060405180910390f35b348015610e6357600080fd5b50610f256004803603610120811015610e7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190505050613991565b005b348015610f3357600080fd5b50610f7660048036036020811015610f4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a94565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fc457600080fd5b5061102760048036036040811015610fdb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b05565b6040518082815260200191505060405180910390f35b34801561104957600080fd5b506110966004803603604081101561106057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b94565b005b3480156110a457600080fd5b506110e7600480360360208110156110bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d0b565b005b3480156110f557600080fd5b506111386004803603602081101561110c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e95565b6040518082815260200191505060405180910390f35b34801561115a57600080fd5b5061119d6004803603602081101561117157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ee6565b6040518082815260200191505060405180910390f35b61121f600480360360608110156111c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506140ae565b005b34801561122d57600080fd5b506112706004803603602081101561124457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614305565b6040518082815260200191505060405180910390f35b34801561129257600080fd5b506112d5600480360360208110156112a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614411565b6040518082815260200191505060405180910390f35b3480156112f757600080fd5b5061135a6004803603604081101561130e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614462565b604051808215151515815260200191505060405180910390f35b34801561138057600080fd5b506113c36004803603602081101561139757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506144fe565b604051808215151515815260200191505060405180910390f35b3480156113e957600080fd5b5061144c6004803603604081101561140057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061455c565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561147c57600080fd5b506114bf6004803603602081101561149357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614682565b6040518082815260200191505060405180910390f35b3480156114e157600080fd5b50611542600480360360808110156114f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291905050506146ce565b005b34801561155057600080fd5b506115936004803603602081101561156757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506148b9565b005b3480156115a157600080fd5b5061160e600480360360608110156115b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a89565b6040518082815260200191505060405180910390f35b34801561163057600080fd5b506116a96004803603608081101561164757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050614bdc565b005b3480156116b757600080fd5b506116fa600480360360208110156116ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614cee565b6040518082815260200191505060405180910390f35b34801561171c57600080fd5b5061175f6004803603602081101561173357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614d3f565b005b34801561176d57600080fd5b506117b06004803603602081101561178457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614f36565b005b3480156117be57600080fd5b50611837600480360360808110156117d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035151590602001909291905050506150c0565b005b34801561184557600080fd5b506118886004803603602081101561185c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506151d2565b6040518082815260200191505060405180910390f35b3480156118aa57600080fd5b506118ed600480360360208110156118c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615223565b6040518082815260200191505060405180910390f35b34801561190f57600080fd5b506119526004803603602081101561192657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506152c5565b6040518082815260200191505060405180910390f35b34801561197457600080fd5b506119b76004803603602081101561198b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615334565b005b3480156119c557600080fd5b50611a08600480360360208110156119dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061546d565b6040518082815260200191505060405180910390f35b348015611a2a57600080fd5b50611a336154be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015611a8157600080fd5b50611ac460048036036020811015611a9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506154e4565b6040518082815260200191505060405180910390f35b611b6660048036036080811015611af057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615535565b005b348015611b7457600080fd5b50611bb760048036036020811015611b8b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506157e8565b005b348015611bc557600080fd5b50611c0860048036036020811015611bdc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615e40565b6040518082815260200191505060405180910390f35b348015611c2a57600080fd5b50611c33615e95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015611c8157600080fd5b50611cce60048036036040811015611c9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615ebb565b005b348015611cdc57600080fd5b50611d69600480360360c0811015611cf357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190505050616032565b005b348015611d7757600080fd5b50611dba60048036036020811015611d8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616106565b005b348015611dc857600080fd5b50611e2b60048036036040811015611ddf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616290565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b348015611e6657600080fd5b50611ed360048036036060811015611e7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506163e0565b604051808215151515815260200191505060405180910390f35b348015611ef957600080fd5b50611f3c60048036036020811015611f1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616511565b6040518082815260200191505060405180910390f35b348015611f5e57600080fd5b50611fa160048036036020811015611f7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061661f565b6040518082815260200191505060405180910390f35b348015611fc357600080fd5b5061200660048036036020811015611fda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061666f565b005b34801561201457600080fd5b506120636004803603604081101561202b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061683f565b005b34801561207157600080fd5b506120b46004803603602081101561208857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616a1c565b005b3480156120c257600080fd5b50612105600480360360208110156120d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616ba6565b6040518082815260200191505060405180910390f35b34801561212757600080fd5b506121b5600480360360c081101561213e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803560ff169060200190929190505050616bf7565b604051808360028111156121c557fe5b60ff1681526020018281526020019250505060405180910390f35b3480156121ec57600080fd5b5061224f6004803603604081101561220357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616ce4565b6040518082815260200191505060405180910390f35b34801561227157600080fd5b506122e06004803603606081101561228857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050616d73565b005b3480156122ee57600080fd5b5061235b6004803603606081101561230557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616ebb565b005b34801561236957600080fd5b506123cc6004803603604081101561238057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506170b3565b6040518082815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561242457506000801b8214155b92505050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601c9054906101000a900460ff16915050919050565b6060603880548060200260200160405190810160405280929190818152602001828054801561250f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116124c5575b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b6125c98482617142565b612610603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b600061262d61261e8661661f565b856173c290919063ffffffff16565b90506126828184603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061744a9092919063ffffffff16565b61268e858460006174b5565b5050505050565b600080603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561277a57600080fd5b505afa15801561278e573d6000803e3d6000fd5b505050506040513d60208110156127a457600080fd5b810190808051906020019092919050505091505092915050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601a9054906101000a900460ff16915050919050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414156128b45760009150506128ce565b60008160030154116128c75760026128ca565b60015b9150505b92915050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561295357600080fd5b505afa158015612967573d6000803e3d6000fd5b505050506040513d602081101561297d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146129fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b80603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b612b2d6174f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612bea5760003414612bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180619aa96032913960400191505060405180910390fd5b612be58230838673ffffffffffffffffffffffffffffffffffffffff16617515909392919063ffffffff16565b612d47565b80341015612c43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806199de6035913960400191505060405180910390fd5b80341115612d46576000612c60823461760290919063ffffffff16565b905060008373ffffffffffffffffffffffffffffffffffffffff168361c35090604051806000019050600060405180830381858888f193505050503d8060008114612cc7576040519150601f19603f3d011682016040523d82523d6000602084013e612ccc565b606091505b5050905080612d43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b50505b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015612dcb57600080fd5b505afa158015612ddf573d6000803e3d6000fd5b505050506040513d6020811015612df557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160090181905550505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600c0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000803373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b600080612fea898961455c565b9250509150612ffd898984848b8a61764c565b61300b898989848a8a6176a9565b613017896000896174b5565b61302189896178cf565b819350935050509550959350505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156130b157600080fd5b505afa1580156130c5573d6000803e3d6000fd5b505050506040513d60208110156130db57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613158576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01601c6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561323b57600080fd5b505afa15801561324f573d6000803e3d6000fd5b505050506040513d602081101561326557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146132e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__6313769cd490918585856040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060006040518083038186803b1580156133e157600080fd5b505af41580156133f5573d6000803e3d6000fd5b50505050613402846179f8565b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060060154915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601d9054906101000a900460ff16915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d0160149054906101000a900464ffffffffff16915050919050565b6038818154811061352657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d0160199054906101000a900460ff16915050919050565b6000806000806000806000806000603660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600b01549450806008015493508060090154925080600d01601a9054906101000a900460ff16915084848484985098509850985050505050509193509193565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156136c257600080fd5b505afa1580156136d6573d6000803e3d6000fd5b505050506040513d60208110156136ec57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b613771617afb565b565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156137f257600080fd5b505afa158015613806573d6000803e3d6000fd5b505050506040513d602081101561381c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508181600b0181905550505050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060040160009054906101000a900464ffffffffff1664ffffffffff1691505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b613a4389888885617be0565b613a4c88617d40565b613a598988888786617d8a565b613a65898760006174b5565b80613a8957613a88886000613a8386896173c290919063ffffffff16565b6174b5565b5b505050505050505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806003015491505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015613c1357600080fd5b505afa158015613c27573d6000803e3d6000fd5b505050506040513d6020811015613c3d57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508181600a0181905550505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015613d8a57600080fd5b505afa158015613d9e573d6000803e3d6000fd5b505050506040513d6020811015613db457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614613e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600181600d01601d6101000a81548160ff0219169083151502179055505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9457600080fd5b505afa158015613fa8573d6000803e3d6000fd5b505050506040513d6020811015613fbe57600080fd5b8101908080519060200190929190505050905060008260050154141561409f578073ffffffffffffffffffffffffffffffffffffffff1663bb85c0bb856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561405b57600080fd5b505afa15801561406f573d6000803e3d6000fd5b505050506040513d602081101561408557600080fd5b8101908080519060200190929190505050925050506140a9565b8160050154925050505b919050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b6000819050600034146141b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806199586036913960400191505060405180910390fd5b6141ba6174f9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461421c5761421781848673ffffffffffffffffffffffffffffffffffffffff16617f0a9092919063ffffffff16565b6142ff565b60008173ffffffffffffffffffffffffffffffffffffffff168461c35090604051806000019050600060405180830381858888f193505050503d8060008114614281576040519150601f19603f3d011682016040523d82523d6000602084013e614286565b606091505b50509050806142fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b505b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816004015414156144035780600d0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b1580156143c057600080fd5b505afa1580156143d4573d6000803e3d6000fd5b505050506040513d60208110156143ea57600080fd5b810190808051906020019092919050505091505061440c565b80600401549150505b919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060030154915050919050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060040160059054906101000a900460ff1691505092915050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d01601b9054906101000a900460ff16915050919050565b600080600080603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414156146075760008060008292508191508090509350935093505061467b565b600081600001549050600061465a83603660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617fc2565b90508181614671848461760290919063ffffffff16565b9550955095505050505b9250925092565b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561474d57600080fd5b505afa158015614761573d6000803e3d6000fd5b505050506040513d602081101561477757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146147f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__6324ddc4e690918585856040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060006040518083038186803b15801561489b57600080fd5b505af41580156148af573d6000803e3d6000fd5b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561493857600080fd5b505afa15801561494c573d6000803e3d6000fd5b505050506040513d602081101561496257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16146149df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__63e5df56a690916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015614a6e57600080fd5b505af4158015614a82573d6000803e3d6000fd5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b614b3c8484846180f9565b614b478484846181e5565b614b53846000806174b5565b603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015490509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614c82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b614cc9603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b614cd5846000846174b5565b8015614ce857614ce784846000616d73565b5b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060070154915050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015614dbe57600080fd5b505afa158015614dd2573d6000803e3d6000fd5b505050506040513d6020811015614de857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614614e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154118015614ec0575060008160070154115b614f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180619ba16024913960400191505060405180910390fd5b600181600d01601c6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015614fb557600080fd5b505afa158015614fc9573d6000803e3d6000fd5b505050506040513d6020811015614fdf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461505c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01601b6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b6151ad603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b6151b9848360006174b5565b80156151cc576151cb84846001616d73565b5b50505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000154915050919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061527282618300565b90506000811415615288576000925050506152c0565b600061529385616511565b90506152ba6152ab83836173c290919063ffffffff16565b8361832490919063ffffffff16565b93505050505b919050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061532c61531582618300565b61531e85616511565b6173c290919063ffffffff16565b915050919050565b600061533e618380565b9050600160009054906101000a900460ff168061535f575061535e618389565b5b8061536b575060005481115b6153c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180619c0a602e913960400191505060405180910390fd5b6000600160009054906101000a900460ff1615905080156153fd5760018060006101000a81548160ff021916908315150217905550816000819055505b82603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615446617afb565b8015615468576000600160006101000a81548160ff0219169083151502179055505b505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010154915050919050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600a0154915050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146155db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b60008190506155e86174f9565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146156a55760003414615673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605f815260200180619adb605f913960600191505060405180910390fd5b6156a08482858873ffffffffffffffffffffffffffffffffffffffff16617515909392919063ffffffff16565b6157e1565b823410156156fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806199de6035913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff168461c35090604051806000019050600060405180830381858888f193505050503d8060008114615763576040519150601f19603f3d011682016040523d82523d6000602084013e615768565b606091505b50509050806157df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b505b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561586757600080fd5b505afa15801561587b573d6000803e3d6000fd5b505050506040513d602081101561589157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461590e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b600060386001603880549050038154811061592557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146159d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180619a6c603d913960400191505060405180910390fd5b60006159e18261661f565b14615a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180619b3a6030913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d01601c6101000a81548160ff0219169083151502179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d0160196101000a81548160ff0219169083151502179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d01601a6101000a81548160ff0219169083151502179055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01819055506000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506038805480615e0757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050615e8d8161839a565b915050919050565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015615f3a57600080fd5b505afa158015615f4e573d6000803e3d6000fd5b505050506040513d6020811015615f6457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614615fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160080181905550505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146160d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b6160e4868686856183e1565b6160f286868686868661857f565b6160fe868560006174b5565b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b15801561618557600080fd5b505afa158015616199573d6000803e3d6000fd5b505050506040513d60208110156161af57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161461622c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600181600d01601b6101000a81548160ff0219169083151502179055505050565b6000806000806000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006163658989612695565b90506000826000015414156163a057806000808460040160059054906101000a900460ff1682925081915096509650965096505050506163d7565b806163b48484617fc290919063ffffffff16565b83600201548460040160059054906101000a900460ff1696509650965096505050505b92959194509250565b600080603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081600d01601b9054906101000a900460ff166164c55760009250505061650a565b8060040160059054906101000a900460ff1615806164f2575081600d01601a9054906101000a900460ff16155b8061650557506165028686612695565b84115b925050505b9392505050565b600080600090506165206174f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561655b57479050616616565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156165d857600080fd5b505afa1580156165ec573d6000803e3d6000fd5b505050506040513d602081101561660257600080fd5b810190808051906020019092919050505090505b80915050919050565b6000616668603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020618300565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156166ee57600080fd5b505afa158015616702573d6000803e3d6000fd5b505050506040513d602081101561671857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614616795576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b603660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__6383c165a090916040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561682457600080fd5b505af4158015616838573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b1580156168be57600080fd5b505afa1580156168d2573d6000803e3d6000fd5b505050506040513d60208110156168e857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614616965576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073__$2ec35834968386f54fa313129cf94664e4$__63f63babbe9091836040518363ffffffff1660e01b815260040180838152602001821515151581526020019250505060006040518083038186803b158015616a0057600080fd5b505af4158015616a14573d6000803e3d6000fd5b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166385c858b16040518163ffffffff1660e01b815260040160206040518083038186803b158015616a9b57600080fd5b505afa158015616aaf573d6000803e3d6000fd5b505050506040513d6020811015616ac557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614616b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180619b6a6037913960400191505060405180910390fd5b6000603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01601d6101000a81548160ff0219169083151502179055505050565b600080603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060090154915050919050565b6000803373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614616ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b616cad88888888876186e9565b6000616cbb898987876188d8565b9050616cc9896000806174b5565b80616cd48a8a6178cf565b9250925050965096945050505050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806001015491505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614616e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b6000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160040160056101000a81548160ff02191690831515021790555050505050565b3373ffffffffffffffffffffffffffffffffffffffff16603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614616f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c38602a913960400191505060405180910390fd5b616f696174f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614616fcb57616fc682828573ffffffffffffffffffffffffffffffffffffffff16617f0a9092919063ffffffff16565b6170ae565b60008273ffffffffffffffffffffffffffffffffffffffff168261c35090604051806000019050600060405180830381858888f193505050503d8060008114617030576040519150601f19603f3d011682016040523d82523d6000602084013e617035565b606091505b50509050806170ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b505b505050565b600080603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015491505092915050565b6000603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b1580156171ac57600080fd5b505afa1580156171c0573d6000803e3d6000fd5b505050506040513d60208110156171d657600080fd5b810190808051906020019092919050505090506171f16174f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146172535761724e81838573ffffffffffffffffffffffffffffffffffffffff16617f0a9092919063ffffffff16565b617314565b60008173ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d80600081146172b3576040519150601f19603f3d011682016040523d82523d6000602084013e6172b8565b606091505b5050905080617312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180619be66024913960400191505060405180910390fd5b505b505050565b600061732482618300565b905060008111156173be576000617354836001015484600d0160149054906101000a900464ffffffffff16618ac2565b905061736d836000015482618b4290919063ffffffff16565b8360000181905550600061739a846004015485600d0160149054906101000a900464ffffffffff16618ba5565b90506173b3846007015482618b4290919063ffffffff16565b846007018190555050505b5050565b600080828401905083811015617440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061746f61745884618c15565b61746184618c15565b61832490919063ffffffff16565b9050600061748d61747e618c35565b836173c290919063ffffffff16565b90506174a6856000015482618b4290919063ffffffff16565b85600001819055505050505050565b6174c0838383618c49565b6174c8618380565b7fb362f715591e6551ba78917a287fa286eed1ded21d619b267911b67f595af1c960405160405180910390a2505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b6175fc846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050618eac565b50505050565b600061764483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506190f7565b905092915050565b617693603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b6176a18686868686866191b7565b505050505050565b6000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506001600281111561777957fe5b83600281111561778557fe5b14156177a7578160050154816003018190555060008160010181905550617850565b6002808111156177b357fe5b8360028111156177bf57fe5b14156177e157600081600301819055508160070154816001018190555061784f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420626f72726f772072617465206d6f6465000000000000000081525060200191505060405180910390fd5b5b6178798561786b8884600001546173c290919063ffffffff16565b6173c290919063ffffffff16565b81600001819055506178988482600201546173c290919063ffffffff16565b8160020181905550428160040160006101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050505050565b6000806178dc848461281c565b9050600060028111156178eb57fe5b8160028111156178f757fe5b14156179075760009150506179f2565b6001600281111561791457fe5b81600281111561792057fe5b1461796d57603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401546179ee565b603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301545b9150505b92915050565b600080905060008090505b603880549050811015617a8d578273ffffffffffffffffffffffffffffffffffffffff1660388281548110617a3457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415617a8057600191505b8080600101915050617a03565b5080617af7576038829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015617b6357600080fd5b505afa158015617b77573d6000803e3d6000fd5b505050506040513d6020811015617b8d57600080fd5b8101908080519060200190929190505050603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050617cac82617319565b6000617cb8878761281c565b905060016002811115617cc757fe5b816002811115617cd357fe5b1415617d1057617cf28483600301548561940f9092919063ffffffff16565b617d0b858360030154856194ba9092919063ffffffff16565b617d37565b617d23848461965690919063ffffffff16565b617d36858461967990919063ffffffff16565b5b50505050505050565b617d87603660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b50565b6000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050617e7685617e688585600001546173c290919063ffffffff16565b61760290919063ffffffff16565b8260000181905550600280811115617e8a57fe5b617e94888861281c565b6002811115617e9f57fe5b1415617eb357806007015482600101819055505b6000841115617edc57617ed384836002015461760290919063ffffffff16565b82600201819055505b428260040160006101000a81548164ffffffffff021916908364ffffffffff16021790555050505050505050565b617fbd8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050618eac565b505050565b60008083600001541415617fd957600090506180f3565b6000617fe88460000154618c15565b90506000809050600080905060008660030154111561802b5761802486600301548760040160009054906101000a900464ffffffffff16618ba5565b905061807d565b61807a866001015461806c876007015461805e89600401548a600d0160149054906101000a900464ffffffffff16618ba5565b618b4290919063ffffffff16565b61832490919063ffffffff16565b90505b6180986180938285618b4290919063ffffffff16565b6196f9565b915085600001548214156180ec57428660040160009054906101000a900464ffffffffff1664ffffffffff16146180eb576180e1600187600001546173c290919063ffffffff16565b93505050506180f3565b5b8193505050505b92915050565b6000603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506181c582617319565b6181de8382600301548461940f9092919063ffffffff16565b5050505050565b6000603760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506182bf8383600001546173c290919063ffffffff16565b826000018190555080600501548260030181905550428260040160006101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050565b600061831d826003015483600201546173c290919063ffffffff16565b9050919050565b6000806002838161833157fe5b0490506183778361836961835a6b033b2e3c9fd0803ce80000008861973e90919063ffffffff16565b846173c290919063ffffffff16565b6197c490919063ffffffff16565b91505092915050565b60006008905090565b600080303b90506000811491505090565b6000806183d683600001546183c8856001015486600d0160149054906101000a900464ffffffffff16618ac2565b618b4290919063ffffffff16565b905080915050919050565b6000603660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006184b0878761281c565b90506184f9603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020617319565b6001600281111561850657fe5b81600281111561851257fe5b141561854f576185318483600301548561940f9092919063ffffffff16565b61854a858360030154856194ba9092919063ffffffff16565b618576565b618562848461965690919063ffffffff16565b618575858461967990919063ffffffff16565b5b50505050505050565b6000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061866b8661865d8684600001546173c290919063ffffffff16565b61760290919063ffffffff16565b816000018190555081600701548160010181905550821561869b5760008160030181905550600081600101819055505b6186b285826002015461760290919063ffffffff16565b8160020181905550428160040160006101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050505050565b6000603660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506187b582617319565b600160028111156187c257fe5b8360028111156187ce57fe5b141561880b576000816003015490506187f28682856194ba9092919063ffffffff16565b618805858461965690919063ffffffff16565b506188cf565b60028081111561881757fe5b83600281111561882357fe5b141561886057600082600501549050618845868461967990919063ffffffff16565b61885a85828561940f9092919063ffffffff16565b506188ce565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642072617465206d6f646520726563656976656400000000000081525060200191505060405180910390fd5b5b50505050505050565b600080603760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000603660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008090506002808111156189ad57fe5b8560028111156189b957fe5b14156189df57600190508160050154836003018190555060008360010181905550618a70565b600160028111156189ec57fe5b8560028111156189f857fe5b1415618a1e57600290506000836003018190555081600701548360010181905550618a6f565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180619c626023913960400191505060405180910390fd5b5b618a878684600001546173c290919063ffffffff16565b8360000181905550428360040160006101000a81548164ffffffffff021916908364ffffffffff160217905550809350505050949350505050565b600080618adf8364ffffffffff164261760290919063ffffffff16565b90506000618b0a618af36301e13380618c15565b618afc84618c15565b61832490919063ffffffff16565b9050618b38618b17618c35565b618b2a8388618b4290919063ffffffff16565b6173c290919063ffffffff16565b9250505092915050565b6000618b9d6b033b2e3c9fd0803ce8000000618b8f618b6a858761973e90919063ffffffff16565b60026b033b2e3c9fd0803ce800000081618b8057fe5b046173c290919063ffffffff16565b6197c490919063ffffffff16565b905092915050565b600080618bc28364ffffffffff164261760290919063ffffffff16565b90506000618bdd6301e13380866197c490919063ffffffff16565b9050618c0b82618bfd618bee618c35565b846173c290919063ffffffff16565b61980e90919063ffffffff16565b9250505092915050565b6000618c2e633b9aca008361973e90919063ffffffff16565b9050919050565b60006b033b2e3c9fd0803ce8000000905090565b6000603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600601549050600080600084600d0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357e37af089618d0889618cfa8c618cec8f616511565b6173c290919063ffffffff16565b61760290919063ffffffff16565b88600201548960030154896040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060606040518083038186803b158015618d8f57600080fd5b505afa158015618da3573d6000803e3d6000fd5b505050506040513d6060811015618db957600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050509250925092508285600101819055508185600501819055508085600401819055504285600d0160146101000a81548164ffffffffff021916908364ffffffffff1602179055508773ffffffffffffffffffffffffffffffffffffffff167f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4848487858a600001548b6007015460405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a25050505050505050565b618ecb8273ffffffffffffffffffffffffffffffffffffffff166123e2565b618f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310618f8c5780518252602082019150602081019050602083039250618f69565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114618fee576040519150601f19603f3d011682016040523d82523d6000602084013e618ff3565b606091505b50915091508161906b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b6000815111156190f15780806020019051602081101561908a57600080fd5b81019080805190602001909291905050506190f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180619c85602a913960400191505060405180910390fd5b5b50505050565b60008383111582906191a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561916957808201518184015260208101905061914e565b50505050905090810190601f1680156191965780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60006191c3878761281c565b90506000603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506001600281111561921557fe5b82600281111561922157fe5b14156192c6576000603760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506192c0878260030154846194ba9092919063ffffffff16565b506192f9565b6002808111156192d257fe5b8260028111156192de57fe5b14156192f8576192f7868261967990919063ffffffff16565b5b5b600061932085619312888a6173c290919063ffffffff16565b6173c290919063ffffffff16565b90506001600281111561932f57fe5b84600281111561933b57fe5b141561935f5761935a8183600501548461940f9092919063ffffffff16565b619404565b60028081111561936b57fe5b84600281111561937757fe5b141561939557619390818361965690919063ffffffff16565b619403565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c6964206e657720626f72726f772072617465206d6f64650000000081525060200191505060405180910390fd5b5b505050505050505050565b60008360020154905061942f8385600201546173c290919063ffffffff16565b846002018190555060006194548361944686618c15565b618b4290919063ffffffff16565b90506000619477866006015461946985618c15565b618b4290919063ffffffff16565b90506194aa6194898760020154618c15565b61949c83856173c290919063ffffffff16565b61832490919063ffffffff16565b8660060181905550505050505050565b8183600201541015619534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20646563726561736500000000000081525060200191505060405180910390fd5b60008360020154905061955483856002015461760290919063ffffffff16565b8460020181905550600084600201541415619579576000846006018190555050619651565b60006195968361958886618c15565b618b4290919063ffffffff16565b905060006195b986600601546195ab85618c15565b618b4290919063ffffffff16565b905081811015619614576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180619a496023913960400191505060405180910390fd5b6196456196248760020154618c15565b619637848461760290919063ffffffff16565b61832490919063ffffffff16565b86600601819055505050505b505050565b61966d8183600301546173c290919063ffffffff16565b82600301819055505050565b80826003015410156196d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605081526020018061998e6050913960600191505060405180910390fd5b6196ed81836003015461760290919063ffffffff16565b82600301819055505050565b6000806002633b9aca008161970a57fe5b049050619736633b9aca0061972885846173c290919063ffffffff16565b6197c490919063ffffffff16565b915050919050565b60008083141561975157600090506197be565b600082840290508284828161976257fe5b04146197b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180619bc56021913960400191505060405180910390fd5b809150505b92915050565b600061980683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250619891565b905092915050565b6000806002838161981b57fe5b061415619834576b033b2e3c9fd0803ce8000000619836565b825b90506002828161984257fe5b0491505b6000821461988b576198588384618b42565b925060006002838161986657fe5b0614619879576198768184618b42565b90505b6002828161988357fe5b049150619846565b92915050565b6000808311829061993d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156199025780820151818401526020810190506198e7565b50505050905090810190601f16801561992f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161994957fe5b04905080915050939250505056fe466565206c69717569646174696f6e20646f6573206e6f74207265717569726520616e79207472616e73666572206f662076616c756554686520616d6f756e742074686174206973206265696e6720737562747261637465642066726f6d20746865207661726961626c6520746f74616c20626f72726f777320697320696e636f727265637454686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d617463684f6e6c7920636f6e7472616374732063616e2073656e6420657468657220746f20746865204c656e64696e6720706f6f6c20636f726554686520616d6f756e747320746f20737562747261637420646f6e2774206d6174636852657365727665206265696e672072656d6f76656420697320646966666572656e74207468616e20746865207265736572766520726571756573746564557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e20436865636b207468652076616c756520617474726962757465206f6620746865207472616e73616374696f6e43616e6e6f742072656d6f7665206120726573657276652077697468206c6971756964697479206465706f73697465645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e666967757261746f7220636f6e74726163745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220746f20746f6b656e206469737472696275746f72206661696c6564436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e7472616374496e76616c696420696e7465726573742072617465206d6f64652072656365697665645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220c2d83483c080e8188b7dbc6f0b657f4dd3c556303e864173d6b7f463cdd82b9564736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b5061590280620000256000396000f3fe6080604052600436106104145760003560e01c8063a2353fdc1161021e578063d15e005311610123578063e8ae2f5b116100ab578063f61483111161007a578063f6148311146113ad578063f6ea8d7614611431578063fa51854c1461146c578063fa93b2a5146114b1578063feab31ac146114f45761045f565b8063e8ae2f5b146112d9578063eede87c11461130c578063ef1f937314611347578063f054ab461461137a5761045f565b8063dae4c4e7116100f2578063dae4c4e7146111c2578063e10076ad146111f5578063e2174d8614611230578063e240301914611273578063e6d18190146112a65761045f565b8063d15e0053146110ea578063d3ae26b31461111d578063d466016f14611132578063da12d96f1461116b5761045f565b8063bd7fd79a116101a6578063c540148e11610175578063c540148e14611000578063c72c4d1014611033578063c76a6c9c14611048578063c7d142371461107b578063d06e2ec1146110b75761045f565b8063bd7fd79a14610f34578063bfacad8414610f67578063c33cfd9014610f9a578063c4d66de814610fcd5761045f565b8063afcdbea3116101ed578063afcdbea314610e05578063b701d09314610e50578063b75d6f3414610e83578063b8c0f74514610eb6578063bcd6ffa414610ee95761045f565b8063a2353fdc14610d17578063a5bc826c14610d4a578063a8dc0f4514610d8f578063af825b0714610dc25761045f565b80635cf2e656116103245780637aca76eb116102ac578063906c0a411161027b578063906c0a4114610bea57806398bd473714610c1d5780639e3c4f3b14610c505780639e67484814610c8b5780639fb8afcd14610cbe5761045f565b80637aca76eb14610b1b5780637f90fec514610b4e57806388079d8814610b815780638f385c2214610bb45761045f565b806366d103f3116102f357806366d103f3146109ce57806368beb4d614610a095780636ae1441614610a745780636fffab0c14610aa757806370fb84f414610ae25761045f565b80635cf2e656146108f25780635fc526ff14610925578063646810831461098057806366bbd928146109955761045f565b80633443a14b116103a757806345330a401161037657806345330a40146107cc57806346bc0f28146108155780634a08accb146108485780634f1446091461087b5780634fe7a6e5146108c85761045f565b80633443a14b146106a557806334b3beee146106de57806337ac6fe41461072d5780633e72a454146107995761045f565b806318f9bbae116103e357806318f9bbae146105a25780631ca19f19146105d55780631d2118f91461063457806328fcf4d31461066f5761045f565b806305075d6e146104645780630902f1ac146104ab57806309ac29531461051057806318a4dbca146105555761045f565b3661045f576104223361152f565b61045d5760405162461bcd60e51b81526004018080602001828103825260368152602001806156316036913960400191505060405180910390fd5b005b600080fd5b34801561047057600080fd5b506104976004803603602081101561048757600080fd5b50356001600160a01b031661156d565b604080519115158252519081900360200190f35b3480156104b757600080fd5b506104c0611595565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104fc5781810151838201526020016104e4565b505050509050019250505060405180910390f35b34801561051c57600080fd5b5061045d6004803603608081101561053357600080fd5b506001600160a01b0381351690602081013590604081013590606001356115f7565b34801561056157600080fd5b506105906004803603604081101561057857600080fd5b506001600160a01b03813581169160200135166116c5565b60408051918252519081900360200190f35b3480156105ae57600080fd5b50610497600480360360208110156105c557600080fd5b50356001600160a01b0316611758565b3480156105e157600080fd5b50610610600480360360408110156105f857600080fd5b506001600160a01b0381358116916020013516611780565b6040518082600281111561062057fe5b60ff16815260200191505060405180910390f35b34801561064057600080fd5b5061045d6004803603604081101561065757600080fd5b506001600160a01b03813581169160200135166117d5565b61045d6004803603606081101561068557600080fd5b506001600160a01b038135811691602081013590911690604001356118bb565b3480156106b157600080fd5b5061045d600480360360408110156106c857600080fd5b506001600160a01b038135169060200135611a86565b3480156106ea57600080fd5b506107116004803603602081101561070157600080fd5b50356001600160a01b0316611b5a565b604080516001600160a01b039092168252519081900360200190f35b34801561073957600080fd5b50610780600480360360a081101561075057600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060810135906080013560ff16611b7b565b6040805192835260208301919091528051918290030190f35b3480156107a557600080fd5b5061045d600480360360208110156107bc57600080fd5b50356001600160a01b0316611c1b565b3480156107d857600080fd5b5061045d600480360360808110156107ef57600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611cf7565b34801561082157600080fd5b506105906004803603602081101561083857600080fd5b50356001600160a01b0316611e51565b34801561085457600080fd5b506104976004803603602081101561086b57600080fd5b50356001600160a01b0316611e6f565b34801561088757600080fd5b506108ae6004803603602081101561089e57600080fd5b50356001600160a01b0316611e97565b6040805164ffffffffff9092168252519081900360200190f35b3480156108d457600080fd5b50610711600480360360208110156108eb57600080fd5b5035611ec3565b3480156108fe57600080fd5b506104976004803603602081101561091557600080fd5b50356001600160a01b0316611eea565b34801561093157600080fd5b506109586004803603602081101561094857600080fd5b50356001600160a01b0316611f12565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561098c57600080fd5b5061045d611f50565b3480156109a157600080fd5b5061045d600480360360408110156109b857600080fd5b506001600160a01b03813516906020013561200f565b3480156109da57600080fd5b50610590600480360360408110156109f157600080fd5b506001600160a01b03813581169160200135166120e3565b348015610a1557600080fd5b5061045d6004803603610120811015610a2d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a08101359060c08101359060e08101359061010001351515612119565b348015610a8057600080fd5b5061071160048036036020811015610a9757600080fd5b50356001600160a01b03166121bb565b348015610ab357600080fd5b5061059060048036036040811015610aca57600080fd5b506001600160a01b03813581169160200135166121dc565b348015610aee57600080fd5b5061045d60048036036040811015610b0557600080fd5b506001600160a01b03813516906020013561220b565b348015610b2757600080fd5b5061045d60048036036020811015610b3e57600080fd5b50356001600160a01b03166122df565b348015610b5a57600080fd5b5061059060048036036020811015610b7157600080fd5b50356001600160a01b03166123c1565b348015610b8d57600080fd5b5061059060048036036020811015610ba457600080fd5b50356001600160a01b03166123df565b61045d60048036036060811015610bca57600080fd5b506001600160a01b03813581169160208101359160409091013516612507565b348015610bf657600080fd5b5061059060048036036020811015610c0d57600080fd5b50356001600160a01b031661261d565b348015610c2957600080fd5b5061059060048036036020811015610c4057600080fd5b50356001600160a01b03166126cd565b348015610c5c57600080fd5b5061049760048036036040811015610c7357600080fd5b506001600160a01b03813581169160200135166126eb565b348015610c9757600080fd5b5061049760048036036020811015610cae57600080fd5b50356001600160a01b0316612724565b348015610cca57600080fd5b50610cf960048036036040811015610ce157600080fd5b506001600160a01b038135811691602001351661274c565b60408051938452602084019290925282820152519081900360600190f35b348015610d2357600080fd5b5061059060048036036020811015610d3a57600080fd5b50356001600160a01b03166127d7565b348015610d5657600080fd5b5061045d60048036036080811015610d6d57600080fd5b506001600160a01b0381351690602081013590604081013590606001356127f5565b348015610d9b57600080fd5b5061045d60048036036020811015610db257600080fd5b50356001600160a01b0316612943565b348015610dce57600080fd5b5061059060048036036060811015610de557600080fd5b506001600160a01b03813581169160208101359091169060400135612a72565b348015610e1157600080fd5b5061045d60048036036080811015610e2857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612b12565b348015610e5c57600080fd5b5061059060048036036020811015610e7357600080fd5b50356001600160a01b0316612b9a565b348015610e8f57600080fd5b5061045d60048036036020811015610ea657600080fd5b50356001600160a01b0316612bb8565b348015610ec257600080fd5b5061045d60048036036020811015610ed957600080fd5b50356001600160a01b0316612ceb565b348015610ef557600080fd5b5061045d60048036036080811015610f0c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612dc7565b348015610f4057600080fd5b5061059060048036036020811015610f5757600080fd5b50356001600160a01b0316612e4f565b348015610f7357600080fd5b5061059060048036036020811015610f8a57600080fd5b50356001600160a01b0316612e6a565b348015610fa657600080fd5b5061059060048036036020811015610fbd57600080fd5b50356001600160a01b0316612ed4565b348015610fd957600080fd5b5061045d60048036036020811015610ff057600080fd5b50356001600160a01b0316612f0d565b34801561100c57600080fd5b506105906004803603602081101561102357600080fd5b50356001600160a01b0316612fcc565b34801561103f57600080fd5b50610711612fea565b34801561105457600080fd5b506105906004803603602081101561106b57600080fd5b50356001600160a01b0316612ff9565b61045d6004803603608081101561109157600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516613017565b3480156110c357600080fd5b5061045d600480360360208110156110da57600080fd5b50356001600160a01b03166131c9565b3480156110f657600080fd5b506105906004803603602081101561110d57600080fd5b50356001600160a01b03166133ce565b34801561112957600080fd5b506107116133ef565b34801561113e57600080fd5b5061045d6004803603604081101561115557600080fd5b506001600160a01b0381351690602001356133fe565b34801561117757600080fd5b5061045d600480360360c081101561118e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a0013515156134d2565b3480156111ce57600080fd5b5061045d600480360360208110156111e557600080fd5b50356001600160a01b0316613541565b34801561120157600080fd5b506109586004803603604081101561121857600080fd5b506001600160a01b0381358116916020013516613623565b34801561123c57600080fd5b506104976004803603606081101561125357600080fd5b506001600160a01b038135811691602081013590911690604001356136d0565b34801561127f57600080fd5b506105906004803603602081101561129657600080fd5b50356001600160a01b0316613766565b3480156112b257600080fd5b50610590600480360360208110156112c957600080fd5b50356001600160a01b031661380a565b3480156112e557600080fd5b5061045d600480360360208110156112fc57600080fd5b50356001600160a01b031661382b565b34801561131857600080fd5b5061045d6004803603604081101561132f57600080fd5b506001600160a01b0381351690602001351515613946565b34801561135357600080fd5b5061045d6004803603602081101561136a57600080fd5b50356001600160a01b0316613a7d565b34801561138657600080fd5b506105906004803603602081101561139d57600080fd5b50356001600160a01b0316613b59565b3480156113b957600080fd5b50611406600480360360c08110156113d057600080fd5b5080356001600160a01b039081169160208101359091169060408101359060608101359060808101359060a0013560ff16613b77565b6040518083600281111561141657fe5b60ff1681526020018281526020019250505060405180910390f35b34801561143d57600080fd5b506105906004803603604081101561145457600080fd5b506001600160a01b0381358116916020013516613c09565b34801561147857600080fd5b5061045d6004803603606081101561148f57600080fd5b506001600160a01b038135811691602081013590911690604001351515613c38565b3480156114bd57600080fd5b5061045d600480360360608110156114d457600080fd5b506001600160a01b03813581169160208101359091169060400135613cca565b34801561150057600080fd5b506105906004803603604081101561151757600080fd5b506001600160a01b0381358116916020013516613df1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061156357508115155b925050505b919050565b6001600160a01b03166000908152603660205260409020600d0154600160e01b900460ff1690565b606060388054806020026020016040519081016040528092919081815260200182805480156115ed57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115cf575b5050505050905090565b6034546001600160a01b031633146116405760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b61164a8482613e20565b6001600160a01b038416600090815260366020526040902061166b90613f5d565b60006116866116798661380a565b859063ffffffff613ff516565b6001600160a01b03861660009081526036602052604090209091506116b290828563ffffffff61404f16565b6116be858460006140ad565b5050505050565b6001600160a01b038083166000908152603660209081526040808320600c015481516370a0823160e01b8152868616600482015291519394169283926370a082319260248082019391829003018186803b15801561172257600080fd5b505afa158015611736573d6000803e3d6000fd5b505050506040513d602081101561174c57600080fd5b50519150505b92915050565b6001600160a01b03166000908152603660205260409020600d0154600160d01b900460ff1690565b6001600160a01b038082166000908152603760209081526040808320938616835292905290812080546117b7576000915050611752565b60008160030154116117ca5760026117cd565b60015b949350505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561181957600080fd5b505afa15801561182d573d6000803e3d6000fd5b505050506040513d602081101561184357600080fd5b50516001600160a01b03161461188a5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b039182166000908152603660205260409020600d0180546001600160a01b03191691909216179055565b6034546001600160a01b031633146119045760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b61190c6140ee565b6001600160a01b0316836001600160a01b0316146119815734156119615760405162461bcd60e51b81526004018080602001828103825260328152602001806156c76032913960400191505060405180910390fd5b61197c6001600160a01b03841683308463ffffffff61410616565b611a81565b803410156119c05760405162461bcd60e51b81526004018080602001828103825260358152602001806155fc6035913960400191505060405180910390fd5b80341115611a815760006119da348363ffffffff61416016565b6040519091506000906001600160a01b0385169061c35090859084818181858888f193505050503d8060008114611a2d576040519150601f19603f3d011682016040523d82523d6000602084013e611a32565b606091505b50509050806116be576040805162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881bd9881155120819985a5b195960521b604482015290519081900360640190fd5b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611aca57600080fd5b505afa158015611ade573d6000803e3d6000fd5b505050506040513d6020811015611af457600080fd5b50516001600160a01b031614611b3b5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03909116600090815260366020526040902060090155565b6001600160a01b039081166000908152603660205260409020600c01541690565b60345460009081906001600160a01b03163314611bc95760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b600080611bd6898961274c565b9250509150611be9898984848b8a6141a2565b611bf7898989848a8a6141d1565b611c03896000896140ad565b611c0d89896142f6565b999098509650505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611c5f57600080fd5b505afa158015611c73573d6000803e3d6000fd5b505050506040513d6020811015611c8957600080fd5b50516001600160a01b031614611cd05760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60e01b19169055565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611d3b57600080fd5b505afa158015611d4f573d6000803e3d6000fd5b505050506040513d6020811015611d6557600080fd5b50516001600160a01b031614611dac5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b0380851660009081526036602052604080822081516304dda73560e21b8152600481019190915286841660248201526044810186905292841660648401525173__$2ec35834968386f54fa313129cf94664e4$__926313769cd4926084808301939192829003018186803b158015611e2a57600080fd5b505af4158015611e3e573d6000803e3d6000fd5b50505050611e4b84614388565b50505050565b6001600160a01b031660009081526036602052604090206006015490565b6001600160a01b03166000908152603660205260409020600d0154600160e81b900460ff1690565b6001600160a01b03166000908152603660205260409020600d0154600160a01b900464ffffffffff1690565b60388181548110611ed057fe5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b03166000908152603660205260409020600d0154600160c81b900460ff1690565b6001600160a01b03166000908152603660205260409020600b81015460088201546009830154600d909301549193909291600160d01b900460ff1690565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015611f9457600080fd5b505afa158015611fa8573d6000803e3d6000fd5b505050506040513d6020811015611fbe57600080fd5b50516001600160a01b0316146120055760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b61200d61442c565b565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561205357600080fd5b505afa158015612067573d6000803e3d6000fd5b505050506040513d602081101561207d57600080fd5b50516001600160a01b0316146120c45760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b039091166000908152603660205260409020600b0155565b6001600160a01b0390811660009081526037602090815260408083209490931682529290925290206004015464ffffffffff1690565b6034546001600160a01b031633146121625760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b61216e898888856144c7565b61217788614580565b61218489888887866145a4565b612190898760006140ad565b806121b0576121b08860006121ab888763ffffffff613ff516565b6140ad565b505050505050505050565b6001600160a01b039081166000908152603660205260409020600d01541690565b6001600160a01b0380821660009081526037602090815260408083209386168352929052206003015492915050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561224f57600080fd5b505afa158015612263573d6000803e3d6000fd5b505050506040513d602081101561227957600080fd5b50516001600160a01b0316146122c05760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b039091166000908152603660205260409020600a0155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561232357600080fd5b505afa158015612337573d6000803e3d6000fd5b505050506040513d602081101561234d57600080fd5b50516001600160a01b0316146123945760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60e81b1916600160e81b179055565b6001600160a01b031660009081526036602052604090206002015490565b6001600160a01b0380821660009081526036602090815260408083206035548251631b0c55dd60e11b815292519495919486949190921692633618abba9260048083019392829003018186803b15801561243857600080fd5b505afa15801561244c573d6000803e3d6000fd5b505050506040513d602081101561246257600080fd5b505160058301549091506124fc57806001600160a01b031663bb85c0bb856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124c657600080fd5b505afa1580156124da573d6000803e3d6000fd5b505050506040513d60208110156124f057600080fd5b50519250611568915050565b506005015492915050565b6034546001600160a01b031633146125505760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b80341561258e5760405162461bcd60e51b81526004018080602001828103825260368152602001806155766036913960400191505060405180910390fd5b6125966140ee565b6001600160a01b0316846001600160a01b0316146125cd576125c86001600160a01b038516828563ffffffff61466216565b611e4b565b6040516000906001600160a01b0383169061c35090869084818181858888f193505050503d8060008114611a2d576040519150601f19603f3d011682016040523d82523d6000602084013e611a32565b6001600160a01b038116600090815260366020526040812060048101546126c35780600d0160009054906101000a90046001600160a01b03166001600160a01b03166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b15801561268e57600080fd5b505afa1580156126a2573d6000803e3d6000fd5b505050506040513d60208110156126b857600080fd5b505191506115689050565b6004015492915050565b6001600160a01b031660009081526036602052604090206003015490565b6001600160a01b03908116600090815260376020908152604080832094909316825292909252902060040154600160281b900460ff1690565b6001600160a01b03166000908152603660205260409020600d0154600160d81b900460ff1690565b6001600160a01b038082166000908152603760209081526040808320938616835292905290812080548291829161278d5750600092508291508190506127d0565b80546001600160a01b03871660009081526036602052604081206127b29084906146b4565b905081816127c6818363ffffffff61416016565b9550955095505050505b9250925092565b6001600160a01b03166000908152603660205260409020600b015490565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561283957600080fd5b505afa15801561284d573d6000803e3d6000fd5b505050506040513d602081101561286357600080fd5b50516001600160a01b0316146128aa5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b038416600090815260366020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b15801561292557600080fd5b505af4158015612939573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561298757600080fd5b505afa15801561299b573d6000803e3d6000fd5b505050506040513d60208110156129b157600080fd5b50516001600160a01b0316146129f85760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03811660009081526036602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b158015612a5e57600080fd5b505af41580156116be573d6000803e3d6000fd5b6034546000906001600160a01b03163314612abe5760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b612ac98484846147a6565b612ad48484846147f6565b612ae0846000806140ad565b506001600160a01b038083166000908152603760209081526040808320938716835292905220600301545b9392505050565b6034546001600160a01b03163314612b5b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b6001600160a01b0384166000908152603660205260409020612b7c90613f5d565b612b88846000846140ad565b8015611e4b57611e4b84846000613c38565b6001600160a01b031660009081526036602052604090206007015490565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612bfc57600080fd5b505afa158015612c10573d6000803e3d6000fd5b505050506040513d6020811015612c2657600080fd5b50516001600160a01b031614612c6d5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b0381166000908152603660205260409020805415801590612c99575060008160070154115b612cd45760405162461bcd60e51b81526004018080602001828103825260248152602001806157bf6024913960400191505060405180910390fd5b600d01805460ff60e01b1916600160e01b17905550565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612d2f57600080fd5b505afa158015612d43573d6000803e3d6000fd5b505050506040513d6020811015612d5957600080fd5b50516001600160a01b031614612da05760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60d81b19169055565b6034546001600160a01b03163314612e105760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b6001600160a01b0384166000908152603660205260409020612e3190613f5d565b612e3d848360006140ad565b8015611e4b57611e4b84846001613c38565b6001600160a01b031660009081526036602052604090205490565b6001600160a01b038116600090815260366020526040812081612e8c8261485f565b905080612e9e57600092505050611568565b6000612ea985613766565b9050612ecb612ebe828463ffffffff613ff516565b839063ffffffff61487c16565b95945050505050565b6001600160a01b0381166000908152603660205260408120612b0b612ef88261485f565b612f0185613766565b9063ffffffff613ff516565b6000612f176148b8565b60015490915060ff1680612f2e5750612f2e6148bd565b80612f3a575060005481115b612f755760405162461bcd60e51b815260040180806020018281038252602e815260200180615828602e913960400191505060405180910390fd5b60015460ff16158015612f94576001805460ff19168117905560008290555b603580546001600160a01b0319166001600160a01b038516179055612fb761442c565b8015611a81576001805460ff19169055505050565b6001600160a01b031660009081526036602052604090206001015490565b6035546001600160a01b031681565b6001600160a01b03166000908152603660205260409020600a015490565b6034546001600160a01b031633146130605760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b806130696140ee565b6001600160a01b0316856001600160a01b0316146130de5734156130be5760405162461bcd60e51b815260040180806020018281038252605f8152602001806156f9605f913960600191505060405180910390fd5b6130d96001600160a01b03861685838663ffffffff61410616565b6116be565b8234101561311d5760405162461bcd60e51b81526004018080602001828103825260358152602001806155fc6035913960400191505060405180910390fd5b6040516000906001600160a01b0383169061c35090869084818181858888f193505050503d806000811461316d576040519150601f19603f3d011682016040523d82523d6000602084013e613172565b606091505b50509050806131c1576040805162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881bd9881155120819985a5b195960521b604482015290519081900360640190fd5b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561320d57600080fd5b505afa158015613221573d6000803e3d6000fd5b505050506040513d602081101561323757600080fd5b50516001600160a01b03161461327e5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6038805460009190600019810190811061329457fe5b6000918252602090912001546001600160a01b039081169150821681146132ec5760405162461bcd60e51b815260040180806020018281038252603d81526020018061568a603d913960400191505060405180910390fd5b6132f58161380a565b156133315760405162461bcd60e51b81526004018080602001828103825260308152602001806157586030913960400191505060405180910390fd5b6001600160a01b0381166000908152603660205260408120600d81018054600c830180546001600160a01b0319169055600b8301849055838355600783018490556008830184905560098301849055600a90920192909255600168ff00ffff000000000160a01b031916905560388054806133a857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b6001600160a01b0381166000908152603660205260408120612b0b816148c3565b6034546001600160a01b031681565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561344257600080fd5b505afa158015613456573d6000803e3d6000fd5b505050506040513d602081101561346c57600080fd5b50516001600160a01b0316146134b35760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03909116600090815260366020526040902060080155565b6034546001600160a01b0316331461351b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b613527868686856148f1565b613535868686868686614958565b6131c1868560006140ad565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561358557600080fd5b505afa158015613599573d6000803e3d6000fd5b505050506040513d60208110156135af57600080fd5b50516001600160a01b0316146135f65760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60d81b1916600160d81b179055565b6001600160a01b03808316600081815260366020908152604080832094861683526037825280832093835292905290812090918291829182918261366789896116c5565b8254909150613694576004909101549095506000945084935060ff600160281b9091041691506136c79050565b806136a5838563ffffffff6146b416565b6002840154600490940154919850965091945050600160281b900460ff169150505b92959194509250565b6001600160a01b038381166000818152603660209081526040808320948716835260378252808320938352929052908120600d830154919291600160d81b900460ff1661372257600092505050612b0b565b6004810154600160281b900460ff1615806137495750600d820154600160d01b900460ff16155b8061375c575061375986866116c5565b84115b9695505050505050565b6000806137716140ee565b6001600160a01b0316836001600160a01b03161415613791575047611752565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156137d757600080fd5b505afa1580156137eb573d6000803e3d6000fd5b505050506040513d602081101561380157600080fd5b50519392505050565b6001600160a01b03811660009081526036602052604081206117529061485f565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561386f57600080fd5b505afa158015613883573d6000803e3d6000fd5b505050506040513d602081101561389957600080fd5b50516001600160a01b0316146138e05760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b038116600090815260366020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b158015612a5e57600080fd5b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561398a57600080fd5b505afa15801561399e573d6000803e3d6000fd5b505050506040513d60208110156139b457600080fd5b50516001600160a01b0316146139fb5760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b0382166000908152603660205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b158015613a6957600080fd5b505af41580156131c1573d6000803e3d6000fd5b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015613ac157600080fd5b505afa158015613ad5573d6000803e3d6000fd5b505050506040513d6020811015613aeb57600080fd5b50516001600160a01b031614613b325760405162461bcd60e51b81526004018080602001828103825260378152602001806157886037913960400191505060405180910390fd5b6001600160a01b03166000908152603660205260409020600d01805460ff60e81b19169055565b6001600160a01b031660009081526036602052604090206009015490565b60345460009081906001600160a01b03163314613bc55760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b613bd288888888876149d5565b6000613be089898787614ad4565b9050613bee896000806140ad565b80613bf98a8a6142f6565b9250925050965096945050505050565b6001600160a01b0380821660009081526037602090815260408083209386168352929052206001015492915050565b6034546001600160a01b03163314613c815760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b6001600160a01b0391821660009081526037602090815260408083209590941682529390935291206004018054911515600160281b0265ff000000000019909216919091179055565b6034546001600160a01b03163314613d135760405162461bcd60e51b815260040180806020018281038252602a815260200180615856602a913960400191505060405180910390fd5b613d1b6140ee565b6001600160a01b0316836001600160a01b031614613d4d5761197c6001600160a01b038416838363ffffffff61466216565b6040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114613d9d576040519150601f19603f3d011682016040523d82523d6000602084013e613da2565b606091505b5050905080611e4b576040805162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881bd9881155120819985a5b195960521b604482015290519081900360640190fd5b6001600160a01b0380821660009081526037602090815260408083209386168352929052206002015492915050565b60355460408051637744894b60e11b815290516000926001600160a01b03169163ee891296916004808301926020929190829003018186803b158015613e6557600080fd5b505afa158015613e79573d6000803e3d6000fd5b505050506040513d6020811015613e8f57600080fd5b50519050613e9b6140ee565b6001600160a01b0316836001600160a01b031614613ecd5761197c6001600160a01b038416828463ffffffff61466216565b6040516000906001600160a01b0383169084908381818185875af1925050503d8060008114613f18576040519150601f19603f3d011682016040523d82523d6000602084013e613f1d565b606091505b5050905080611e4b5760405162461bcd60e51b81526004018080602001828103825260248152602001806158046024913960400191505060405180910390fd5b6000613f688261485f565b90508015613ff1576001820154600d830154600091613f9491600160a01b900464ffffffffff16614bd2565b8354909150613faa90829063ffffffff614c1d16565b83556004830154600d840154600091613fd091600160a01b900464ffffffffff16614c55565b9050613fe9846007015482614c1d90919063ffffffff16565b600785015550505b5050565b600082820183811015612b0b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061407261405d84614ca4565b61406684614ca4565b9063ffffffff61487c16565b9050600061408e614081614cba565b839063ffffffff613ff516565b85549091506140a490829063ffffffff614c1d16565b90945550505050565b6140b8838383614cca565b6140c06148b8565b6040517fb362f715591e6551ba78917a287fa286eed1ded21d619b267911b67f595af1c990600090a2505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611e4b908590614e63565b6000612b0b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061501b565b6001600160a01b03861660009081526036602052604090206141c390613f5d565b6131c18686868686866150b2565b6001600160a01b038087166000818152603660209081526040808320948a1683526037825280832093835292905220600183600281111561420e57fe5b141561422a5760058201546003820155600060018201556142a1565b600283600281111561423857fe5b14156142545760006003820155600782015460018201556142a1565b6040805162461bcd60e51b815260206004820152601860248201527f496e76616c696420626f72726f772072617465206d6f64650000000000000000604482015290519081900360640190fd5b80546142b9908690612f01908963ffffffff613ff516565b815560028101546142d0908563ffffffff613ff516565b6002820155600401805464ffffffffff19164264ffffffffff1617905550505050505050565b6000806143038484611780565b9050600081600281111561431357fe5b1415614323576000915050611752565b600181600281111561433157fe5b14614357576001600160a01b0384166000908152603660205260409020600401546117cd565b50506001600160a01b0390811660009081526037602090815260408083209490931682529290925290206003015490565b6000805b6038548110156143d557826001600160a01b0316603882815481106143ad57fe5b6000918252602090912001546001600160a01b031614156143cd57600191505b60010161438c565b5080613ff157603880546001810182556000919091527f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561990180546001600160a01b0384166001600160a01b03199091161790555050565b603560009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561447a57600080fd5b505afa15801561448e573d6000803e3d6000fd5b505050506040513d60208110156144a457600080fd5b5051603480546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b038085166000818152603660209081526040808320948816835260378252808320938352929052206144ff82613f5d565b600061450b8787611780565b905060015b81600281111561451c57fe5b141561455757600382015461453a908490869063ffffffff61520e16565b6003820154614552908490879063ffffffff61527e16565b614577565b614567838563ffffffff61538916565b614577838663ffffffff6153aa16565b50505050505050565b6001600160a01b03811660009081526036602052604090206145a190613f5d565b50565b6001600160a01b0380851660009081526037602090815260408083209389168352928152828220603690915291902081546145f79086906145eb908663ffffffff613ff516565b9063ffffffff61416016565b825560026146058888611780565b600281111561461057fe5b141561462157600781015460018301555b831561464257600282015461463c908563ffffffff61416016565b60028301555b50600401805464ffffffffff19164264ffffffffff161790555050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611a81908490614e63565b81546000906146c557506000611752565b60006146d48460000154614ca4565b60038501549091506000908190156147085760038601546004870154614701919064ffffffffff16614c55565b905061474a565b6147478660010154614066876007015461473b89600401548a600d0160149054906101000a900464ffffffffff16614c55565b9063ffffffff614c1d16565b90505b61476261475d848363ffffffff614c1d16565b615402565b865490925082141561479d57600486015464ffffffffff16421461479d57855461479390600163ffffffff613ff516565b9350505050611752565b50949350505050565b6001600160a01b038084166000818152603660209081526040808320948716835260378252808320938352929052206147de82613f5d565b60038101546116be908390859063ffffffff61520e16565b6001600160a01b038083166000908152603760209081526040808320938716835292815282822060369091529190208154614837908463ffffffff613ff516565b8255600501546003820155600401805464ffffffffff19164264ffffffffff16179055505050565b600061175282600301548360020154613ff590919063ffffffff16565b6000600282046117cd836148ac61489f876b033b2e3c9fd0803ce800000061541b565b849063ffffffff613ff516565b9063ffffffff61547416565b600890565b303b1590565b600080612b0b836000015461473b856001015486600d0160149054906101000a900464ffffffffff16614bd2565b6001600160a01b0380851660008181526036602090815260408083209488168352603782528083209383529290529081209061492d8787611780565b6001600160a01b038816600090815260366020526040902090915061495190613f5d565b6001614510565b6001600160a01b038087166000818152603660209081526040808320948a1683526037825280832093835292905220805461499f9087906145eb908763ffffffff613ff516565b81556007820154600182015582156149c05760006003820181905560018201555b60028101546142d0908663ffffffff61416016565b6001600160a01b03808616600081815260366020908152604080832094891683526037825280832093835292905220614a0d82613f5d565b6001836002811115614a1b57fe5b1415614a4d576003810154614a3783878363ffffffff61527e16565b614a47838663ffffffff61538916565b50614577565b6002836002811115614a5b57fe5b1415614a87576005820154614a76838763ffffffff6153aa16565b614a4783868363ffffffff61520e16565b6040805162461bcd60e51b815260206004820152601a60248201527f496e76616c69642072617465206d6f6465207265636569766564000000000000604482015290519081900360640190fd5b6001600160a01b03808416600090815260376020908152604080832093881683529281528282206036909152918120909190826002856002811115614b1557fe5b1415614b365750600581015460038301556000600183810191909155614b9a565b6001856002811115614b4457fe5b1415614b63575060006003830155600781015460018301556002614b9a565b60405162461bcd60e51b81526004018080602001828103825260238152602001806158806023913960400191505060405180910390fd5b8254614bac908763ffffffff613ff516565b83556004909201805464ffffffffff19164264ffffffffff161790555095945050505050565b600080614bec4264ffffffffff851663ffffffff61416016565b90506000614c0061405d6301e13380614ca4565b9050612ecb614c0d614cba565b612f01878463ffffffff614c1d16565b6000612b0b6b033b2e3c9fd0803ce80000006148ac614c42868663ffffffff61541b16565b6b019d971e4fe8401e7400000090613ff5565b600080614c6f4264ffffffffff851663ffffffff61416016565b90506000614c87856301e1338063ffffffff61547416565b9050612ecb82614c9861489f614cba565b9063ffffffff6154b616565b600061175282633b9aca0063ffffffff61541b16565b6b033b2e3c9fd0803ce800000090565b6001600160a01b0380841660009081526036602052604081206006810154600d820154919390929182918291166357e37af089614d0e896145eb8c612f0185613766565b88600201548960030154896040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b031681526020018581526020018481526020018381526020018281526020019550505050505060606040518083038186803b158015614d7b57600080fd5b505afa158015614d8f573d6000803e3d6000fd5b505050506040513d6060811015614da557600080fd5b50805160208083015160409384015160018a0184905560058a0182905560048a01819055600d8a01805464ffffffffff4216600160a01b0264ffffffffff60a01b19909116179055895460078b015486518681529485018490528487018b905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a25050505050505050565b614e75826001600160a01b031661152f565b614ec6576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614f045780518252601f199092019160209182019101614ee5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614f66576040519150601f19603f3d011682016040523d82523d6000602084013e614f6b565b606091505b509150915081614fc2576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e4b57808060200190516020811015614fde57600080fd5b5051611e4b5760405162461bcd60e51b815260040180806020018281038252602a8152602001806158a3602a913960400191505060405180910390fd5b600081848411156150aa5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561506f578181015183820152602001615057565b50505050905090810190601f16801561509c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006150be8787611780565b6001600160a01b038816600090815260366020526040902090915060018260028111156150e757fe5b1415615130576001600160a01b038088166000908152603760209081526040808320938c16835292905220600381015461512a908390899063ffffffff61527e16565b50615154565b600282600281111561513e57fe5b141561515457615154818763ffffffff6153aa16565b600061516a85612f01898963ffffffff613ff516565b9050600184600281111561517a57fe5b141561519d576005820154615198908390839063ffffffff61520e16565b6121b0565b60028460028111156151ab57fe5b14156151c157615198828263ffffffff61538916565b6040805162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206e657720626f72726f772072617465206d6f646500000000604482015290519081900360640190fd5b6002830154615223818463ffffffff613ff516565b600285015560006152378361473b86614ca4565b9050600061524c866006015461473b85614ca4565b905061526e61525e8760020154614ca4565b614066848463ffffffff613ff516565b8660060181905550505050505050565b81836002015410156152d7576040805162461bcd60e51b815260206004820152601a60248201527f496e76616c696420616d6f756e7420746f206465637265617365000000000000604482015290519081900360640190fd5b60028301546152ec818463ffffffff61416016565b60028501819055615304575060006006840155611a81565b60006153138361473b86614ca4565b90506000615328866006015461473b85614ca4565b9050818110156153695760405162461bcd60e51b81526004018080602001828103825260238152602001806156676023913960400191505060405180910390fd5b61526e6153798760020154614ca4565b614066838563ffffffff61416016565b600382015461539e908263ffffffff613ff516565b82600301819055505050565b80826003015410156153ed5760405162461bcd60e51b81526004018080602001828103825260508152602001806155ac6050913960600191505060405180910390fd5b600382015461539e908263ffffffff61416016565b6000631dcd6500612b0b633b9aca006148ac8386613ff5565b60008261542a57506000611752565b8282028284828161543757fe5b0414612b0b5760405162461bcd60e51b81526004018080602001828103825260218152602001806157e36021913960400191505060405180910390fd5b6000612b0b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615510565b6000600282066154d2576b033b2e3c9fd0803ce80000006154d4565b825b90506002820491505b8115611752576154ed8384614c1d565b92506002820615615505576155028184614c1d565b90505b6002820491506154dd565b6000818361555f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561506f578181015183820152602001615057565b50600083858161556b57fe5b049594505050505056fe466565206c69717569646174696f6e20646f6573206e6f74207265717569726520616e79207472616e73666572206f662076616c756554686520616d6f756e742074686174206973206265696e6720737562747261637465642066726f6d20746865207661726961626c6520746f74616c20626f72726f777320697320696e636f727265637454686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d617463684f6e6c7920636f6e7472616374732063616e2073656e6420657468657220746f20746865204c656e64696e6720706f6f6c20636f726554686520616d6f756e747320746f20737562747261637420646f6e2774206d6174636852657365727665206265696e672072656d6f76656420697320646966666572656e74207468616e20746865207265736572766520726571756573746564557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e557365722069732073656e64696e672045544820616c6f6e67207769746820746865204552433230207472616e736665722e20436865636b207468652076616c756520617474726962757465206f6620746865207472616e73616374696f6e43616e6e6f742072656d6f7665206120726573657276652077697468206c6971756964697479206465706f73697465645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e666967757261746f7220636f6e74726163745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220746f20746f6b656e206469737472696275746f72206661696c6564436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c20636f6e7472616374496e76616c696420696e7465726573742072617465206d6f64652072656365697665645361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212204f94529fcf1987b76353b63c706f670a7faaa682b2e3a4ae8cdbb626302c223d64736f6c63430006080033"; export interface MockLendingPoolCoreLibraryAddresses { ["__$2ec35834968386f54fa313129cf94664e4$__"]: string; diff --git a/types/MockLinkFactory.ts b/types/MockLinkFactory.ts index 73a49831..5713df76 100644 --- a/types/MockLinkFactory.ts +++ b/types/MockLinkFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4c494e4b000000000000000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f436861696e4c696e6b00000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206671463bbda8804712fb6993259710f09730fa5173d49bf1d5d3ba552fd2e27364736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001634c494e4b60e01b81525060405180604001604052806009815260200168436861696e4c696e6b60b81b81525060128282816003908051906020019061006a9291906100be565b50805161007e9060049060208401906100be565b50506005805460ff19166012179055506100a0816001600160e01b036100a816565b505050610159565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ff57805160ff191683800117855561012c565b8280016001018555821561012c579182015b8281111561012c578251825591602001919060010190610111565b5061013892915061013c565b5090565b61015691905b808211156101385760008155600101610142565b90565b610b48806101686000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122054f023e5196e08b0b46bc2c37f28d1725f407ebe3e5ca8c7444910a15d0dc19164736f6c63430006080033"; diff --git a/types/MockManaFactory.ts b/types/MockManaFactory.ts index 24a78cfa..36f30c52 100644 --- a/types/MockManaFactory.ts +++ b/types/MockManaFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4d414e41000000000000000000000000000000000000000000000000000000008152506040518060400160405280600c81526020017f446563656e7472616c616e6400000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d90b8559404343a8af344e7f7a0c7a38e2251ffaf689cf4ccf511ce39779ace764736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001634d414e4160e01b8152506040518060400160405280600c81526020016b111958d95b9d1c985b185b9960a21b81525060128282816003908051906020019061006d9291906100c1565b5080516100819060049060208401906100c1565b50506005805460ff19166012179055506100a3816001600160e01b036100ab16565b50505061015c565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010257805160ff191683800117855561012f565b8280016001018555821561012f579182015b8281111561012f578251825591602001919060010190610114565b5061013b92915061013f565b5090565b61015991905b8082111561013b5760008155600101610145565b90565b610b488061016b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122068cfb87aadaa7c5f2c702c6a09288b93ee101ac27a8d8d39d8f24d365b43317464736f6c63430006080033"; diff --git a/types/MockMkrFactory.ts b/types/MockMkrFactory.ts index 927dd729..5a45ddda 100644 --- a/types/MockMkrFactory.ts +++ b/types/MockMkrFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f4d4b5200000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d616b65720000000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203eecffd06c757ac84289255a42d33b669c62e2eadeadcd8c74bdb2fd106d6a7564736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600381526020016226a5a960e91b8152506040518060400160405280600581526020016426b0b5b2b960d91b8152506012828281600390805190602001906100659291906100b9565b5080516100799060049060208401906100b9565b50506005805460ff191660121790555061009b816001600160e01b036100a316565b505050610154565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100fa57805160ff1916838001178555610127565b82800160010185558215610127579182015b8281111561012757825182559160200191906001019061010c565b50610133929150610137565b5090565b61015191905b80821115610133576000815560010161013d565b90565b610b48806101636000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206c50da5542fe7a9edb4640fb3d372b9ca214d8a734101146ff641a9684ef498464736f6c63430006080033"; diff --git a/types/MockOneSplitFactory.ts b/types/MockOneSplitFactory.ts index b4dd2185..b93ace9b 100644 --- a/types/MockOneSplitFactory.ts +++ b/types/MockOneSplitFactory.ts @@ -382,4 +382,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610ea4380380610ea48339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610e10806100946000396000f3fe6080604052600436106101145760003560e01c806373eb69d4116100a0578063ceb5411511610064578063ceb54115146104c0578063df911663146104eb578063e2a7515e14610516578063eb16df2a1461062c578063f64a9a491461065757610114565b806373eb69d4146103e9578063833665771461041457806383a0118f1461043f5780638c6c11f21461046a578063a9d3589f1461049557610114565b80634f1b86eb116100e75780634f1b86eb1461028557806358886253146102dc5780635cfcee28146103075780636b9589aa14610332578063702bf8fa146103be57610114565b8063085e2c5b1461011957806311c0c0f7146102045780633c1a62dc1461022f5780634c914a4e1461025a575b600080fd5b34801561012557600080fd5b506101a6600480360360a081101561013c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050610682565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156101ef5780820151818401526020810190506101d4565b50505050905001935050505060405180910390f35b34801561021057600080fd5b506102196106e0565b6040518082815260200191505060405180910390f35b34801561023b57600080fd5b506102446106e6565b6040518082815260200191505060405180910390f35b34801561026657600080fd5b5061026f6106eb565b6040518082815260200191505060405180910390f35b34801561029157600080fd5b5061029a6106f0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e857600080fd5b506102f1610715565b6040518082815260200191505060405180910390f35b34801561031357600080fd5b5061031c61071b565b6040518082815260200191505060405180910390f35b6103bc600480360360c081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610720565b005b3480156103ca57600080fd5b506103d3610911565b6040518082815260200191505060405180910390f35b3480156103f557600080fd5b506103fe61091a565b6040518082815260200191505060405180910390f35b34801561042057600080fd5b50610429610920565b6040518082815260200191505060405180910390f35b34801561044b57600080fd5b50610454610925565b6040518082815260200191505060405180910390f35b34801561047657600080fd5b5061047f61092b565b6040518082815260200191505060405180910390f35b3480156104a157600080fd5b506104aa610930565b6040518082815260200191505060405180910390f35b3480156104cc57600080fd5b506104d5610939565b6040518082815260200191505060405180910390f35b3480156104f757600080fd5b5061050061093e565b6040518082815260200191505060405180910390f35b61062a600480360360c081101561052c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111640100000000831117156105d157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050610947565b005b34801561063857600080fd5b5061064161094f565b6040518082815260200191505060405180910390f35b34801561066357600080fd5b5061066c610954565b6040518082815260200191505060405180910390f35b6000606060008067ffffffffffffffff8111801561069f57600080fd5b506040519080825280602002602001820160405280156106ce5781602001602082028036833780820191505090505b50819150915091509550959350505050565b61010081565b602081565b604081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61020081565b601081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d6869021e19e0c9bab24000006040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561079e57600080fd5b505af11580156107b2573d6000803e3d6000fd5b505050506040513d60208110156107c857600080fd5b810190808051906020019092919050505061084b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f54524144455f574954485f48494e542e205265766572746564206d696e74282981525060200191505060405180910390fd5b610853610959565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146108b3576108b23330868973ffffffffffffffffffffffffffffffffffffffff16610975909392919063ffffffff16565b5b6109093369021e19e0c9bab24000006000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a629092919063ffffffff16565b505050505050565b64010000000081565b61080081565b608081565b61040081565b600881565b64040000000081565b600281565b64020000000081565b505050505050565b600181565b600481565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b610a5c846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b1a565b50505050565b610b158363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b1a565b505050565b610b398273ffffffffffffffffffffffffffffffffffffffff16610d65565b610bab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610bfa5780518252602082019150602081019050602083039250610bd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c5c576040519150601f19603f3d011682016040523d82523d6000602084013e610c61565b606091505b509150915081610cd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d5f57808060200190516020811015610cf857600080fd5b8101908080519060200190929190505050610d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610db1602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610da757506000801b8214155b9250505091905056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122071e3b3c26cfa34623b3eb8d3120f9e0c1c97b03c3342a9c8d4e08df39e28532b64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516109a23803806109a28339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561093d806100656000396000f3fe6080604052600436106101145760003560e01c806373eb69d4116100a0578063ceb5411511610064578063ceb5411514610337578063df9116631461034c578063e2a7515e14610361578063eb16df2a1461042b578063f64a9a491461044057610114565b806373eb69d4146102ce57806383366577146102e357806383a0118f146102f85780638c6c11f21461030d578063a9d3589f1461032257610114565b80634f1b86eb116100e75780634f1b86eb1461021457806358886253146102455780635cfcee281461025a5780636b9589aa1461026f578063702bf8fa146102b957610114565b8063085e2c5b1461011957806311c0c0f7146101c35780633c1a62dc146101ea5780634c914a4e146101ff575b600080fd5b34801561012557600080fd5b50610168600480360360a081101561013c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135610455565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156101ae578181015183820152602001610196565b50505050905001935050505060405180910390f35b3480156101cf57600080fd5b506101d8610471565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101d8610477565b34801561020b57600080fd5b506101d861047c565b34801561022057600080fd5b50610229610481565b604080516001600160a01b039092168252519081900360200190f35b34801561025157600080fd5b506101d8610490565b34801561026657600080fd5b506101d8610496565b6102b7600480360360c081101561028557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a0013561049b565b005b3480156102c557600080fd5b506101d86105da565b3480156102da57600080fd5b506101d86105e3565b3480156102ef57600080fd5b506101d86105e9565b34801561030457600080fd5b506101d86105ee565b34801561031957600080fd5b506101d86105f4565b34801561032e57600080fd5b506101d86105f9565b34801561034357600080fd5b506101d8610602565b34801561035857600080fd5b506101d8610607565b6102b7600480360360c081101561037757600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156103b757600080fd5b8201836020820111156103c957600080fd5b803590602001918460208302840111640100000000831117156103eb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050913592506105d2915050565b34801561043757600080fd5b506101d8610610565b34801561044c57600080fd5b506101d8610615565b5050604080516000808252602082019092529094909350915050565b61010081565b602081565b604081565b6000546001600160a01b031681565b61020081565b601081565b600080546040805163140e25ad60e31b815269021e19e0c9bab2400000600482015290516001600160a01b039092169263a0712d68926024808401936020939083900390910190829087803b1580156104f357600080fd5b505af1158015610507573d6000803e3d6000fd5b505050506040513d602081101561051d57600080fd5b5051610570576040805162461bcd60e51b815260206004820181905260248201527f54524144455f574954485f48494e542e205265766572746564206d696e742829604482015290519081900360640190fd5b61057861061a565b6001600160a01b0316866001600160a01b0316146105ab576105ab6001600160a01b03871633308763ffffffff61063216565b6000546105d2906001600160a01b03163369021e19e0c9bab240000063ffffffff61069216565b505050505050565b64010000000081565b61080081565b608081565b61040081565b600881565b64040000000081565b600281565b64020000000081565b600181565b600481565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261068c9085906106e9565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526106e49084906106e9565b505050565b6106fb826001600160a01b03166108a1565b61074c576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061078a5780518252601f19909201916020918201910161076b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107ec576040519150601f19603f3d011682016040523d82523d6000602084013e6107f1565b606091505b509150915081610848576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561068c5780806020019051602081101561086457600080fd5b505161068c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806108de602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906108d557508115155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212208f6f9be9efe89f081a883d87839c5c72e6e2a24624979cb5bef2737fef3eaf2f64736f6c63430006080033"; diff --git a/types/MockRepFactory.ts b/types/MockRepFactory.ts index 9b8413a3..7e7ce400 100644 --- a/types/MockRepFactory.ts +++ b/types/MockRepFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f41756775720000000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cf93ca588f3a3eee8e095664f2e354fab2319a302c4596f719a09e6592e385cd64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600381526020016205245560ec1b8152506040518060400160405280600581526020016420bab3bab960d91b8152506012828281600390805190602001906100659291906100b9565b5080516100799060049060208401906100b9565b50506005805460ff191660121790555061009b816001600160e01b036100a316565b505050610154565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100fa57805160ff1916838001178555610127565b82800160010185558215610127579182015b8281111561012757825182559160200191906001019061010c565b50610133929150610137565b5090565b61015191905b80821115610133576000815560010161013d565b90565b610b48806101636000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201b98b546c0531412dc951bb06befc11767cb2e0664e19e5efa3a9713db5eff8964736f6c63430006080033"; diff --git a/types/MockSnxFactory.ts b/types/MockSnxFactory.ts index bd4c230d..655eb239 100644 --- a/types/MockSnxFactory.ts +++ b/types/MockSnxFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f534e5800000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f534e5800000000000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ac444f1042bfdc208a6de58007759d8dd8046b50634a68108fed0ad2c99efd7264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060038152602001620a69cb60eb1b815250604051806040016040528060038152602001620a69cb60eb1b8152506012828281600390805190602001906100639291906100b7565b5080516100779060049060208401906100b7565b50506005805460ff1916601217905550610099816001600160e01b036100a116565b505050610152565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100f857805160ff1916838001178555610125565b82800160010185558215610125579182015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b61014f91905b80821115610131576000815560010161013b565b90565b610b48806101616000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206127c58fb3d4a06c59190f01a603eabca174a788fe81363790e190a32f7c8be564736f6c63430006080033"; diff --git a/types/MockSusdFactory.ts b/types/MockSusdFactory.ts index 1aa6dc46..5a883c9e 100644 --- a/types/MockSusdFactory.ts +++ b/types/MockSusdFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f53555344000000000000000000000000000000000000000000000000000000008152506040518060400160405280600d81526020017f53796e74686574697820555344000000000000000000000000000000000000008152506006828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203e052de43eb861b6ff39a51bfb06764a307f147b45cc091eab393caac348623964736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600481526020016314d554d160e21b8152506040518060400160405280600d81526020016c14de5b9d1a195d1a5e081554d1609a1b81525060068282816003908051906020019061006e9291906100c2565b5080516100829060049060208401906100c2565b50506005805460ff19166012179055506100a4816001600160e01b036100ac16565b50505061015d565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010357805160ff1916838001178555610130565b82800160010185558215610130579182015b82811115610130578251825591602001919060010190610115565b5061013c929150610140565b5090565b61015a91905b8082111561013c5760008155600101610146565b90565b610b488061016c6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122084379334e30a3ae5f6dc317505b184922062e53127ea3f8afd27cc57272d04f564736f6c63430006080033"; diff --git a/types/MockTusdFactory.ts b/types/MockTusdFactory.ts index 2d7aac4f..4efd27d2 100644 --- a/types/MockTusdFactory.ts +++ b/types/MockTusdFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f54555344000000000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f54727565555344000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e814ddef6100db9886137a4904969a9e798a0fd18f5adad714ed5f87d078234f64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060405180604001604052806004815260200163151554d160e21b81525060405180604001604052806007815260200166151c9d595554d160ca1b8152506012828281600390805190602001906100689291906100bc565b50805161007c9060049060208401906100bc565b50506005805460ff191660121790555061009e816001600160e01b036100a616565b505050610157565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100fd57805160ff191683800117855561012a565b8280016001018555821561012a579182015b8281111561012a57825182559160200191906001019061010f565b5061013692915061013a565b5090565b61015491905b808211156101365760008155600101610140565b90565b610b48806101666000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208b08f1a8b3adcc87db96604c07ebf2c61b2ab257cfedbb5665ddc6413985639664736f6c63430006080033"; diff --git a/types/MockUniDaiEthFactory.ts b/types/MockUniDaiEthFactory.ts index 37600834..4fc21565 100644 --- a/types/MockUniDaiEthFactory.ts +++ b/types/MockUniDaiEthFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f554e495f4441495f4554480000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f554e495f4441495f4554480000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f98c5648140c85161cea932b5f924971227dd36727608f2433cc62d89a661f464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600b81526020016a0aa9c92be888292be8aa8960ab1b8152506040518060400160405280600b81526020016a0aa9c92be888292be8aa8960ab1b8152506012828281600390805190602001906100739291906100c7565b5080516100879060049060208401906100c7565b50506005805460ff19166012179055506100a9816001600160e01b036100b116565b505050610162565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010857805160ff1916838001178555610135565b82800160010185558215610135579182015b8281111561013557825182559160200191906001019061011a565b50610141929150610145565b5090565b61015f91905b80821115610141576000815560010161014b565b90565b610b48806101716000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204bb4e7d077a3b06fec4c8c0f0e274e1d917953676750421b3b2af73398706fa564736f6c63430006080033"; diff --git a/types/MockUniLendEthFactory.ts b/types/MockUniLendEthFactory.ts index 8e2b9b4e..1c3aa892 100644 --- a/types/MockUniLendEthFactory.ts +++ b/types/MockUniLendEthFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f554e495f4c454e445f45544800000000000000000000000000000000000000008152506040518060400160405280600c81526020017f554e495f4c454e445f45544800000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b05f977f23ffb6e75fd1b733c010c098fd9ff6e1635d852e63c2daf89f9c214764736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600c81526020016b0aa9c92be988a9c88be8aa8960a31b8152506040518060400160405280600c81526020016b0aa9c92be988a9c88be8aa8960a31b8152506012828281600390805190602001906100759291906100c9565b5080516100899060049060208401906100c9565b50506005805460ff19166012179055506100ab816001600160e01b036100b316565b505050610164565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010a57805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013757825182559160200191906001019061011c565b50610143929150610147565b5090565b61016191905b80821115610143576000815560010161014d565b90565b610b48806101736000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207327e48805f462c1dcbe63447203544973f6eb24a0183d4586843d2b12ad91ae64736f6c63430006080033"; diff --git a/types/MockUniLinkEthFactory.ts b/types/MockUniLinkEthFactory.ts index 47811897..1924d87a 100644 --- a/types/MockUniLinkEthFactory.ts +++ b/types/MockUniLinkEthFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f554e495f4c494e4b5f45544800000000000000000000000000000000000000008152506040518060400160405280600c81526020017f554e495f4c494e4b5f45544800000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c5ecb1aad5f2eea8ce1e54063b2bbd2a375a411f1554202b57ecc028bd6238a464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600c81526020016b0aa9c92be98929c96be8aa8960a31b8152506040518060400160405280600c81526020016b0aa9c92be98929c96be8aa8960a31b8152506012828281600390805190602001906100759291906100c9565b5080516100899060049060208401906100c9565b50506005805460ff19166012179055506100ab816001600160e01b036100b316565b505050610164565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010a57805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013757825182559160200191906001019061011c565b50610143929150610147565b5090565b61016191905b80821115610143576000815560010161014d565b90565b610b48806101736000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f2d91d99b1f75bd02dd9b9e486a12005441d44fe801ac8e4090f49c07741987264736f6c63430006080033"; diff --git a/types/MockUniMkrEthFactory.ts b/types/MockUniMkrEthFactory.ts index 80cb2075..1133a8b5 100644 --- a/types/MockUniMkrEthFactory.ts +++ b/types/MockUniMkrEthFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f554e495f4d4b525f4554480000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f554e495f4d4b525f4554480000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122058b28b01881e4aa7b81053e70293ea08ba3bb183f41c021715303d4baae2756f64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600b81526020016a0aa9c92be9a96a4be8aa8960ab1b8152506040518060400160405280600b81526020016a0aa9c92be9a96a4be8aa8960ab1b8152506012828281600390805190602001906100739291906100c7565b5080516100879060049060208401906100c7565b50506005805460ff19166012179055506100a9816001600160e01b036100b116565b505050610162565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010857805160ff1916838001178555610135565b82800160010185558215610135579182015b8281111561013557825182559160200191906001019061011a565b50610141929150610145565b5090565b61015f91905b80821115610141576000815560010161014b565b90565b610b48806101716000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201d1df3378e4896d0244f44cbdac50b37fe2c4cbe9d4f69b809479d3008aacdb964736f6c63430006080033"; diff --git a/types/MockUniSethEthFactory.ts b/types/MockUniSethEthFactory.ts index 49626835..60fcfe3d 100644 --- a/types/MockUniSethEthFactory.ts +++ b/types/MockUniSethEthFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f554e495f534554485f45544800000000000000000000000000000000000000008152506040518060400160405280600c81526020017f554e495f534554485f45544800000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220da5ec663e826d0cfb5ad3f32501e0b51aa7ec2aecc670a2f960bbde1167d620264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600c81526020016b0aa9c92bea68aa890be8aa8960a31b8152506040518060400160405280600c81526020016b0aa9c92bea68aa890be8aa8960a31b8152506012828281600390805190602001906100759291906100c9565b5080516100899060049060208401906100c9565b50506005805460ff19166012179055506100ab816001600160e01b036100b316565b505050610164565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010a57805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013757825182559160200191906001019061011c565b50610143929150610147565b5090565b61016191905b80821115610143576000815560010161014d565b90565b610b48806101736000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f881f74afadd0965a22f885e46fd853cab255bb7cf89562218dc025f64067e9964736f6c63430006080033"; diff --git a/types/MockUniUsdcEthFactory.ts b/types/MockUniUsdcEthFactory.ts index 5a534d67..a3c7af94 100644 --- a/types/MockUniUsdcEthFactory.ts +++ b/types/MockUniUsdcEthFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f554e495f555344435f45544800000000000000000000000000000000000000008152506040518060400160405280600c81526020017f554e495f555344435f45544800000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122029b3f4f48de17a72fdfc0229486ad1c0af51190db27b4346bb41e3ee2a6c0a6564736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040518060400160405280600c81526020016b0aa9c92beaaa68886be8aa8960a31b8152506040518060400160405280600c81526020016b0aa9c92beaaa68886be8aa8960a31b8152506012828281600390805190602001906100759291906100c9565b5080516100899060049060208401906100c9565b50506005805460ff19166012179055506100ab816001600160e01b036100b316565b505050610164565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010a57805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013757825182559160200191906001019061011c565b50610143929150610147565b5090565b61016191905b80821115610143576000815560010161014d565b90565b610b48806101736000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b00d0ba85dd2ceae931208749da4b07e488127fb0de926a7181909706525077764736f6c63430006080033"; diff --git a/types/MockUsdFactory.ts b/types/MockUsdFactory.ts index 7c5be4b7..74f4de46 100644 --- a/types/MockUsdFactory.ts +++ b/types/MockUsdFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f55534400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f55534400000000000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209694e36bc0bd24e7cf3c476e70558d4c80eb2d2c712b53838edb32cf43b58baa64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060038152602001621554d160ea1b815250604051806040016040528060038152602001621554d160ea1b8152506012828281600390805190602001906100639291906100b7565b5080516100779060049060208401906100b7565b50506005805460ff1916601217905550610099816001600160e01b036100a116565b505050610152565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100f857805160ff1916838001178555610125565b82800160010185558215610125579182015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b61014f91905b80821115610131576000815560010161013b565b90565b610b48806101616000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122085b4ba9d9d8c704c30e6ca61d7b9bc38d772fdc0b2df5f60b595a38cd5b7b3cc64736f6c63430006080033"; diff --git a/types/MockUsdcFactory.ts b/types/MockUsdcFactory.ts index 336c328a..e31b14e8 100644 --- a/types/MockUsdcFactory.ts +++ b/types/MockUsdcFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f55534443000000000000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f55534420436f696e0000000000000000000000000000000000000000000000008152506006828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220277337b738e8dcc922068c2566021fe80b3d744fd991a33e66d3c73c10689b0664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001635553444360e01b815250604051806040016040528060088152602001672aa9a21021b7b4b760c11b8152506006828281600390805190602001906100699291906100bd565b50805161007d9060049060208401906100bd565b50506005805460ff191660121790555061009f816001600160e01b036100a716565b505050610158565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100fe57805160ff191683800117855561012b565b8280016001018555821561012b579182015b8281111561012b578251825591602001919060010190610110565b5061013792915061013b565b5090565b61015591905b808211156101375760008155600101610141565b90565b610b48806101676000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208940eec75986da8ca52beca0ff61bed55ceaf12fd2b554e3a52b7d753f0920fe64736f6c63430006080033"; diff --git a/types/MockUsdtFactory.ts b/types/MockUsdtFactory.ts index e739e393..0bf0c9d7 100644 --- a/types/MockUsdtFactory.ts +++ b/types/MockUsdtFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f55534454000000000000000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f5553445420436f696e00000000000000000000000000000000000000000000008152506006828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e6433badbecc03a3fe9669665f66e240f065cce5fe99079938ee29b44ff5ffda64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001631554d11560e21b815250604051806040016040528060098152602001682aa9a22a1021b7b4b760b91b81525060068282816003908051906020019061006a9291906100be565b50805161007e9060049060208401906100be565b50506005805460ff19166012179055506100a0816001600160e01b036100a816565b505050610159565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ff57805160ff191683800117855561012c565b8280016001018555821561012c579182015b8281111561012c578251825591602001919060010190610111565b5061013892915061013c565b5090565b61015691905b808211156101385760008155600101610142565b90565b610b48806101686000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d9939a903d071b71d936e4e686a22a0af955b3ada0ba79e7875cbb27657991964736f6c63430006080033"; diff --git a/types/MockWbtcFactory.ts b/types/MockWbtcFactory.ts index 13a80a18..f83343b8 100644 --- a/types/MockWbtcFactory.ts +++ b/types/MockWbtcFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f57425443000000000000000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f5742544320436f696e00000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122036540f9f76b0e60926c84addd12fc0def4d488e8e5d63928bd7a5ed6b4b4a16064736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001635742544360e01b815250604051806040016040528060098152602001682ba12a219021b7b4b760b91b81525060128282816003908051906020019061006a9291906100be565b50805161007e9060049060208401906100be565b50506005805460ff19166012179055506100a0816001600160e01b036100a816565b505050610159565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100ff57805160ff191683800117855561012c565b8280016001018555821561012c579182015b8281111561012c578251825591602001919060010190610111565b5061013892915061013c565b5090565b61015691905b808211156101385760008155600101610142565b90565b610b48806101686000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072bc373208b69f3ae78351d95f1cd39eb96616f328192923a9bc9014dffc7c6064736f6c63430006080033"; diff --git a/types/MockZrxFactory.ts b/types/MockZrxFactory.ts index cf9aa498..925e023f 100644 --- a/types/MockZrxFactory.ts +++ b/types/MockZrxFactory.ts @@ -326,4 +326,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040518060400160405280600381526020017f5a525800000000000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f307820436f696e000000000000000000000000000000000000000000000000008152506012828281600390805190602001906200009a9291906200010a565b508060049080519060200190620000b39291906200010a565b506012600560006101000a81548160ff021916908360ff1602179055505050620000e381620000ec60201b60201c565b505050620001b9565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014d57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017d57825182559160200191906001019062000160565b5b5090506200018d919062000191565b5090565b620001b691905b80821115620001b257600081600090555060010162000198565b5090565b90565b61131e80620001c96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a08231146102d057806395d89b4114610328578063a0712d68146103ab578063a457c2d7146103f1578063a9059cbb14610457578063dd62ed3e146104bd576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063313ce56714610246578063395093511461026a575b600080fd5b6100c1610535565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105d7565b604051808215151515815260200191505060405180910390f35b6101aa6105f5565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ff565b604051808215151515815260200191505060405180910390f35b61024e6106d8565b604051808260ff1660ff16815260200191505060405180910390f35b6102b66004803603604081101561028057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106ef565b604051808215151515815260200191505060405180910390f35b610312600480360360208110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a2565b6040518082815260200191505060405180910390f35b6103306107ea565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610370578082015181840152602081019050610355565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d7600480360360208110156103c157600080fd5b810190808035906020019092919050505061088c565b604051808215151515815260200191505060405180910390f35b61043d6004803603604081101561040757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a1565b604051808215151515815260200191505060405180910390f35b6104a36004803603604081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061096e565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061098c565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b5050505050905090565b60006105eb6105e4610a13565b8484610a1b565b6001905092915050565b6000600254905090565b600061060c848484610c12565b6106cd84610618610a13565b6106c88560405180606001604052806028815260200161125360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061067e610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107986106fc610a13565b84610793856001600061070d610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b610a1b565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108825780601f1061085757610100808354040283529160200191610882565b820191906000526020600020905b81548152906001019060200180831161086557829003601f168201915b5050505050905090565b6000610898338361101b565b60019050919050565b60006109646108ae610a13565b8461095f856040518060600160405280602581526020016112c460259139600160006108d8610a13565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b610a1b565b6001905092915050565b600061098261097b610a13565b8484610c12565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806112a06024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061120b6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061127b6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806111e86023913960400191505060405180910390fd5b610d298383836111e2565b610d948160405180606001604052806026815260200161122d602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e27816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f45578082015181840152602081019050610f2a565b50505050905090810190601f168015610f725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6110ca600083836111e2565b6110df81600254610f9390919063ffffffff16565b600281905550611136816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f9390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122017282d069e83e6feb72c50373c1df4c9a7602000e421bdd68728e9e9f5647f4464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50604051806040016040528060038152602001620b4a4b60eb1b81525060405180604001604052806007815260200166183c1021b7b4b760c91b8152506012828281600390805190602001906100679291906100bb565b50805161007b9060049060208401906100bb565b50506005805460ff191660121790555061009d816001600160e01b036100a516565b505050610156565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100fc57805160ff1916838001178555610129565b82800160010185558215610129579182015b8281111561012957825182559160200191906001019061010e565b50610135929150610139565b5090565b61015391905b80821115610135576000815560010161013f565b90565b610b48806101656000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610427565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610430565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610484565b6100c161049f565b6101626004803603602081101561025457600080fd5b5035610500565b6101626004803603604081101561027157600080fd5b506001600160a01b038135169060200135610514565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610582565b61017e600480360360408110156102c957600080fd5b506001600160a01b0381358116916020013516610596565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105c1565b84846105c5565b50600192915050565b60025490565b60006103a78484846106b1565b61041d846103b36105c1565b61041885604051806060016040528060288152602001610a7d602891396001600160a01b038a166000908152600160205260408120906103f16105c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61081816565b6105c5565b5060019392505050565b60055460ff1690565b600061038b61043d6105c1565b84610418856001600061044e6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6108af16565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b600061050c3383610910565b506001919050565b600061038b6105216105c1565b8461041885604051806060016040528060258152602001610aee602591396001600061054b6105c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61081816565b600061038b61058f6105c1565b84846106b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661060a5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aca6024913960400191505060405180910390fd5b6001600160a01b03821661064f5760405162461bcd60e51b8152600401808060200182810382526022815260200180610a356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106f65760405162461bcd60e51b8152600401808060200182810382526025815260200180610aa56025913960400191505060405180910390fd5b6001600160a01b03821661073b5760405162461bcd60e51b8152600401808060200182810382526023815260200180610a126023913960400191505060405180910390fd5b610746838383610a0c565b61078981604051806060016040528060268152602001610a57602691396001600160a01b038616600090815260208190526040902054919063ffffffff61081816565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107be908263ffffffff6108af16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108a75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086c578181015183820152602001610854565b50505050905090810190601f1680156108995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610909576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b03821661096b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61097760008383610a0c565b60025461098a908263ffffffff6108af16565b6002556001600160a01b0382166000908152602081905260409020546109b6908263ffffffff6108af16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122061ccc5c8eefe093b8aa11b4c0bc124d48c3a619bc8115c5a5fef887019af7e3564736f6c63430006080033"; diff --git a/types/OneSplitAdapterFactory.ts b/types/OneSplitAdapterFactory.ts index 13b0d77a..56cd4daf 100644 --- a/types/OneSplitAdapterFactory.ts +++ b/types/OneSplitAdapterFactory.ts @@ -151,4 +151,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b507f8d2e03fe8af77d72ac9d334b8bc58153f47fc0c0ec0c926c1686754201cfdc5d731814222fa8c8c1c1bf380e3bbfbd9de8657da4767376b47460d7f7c5222cfb6b6a75615ab10895dde4600a604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a161104f806100e86000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630ed2fc951461003b57806393ed4309146100c7575b600080fd5b6100b16004803603608081101561005157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610140565b6040518082815260200191505060405180910390f35b61013e600480360360208110156100dd57600080fd5b81019080803590602001906401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184602083028401116401000000008311171561012e57600080fd5b9091929391929390505050610720565b005b60008061014b610814565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610184576000610186565b835b905060007376b47460d7f7c5222cfb6b6a75615ab10895dde473ffffffffffffffffffffffffffffffffffffffff1663b3596f07886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561021b57600080fd5b505afa15801561022f573d6000803e3d6000fd5b505050506040513d602081101561024557600080fd5b8101908080519060200190929190505050905060007376b47460d7f7c5222cfb6b6a75615ab10895dde473ffffffffffffffffffffffffffffffffffffffff1663b3596f07886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156102eb57600080fd5b505afa1580156102ff573d6000803e3d6000fd5b505050506040513d602081101561031557600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156103a757600080fd5b505afa1580156103bb573d6000803e3d6000fd5b505050506040513d60208110156103d157600080fd5b81019080805190602001909291905050509050731814222fa8c8c1c1bf380e3bbfbd9de8657da47673ffffffffffffffffffffffffffffffffffffffff16636b9589aa858b8b8b6000600a6102006040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184815260200183815260200182815260200196505050505050506000604051808303818588803b1580156104cf57600080fd5b505af11580156104e3573d6000803e3d6000fd5b505050505060006105b4828a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561056b57600080fd5b505afa15801561057f573d6000803e3d6000fd5b505050506040513d602081101561059557600080fd5b810190808051906020019092919050505061083090919063ffffffff16565b9050866064036106046105d08a8761087a90919063ffffffff16565b6105f660646105e8868961087a90919063ffffffff16565b61087a90919063ffffffff16565b61090090919063ffffffff16565b1015610678576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f494e56414c49445f534c4950504147450000000000000000000000000000000081525060200191505060405180910390fd5b731814222fa8c8c1c1bf380e3bbfbd9de8657da47673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fa6fee24309b1d83d9ec7b9e4dbb73c6f882746efbfb26db7b7d9e9f2fb6dc95a8b85604051808381526020018281526020019250505060405180910390a48095505050505050949350505050565b60008090505b8282905081101561080f57610739610814565b73ffffffffffffffffffffffffffffffffffffffff1683838381811061075b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461080257610801731814222fa8c8c1c1bf380e3bbfbd9de8657da4766107b361094a565b8585858181106107bf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109759092919063ffffffff16565b5b8080600101915050610726565b505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b600061087283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b7c565b905092915050565b60008083141561088d57600090506108fa565b600082840290508284828161089e57fe5b04146108f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610f996021913960400191505060405180910390fd5b809150505b92915050565b600061094283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c3c565b905092915050565b600060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03905090565b6000811480610a6f575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610a3257600080fd5b505afa158015610a46573d6000803e3d6000fd5b505050506040513d6020811015610a5c57600080fd5b8101908080519060200190929190505050145b610ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180610fe46036913960400191505060405180910390fd5b610b778363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610d02565b505050565b6000838311158290610c29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610bee578082015181840152602081019050610bd3565b50505050905090810190601f168015610c1b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290610ce8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cad578082015181840152602081019050610c92565b50505050905090810190601f168015610cda5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610cf457fe5b049050809150509392505050565b610d218273ffffffffffffffffffffffffffffffffffffffff16610f4d565b610d93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610de25780518252602082019150602081019050602083039250610dbf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e44576040519150601f19603f3d011682016040523d82523d6000602084013e610e49565b606091505b509150915081610ec1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610f4757808060200190516020811015610ee057600080fd5b8101908080519060200190929190505050610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610fba602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610f8f57506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212202249357dbf5fc499ce775565891a139afd1afebcd9c3e4956222dfa0cb66609b64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060408051731814222fa8c8c1c1bf380e3bbfbd9de8657da47681527376b47460d7f7c5222cfb6b6a75615ab10895dde46020820152600a8183015290517f8d2e03fe8af77d72ac9d334b8bc58153f47fc0c0ec0c926c1686754201cfdc5d9181900360600190a1610b5d806100876000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630ed2fc951461003b57806393ed430914610089575b600080fd5b6100776004803603608081101561005157600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356100fb565b60408051918252519081900360200190f35b6100f96004803603602081101561009f57600080fd5b8101906020810181356401000000008111156100ba57600080fd5b8201836020820111156100cc57600080fd5b803590602001918460208302840111640100000000831117156100ee57600080fd5b5090925090506104f2565b005b600080610106610599565b6001600160a01b0316866001600160a01b031614610125576000610127565b835b6040805163b3596f0760e01b81526001600160a01b038916600482015290519192506000917376b47460d7f7c5222cfb6b6a75615ab10895dde49163b3596f07916024808301926020929190829003018186803b15801561018757600080fd5b505afa15801561019b573d6000803e3d6000fd5b505050506040513d60208110156101b157600080fd5b50516040805163b3596f0760e01b81526001600160a01b038916600482015290519192506000917376b47460d7f7c5222cfb6b6a75615ab10895dde49163b3596f07916024808301926020929190829003018186803b15801561021357600080fd5b505afa158015610227573d6000803e3d6000fd5b505050506040513d602081101561023d57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038a16916370a08231916024808301926020929190829003018186803b15801561028b57600080fd5b505afa15801561029f573d6000803e3d6000fd5b505050506040513d60208110156102b557600080fd5b5051604080516335cac4d560e11b81526001600160a01b038c811660048301528b166024820152604481018a9052600060648201819052600a608483015261020060a48301529151929350731814222fa8c8c1c1bf380e3bbfbd9de8657da47692636b9589aa92889260c4808201939182900301818588803b15801561033a57600080fd5b505af115801561034e573d6000803e3d6000fd5b505050505060006103e7828a6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103af57600080fd5b505afa1580156103c3573d6000803e3d6000fd5b505050506040513d60208110156103d957600080fd5b50519063ffffffff6105b116565b9050606487900361042e610401868b63ffffffff6105fc16565b6104226064610416888763ffffffff6105fc16565b9063ffffffff6105fc16565b9063ffffffff61065516565b1015610474576040805162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534c49505041474560801b604482015290519081900360640190fd5b731814222fa8c8c1c1bf380e3bbfbd9de8657da4766001600160a01b0316896001600160a01b03168b6001600160a01b03167fa6fee24309b1d83d9ec7b9e4dbb73c6f882746efbfb26db7b7d9e9f2fb6dc95a8b85604051808381526020018281526020019250505060405180910390a49998505050505050505050565b60005b8181101561059457610505610599565b6001600160a01b031683838381811061051a57fe5b905060200201356001600160a01b03166001600160a01b03161461058c5761058c731814222fa8c8c1c1bf380e3bbfbd9de8657da476610558610697565b85858581811061056457fe5b905060200201356001600160a01b03166001600160a01b031661069d9092919063ffffffff16565b6001016104f5565b505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b60006105f383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506107b0565b90505b92915050565b60008261060b575060006105f6565b8282028284828161061857fe5b04146105f35760405162461bcd60e51b8152600401808060200182810382526021815260200180610aa76021913960400191505060405180910390fd5b60006105f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610847565b60011990565b801580610723575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156106f557600080fd5b505afa158015610709573d6000803e3d6000fd5b505050506040513d602081101561071f57600080fd5b5051155b61075e5760405162461bcd60e51b8152600401808060200182810382526036815260200180610af26036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526105949084906108ac565b6000818484111561083f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108045781810151838201526020016107ec565b50505050905090810190601f1680156108315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836108965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108045781810151838201526020016107ec565b5060008385816108a257fe5b0495945050505050565b6108be826001600160a01b0316610a6a565b61090f576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061094d5780518252601f19909201916020918201910161092e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109af576040519150601f19603f3d011682016040523d82523d6000602084013e6109b4565b606091505b509150915081610a0b576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610a6457808060200190516020811015610a2757600080fd5b5051610a645760405162461bcd60e51b815260040180806020018281038252602a815260200180610ac8602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610a9e57508115155b94935050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220fc45accf95836cf324cd68150730543f84ce17523a2367fa0f1221eb5eca3c0264736f6c63430006080033"; diff --git a/types/PriceOracleFactory.ts b/types/PriceOracleFactory.ts index ce5b0b97..4cfd4df4 100644 --- a/types/PriceOracleFactory.ts +++ b/types/PriceOracleFactory.ts @@ -144,4 +144,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506102ce806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806351323f7214610051578063a0a8045e1461009f578063b3596f07146100bd578063b951883a14610115575b600080fd5b61009d6004803603604081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610143565b005b6100a76101fd565b6040518082815260200191505060405180910390f35b6100ff600480360360208110156100d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610207565b6040518082815260200191505060405180910390f35b6101416004803603602081101561012b57600080fd5b810190808035906020019092919050505061024f565b005b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fce6e0b57367bae95ca7198e1172f653ea64a645c16ab586b4cefa9237bfc2d92828242604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15050565b6000600154905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b806001819055507fb4f35977939fa8b5ffe552d517a8ff5223046b1fdd3ee0068ae38d1e2b8d00168142604051808381526020018281526020019250505060405180910390a15056fea2646970667358221220cc210b3d4049c8fb5303e4219241d39724b55f017315ffe61dbc7ce71ca95b7464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506101d0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806351323f7214610051578063a0a8045e1461007f578063b3596f0714610099578063b951883a146100bf575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b0381351690602001356100dc565b005b610087610137565b60408051918252519081900360200190f35b610087600480360360208110156100af57600080fd5b50356001600160a01b031661013d565b61007d600480360360208110156100d557600080fd5b5035610158565b6001600160a01b03821660008181526020818152604091829020849055815192835282018390524282820152517fce6e0b57367bae95ca7198e1172f653ea64a645c16ab586b4cefa9237bfc2d929181900360600190a15050565b60015490565b6001600160a01b031660009081526020819052604090205490565b60018190556040805182815242602082015281517fb4f35977939fa8b5ffe552d517a8ff5223046b1fdd3ee0068ae38d1e2b8d0016929181900390910190a15056fea264697066735822122099f53b6981b65616d385dea54c4fed741a17ffabec0ee5d7980361b3fcabd5b564736f6c63430006080033"; diff --git a/types/ProxyFactory.ts b/types/ProxyFactory.ts index c01b8a8b..bf2277a2 100644 --- a/types/ProxyFactory.ts +++ b/types/ProxyFactory.ts @@ -15,6 +15,6 @@ export class ProxyFactory { const _abi = [ { stateMutability: "payable", - type: "receive" + type: "fallback" } ]; diff --git a/types/TokenDistributorFactory.ts b/types/TokenDistributorFactory.ts index 1c104c5e..4fb5c8c2 100644 --- a/types/TokenDistributorFactory.ts +++ b/types/TokenDistributorFactory.ts @@ -371,4 +371,4 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b5060016000806101000a81548160ff0219169083151502179055506125d48061003f6000396000f3fe6080604052600436106100f75760003560e01c80636138889b1161008a578063cc8cc9d811610059578063cc8cc9d814610796578063e5b5019a146108ef578063eed64c301461091a578063f0eeed8114610a73576100fe565b80636138889b146103685780637623bac51461042d5780638c0c9a251461067a57806393ed4309146106d1576100fe565b806323879bb1116100c657806323879bb1146102645780632cbcda251461028f57806340d58a4a146102e65780634f1b86eb14610311576100fe565b8063043c41d414610103578063135206581461012e5780631cced51b14610159578063217ab8061461020d576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b50610118610aca565b6040518082815260200191505060405180910390f35b34801561013a57600080fd5b50610143610aee565b6040518082815260200191505060405180910390f35b34801561016557600080fd5b5061016e610af4565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156101b557808201518184015260208101905061019a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156101f75780820151818401526020810190506101dc565b5050505090500194505050505060405180910390f35b34801561021957600080fd5b50610222610bdd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027057600080fd5b50610279610c03565b6040518082815260200191505060405180910390f35b34801561029b57600080fd5b506102a4610c08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102f257600080fd5b506102fb610c2e565b6040518082815260200191505060405180910390f35b34801561031d57600080fd5b50610326610c33565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037457600080fd5b5061042b6004803603602081101561038b57600080fd5b81019080803590602001906401000000008111156103a857600080fd5b8201836020820111156103ba57600080fd5b803590602001918460208302840111640100000000831117156103dc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610c59565b005b34801561043957600080fd5b50610678600480360360c081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104cd57600080fd5b8201836020820111156104df57600080fd5b8035906020019184602083028401116401000000008311171561050157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561056157600080fd5b82018360208201111561057357600080fd5b8035906020019184602083028401116401000000008311171561059557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105f557600080fd5b82018360208201111561060757600080fd5b8035906020019184602083028401116401000000008311171561062957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610dca565b005b34801561068657600080fd5b5061068f611061565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106dd57600080fd5b50610794600480360360208110156106f457600080fd5b810190808035906020019064010000000081111561071157600080fd5b82018360208201111561072357600080fd5b8035906020019184602083028401116401000000008311171561074557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611079565b005b3480156107a257600080fd5b506108ed600480360360408110156107b957600080fd5b81019080803590602001906401000000008111156107d657600080fd5b8201836020820111156107e857600080fd5b8035906020019184602083028401116401000000008311171561080a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561086a57600080fd5b82018360208201111561087c57600080fd5b8035906020019184602083028401116401000000008311171561089e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061120b565b005b3480156108fb57600080fd5b5061090461125c565b6040518082815260200191505060405180910390f35b34801561092657600080fd5b50610a716004803603604081101561093d57600080fd5b810190808035906020019064010000000081111561095a57600080fd5b82018360208201111561096c57600080fd5b8035906020019184602083028401116401000000008311171561098e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109ee57600080fd5b820183602082011115610a0057600080fd5b80359060200191846020830284011164010000000083111715610a2257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611280565b005b348015610a7f57600080fd5b50610a88611462565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81565b61271081565b6060806035600001805480602002602001604051908101604052809291908181526020018280548015610b7c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b32575b505050505091506035600101805480602002602001604051908101604052809291908181526020018280548015610bd257602002820191906000526020600020905b815481526020019060010190808311610bbe575b505050505090509091565b603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600381565b603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600181565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b8151811015610dc6576000610c72611488565b73ffffffffffffffffffffffffffffffffffffffff16838381518110610c9457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610cbe5747610d8a565b828281518110610cca57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d4e57600080fd5b505afa158015610d62573d6000803e3d6000fd5b505050506040513d6020811015610d7857600080fd5b81019080805190602001909291905050505b905060008111610d9a5750610db9565b610db7838381518110610da957fe5b6020026020010151826114a4565b505b8080600101915050610c5f565b5050565b6000610dd4611b70565b9050600260009054906101000a900460ff1680610df55750610df4611b79565b5b80610e01575060015481115b610e56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061250e602e913960400191505060405180910390fd5b6000600260009054906101000a900460ff161590508015610e94576001600260006101000a81548160ff021916908315150217905550816001819055505b87603960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086603860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085603a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f618585611b8a565b610f6a83611079565b7f99566d155bc7902033d8db6b0f091f12209d9651abdae3aad004632bd3e657b587878a604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a18015611057576000600260006101000a81548160ff0219169083151502179055505b5050505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6000603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393ed430960e01b836040516024018080602001828103825283818151815260200191508051906020019060200280838360005b838110156111035780820151818401526020810190506110e8565b5050505090500192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061119e578051825260208201915060208101905060208303925061117b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146111fe576040519150601f19603f3d011682016040523d82523d6000602084013e611203565b606091505b505090505050565b60008090505b82518110156112575761124a83828151811061122957fe5b602002602001015183838151811061123d57fe5b60200260200101516114a4565b8080600101915050611211565b505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b60008090505b825181101561145d576000611299611488565b73ffffffffffffffffffffffffffffffffffffffff168483815181106112bb57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561131d57611318606461130a8585815181106112f357fe5b602002602001015147611d1a90919063ffffffff16565b611da090919063ffffffff16565b611421565b611420606461141285858151811061133157fe5b602002602001015187868151811061134557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113c957600080fd5b505afa1580156113dd573d6000803e3d6000fd5b505050506040513d60208110156113f357600080fd5b8101908080519060200190929190505050611d1a90919063ffffffff16565b611da090919063ffffffff16565b5b9050600081116114315750611450565b61144e84838151811061144057fe5b6020026020010151826114a4565b505b8080600101915050611286565b505050565b603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b60008290506114b1612393565b60356040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561154357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114f9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561159b57602002820191906000526020600020905b815481526020019060010190808311611587575b505050505081525050905060008090505b816000015151811015611b695760006115f96127106115eb856020015185815181106115d457fe5b602002602001015188611d1a90919063ffffffff16565b611da090919063ffffffff16565b9050600081141561160a5750611b5c565b600073ffffffffffffffffffffffffffffffffffffffff168360000151838151811061163257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146118715761165d611488565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146116d6576116d1836000015183815181106116a257fe5b6020026020010151828873ffffffffffffffffffffffffffffffffffffffff16611dea9092919063ffffffff16565b6117cb565b6000836000015183815181106116e857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d806000811461174d576040519150601f19603f3d011682016040523d82523d6000602084013e611752565b606091505b50509050806117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f526576657274656420455448207472616e73666572000000000000000000000081525060200191505060405180910390fd5b505b7f60ce3cc2d133631eac66a476f14997a9fa682bd05a60dd993cf02285822d78d8836000015183815181106117fc57fe5b60200260200101518460200151848151811061181457fe5b602002602001015183604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1611b5a565b6000819050603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611b4f5760006060603a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ed2fc9560e01b88603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600a604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018260ff168152602001945050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310611a475780518252602082019150602081019050602083039250611a24565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611aa7576040519150601f19603f3d011682016040523d82523d6000602084013e611aac565b606091505b509150915081611b24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4552524f525f4f4e5f45584348414e474500000000000000000000000000000081525060200191505060405180910390fd5b808060200190516020811015611b3957600080fd5b8101908080519060200190929190505050925050505b611b5881611ea2565b505b505b80806001019150506115ac565b5050505050565b60006003905090565b600080303b90506000811491505090565b8051825114611c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4172726179206c656e677468732073686f756c6420626520657175616c00000081525060200191505060405180910390fd5b60405180604001604052808381526020018281525060356000820151816000019080519060200190611c349291906123ad565b506020820151816001019080519060200190611c51929190612437565b509050507fdc9f439f707945ade720b0154668dd64af0689fb88b40abdb0f0289156d23e9d8282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611cbf578082015181840152602081019050611ca4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611d01578082015181840152602081019050611ce6565b5050505090500194505050505060405180910390a15050565b600080831415611d2d5760009050611d9a565b6000828402905082848281611d3e57fe5b0414611d95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124ed6021913960400191505060405180910390fd5b809150505b92915050565b6000611de283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612037565b905092915050565b611e9d8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120fd565b505050565b603860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb603960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f6d57600080fd5b505af1158015611f81573d6000803e3d6000fd5b505050506040513d6020811015611f9757600080fd5b8101908080519060200190929190505050611ffd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061253c6039913960400191505060405180910390fd5b7fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb816040518082815260200191505060405180910390a150565b600080831182906120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120a857808201518184015260208101905061208d565b50505050905090810190601f1680156120d55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816120ef57fe5b049050809150509392505050565b61211c8273ffffffffffffffffffffffffffffffffffffffff16612348565b61218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106121dd57805182526020820191506020810190506020830392506121ba565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461223f576040519150601f19603f3d011682016040523d82523d6000602084013e612244565b606091505b5091509150816122bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612342578080602001905160208110156122db57600080fd5b8101908080519060200190929190505050612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612575602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561238a57506000801b8214155b92505050919050565b604051806040016040528060608152602001606081525090565b828054828255906000526020600020908101928215612426579160200282015b828111156124255782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906123cd565b5b5090506124339190612484565b5090565b828054828255906000526020600020908101928215612473579160200282015b82811115612472578251825591602001919060010190612457565b5b50905061248091906124c7565b5090565b6124c491905b808211156124c057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161248a565b5090565b90565b6124e991905b808211156124e55760008160009055506001016124cd565b5090565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564494e5445524e414c5f4255524e2e205265766572746564207472616e7366657220746f20726563697069656e744275726e20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220fffa31166a7de443ed49370ff4a0f9f02d4b5014831bcb6c46ce1c023cb3d3ba64736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b506000805460ff19166001179055611af8806100326000396000f3fe6080604052600436106100f75760003560e01c80636138889b1161008a578063cc8cc9d811610059578063cc8cc9d8146105b8578063e5b5019a146106e8578063eed64c30146106fd578063f0eeed811461082d576100fe565b80636138889b146102725780637623bac5146103225780638c0c9a25146104f557806393ed43091461050a576100fe565b806323879bb1116100c657806323879bb11461021e5780632cbcda251461023357806340d58a4a146102485780634f1b86eb1461025d576100fe565b8063043c41d414610103578063135206581461012a5780631cced51b1461013f578063217ab806146101ed576100fe565b366100fe57005b600080fd5b34801561010f57600080fd5b50610118610842565b60408051918252519081900360200190f35b34801561013657600080fd5b50610118610848565b34801561014b57600080fd5b5061015461084e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610198578181015183820152602001610180565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156101d75781810151838201526020016101bf565b5050505090500194505050505060405180910390f35b3480156101f957600080fd5b5061020261090b565b604080516001600160a01b039092168252519081900360200190f35b34801561022a57600080fd5b5061011861091a565b34801561023f57600080fd5b5061020261091f565b34801561025457600080fd5b5061011861092e565b34801561026957600080fd5b50610202610933565b34801561027e57600080fd5b506103206004803603602081101561029557600080fd5b810190602081018135600160201b8111156102af57600080fd5b8201836020820111156102c157600080fd5b803590602001918460208302840111600160201b831117156102e257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610942945050505050565b005b34801561032e57600080fd5b50610320600480360360c081101561034557600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b81111561038057600080fd5b82018360208201111561039257600080fd5b803590602001918460208302840111600160201b831117156103b357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040257600080fd5b82018360208201111561041457600080fd5b803590602001918460208302840111600160201b8311171561043557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561048457600080fd5b82018360208201111561049657600080fd5b803590602001918460208302840111600160201b831117156104b757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a5b945050505050565b34801561050157600080fd5b50610202610b9a565b34801561051657600080fd5b506103206004803603602081101561052d57600080fd5b810190602081018135600160201b81111561054757600080fd5b82018360208201111561055957600080fd5b803590602001918460208302840111600160201b8311171561057a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bb2945050505050565b3480156105c457600080fd5b50610320600480360360408110156105db57600080fd5b810190602081018135600160201b8111156105f557600080fd5b82018360208201111561060757600080fd5b803590602001918460208302840111600160201b8311171561062857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460208302840111600160201b831117156106aa57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610ce4945050505050565b3480156106f457600080fd5b50610118610d2d565b34801561070957600080fd5b506103206004803603604081101561072057600080fd5b810190602081018135600160201b81111561073a57600080fd5b82018360208201111561074c57600080fd5b803590602001918460208302840111600160201b8311171561076d57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156107bc57600080fd5b8201836020820111156107ce57600080fd5b803590602001918460208302840111600160201b831117156107ef57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d33945050505050565b34801561083957600080fd5b50610202610e97565b60011981565b61271081565b60608060356000018054806020026020016040519081016040528092919081815260200182805480156108aa57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161088c575b50505050509150603560010180548060200260200160405190810160405280929190818152602001828054801561090057602002820191906000526020600020905b8154815260200190600101908083116108ec575b505050505090509091565b6039546001600160a01b031681565b600381565b603a546001600160a01b031681565b600181565b6038546001600160a01b031681565b60005b8151811015610a57576000610958610ea6565b6001600160a01b031683838151811061096d57fe5b60200260200101516001600160a01b0316141561098a5747610a20565b82828151811061099657fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156109f357600080fd5b505afa158015610a07573d6000803e3d6000fd5b505050506040513d6020811015610a1d57600080fd5b50515b905060008111610a305750610a4f565b610a4d838381518110610a3f57fe5b602002602001015182610ebf565b505b600101610945565b5050565b6000610a6561131f565b60025490915060ff1680610a7c5750610a7c611324565b80610a88575060015481115b610ac35760405162461bcd60e51b815260040180806020018281038252602e815260200180611a32602e913960400191505060405180910390fd5b60025460ff16158015610ae4576002805460ff191660019081179091558290555b603980546001600160a01b03808b166001600160a01b031992831617909255603880548a8416908316179055603a805492891692909116919091179055610b2b858561132a565b610b3483610bb2565b604080516001600160a01b03808a16825280891660208301528a168183015290517f99566d155bc7902033d8db6b0f091f12209d9651abdae3aad004632bd3e657b59181900360600190a18015610b90576002805460ff191690555b5050505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b603a546040516020602482018181528451604484015284516000946001600160a01b0316936393ed430960e01b9387939283926064019180860191028083838b5b83811015610c0b578181015183820152602001610bf3565b5050505090500192505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b60208310610c785780518252601f199092019160209182019101610c59565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610cd8576040519150601f19603f3d011682016040523d82523d6000602084013e610cdd565b606091505b5050505050565b60005b8251811015610d2857610d20838281518110610cff57fe5b6020026020010151838381518110610d1357fe5b6020026020010151610ebf565b600101610ce7565b505050565b60001981565b60005b8251811015610d28576000610d49610ea6565b6001600160a01b0316848381518110610d5e57fe5b60200260200101516001600160a01b03161415610db157610dac6064610da0858581518110610d8957fe5b60200260200101514761148490919063ffffffff16565b9063ffffffff6114e616565b610e6e565b610e6e6064610da0858581518110610dc557fe5b6020026020010151878681518110610dd957fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e3657600080fd5b505afa158015610e4a573d6000803e3d6000fd5b505050506040513d6020811015610e6057600080fd5b50519063ffffffff61148416565b905060008111610e7e5750610e8f565b610e8d848381518110610a3f57fe5b505b600101610d36565b6037546001600160a01b031681565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b90565b81610ec861190c565b604080516035805460606020820284018101855293830181815292939192849290918491840182828015610f2557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f07575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f7d57602002820191906000526020600020905b815481526020019060010190808311610f69575b505050505081525050905060008090505b815151811015610cdd576000610fca612710610da085602001518581518110610fb357fe5b60200260200101518861148490919063ffffffff16565b905080610fd75750611317565b825180516000919084908110610fe957fe5b60200260200101516001600160a01b03161461119757611007610ea6565b6001600160a01b0316846001600160a01b031614611059576110548360000151838151811061103257fe5b602002602001015182886001600160a01b03166115289092919063ffffffff16565b611118565b60008360000151838151811061106b57fe5b60200260200101516001600160a01b03168260405180600001905060006040518083038185875af1925050503d80600081146110c3576040519150601f19603f3d011682016040523d82523d6000602084013e6110c8565b606091505b5050905080611116576040805162461bcd60e51b81526020600482015260156024820152742932bb32b93a32b21022aa24103a3930b739b332b960591b604482015290519081900360640190fd5b505b7f60ce3cc2d133631eac66a476f14997a9fa682bd05a60dd993cf02285822d78d88360000151838151811061114957fe5b60200260200101518460200151848151811061116157fe5b602090810291909101810151604080516001600160a01b03909416845291830152818101849052519081900360600190a1611315565b60385481906001600160a01b0386811691161461130a57603a54603854604080516001600160a01b038981166024830152928316604482015260648101869052600a6084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316630ed2fc9560e01b17815291518151600095606095169382918083835b6020831061123e5780518252601f19909201916020918201910161121f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461129e576040519150601f19603f3d011682016040523d82523d6000602084013e6112a3565b606091505b5091509150816112ee576040805162461bcd60e51b81526020600482015260116024820152704552524f525f4f4e5f45584348414e474560781b604482015290519081900360640190fd5b80806020019051602081101561130357600080fd5b5051925050505b6113138161157a565b505b505b600101610f8e565b600390565b303b1590565b8051825114611380576040805162461bcd60e51b815260206004820152601d60248201527f4172726179206c656e677468732073686f756c6420626520657175616c000000604482015290519081900360640190fd5b60408051808201909152828152602080820183905283516035916113a8918391870190611926565b5060208281015180516113c1926001850192019061198b565b509050507fdc9f439f707945ade720b0154668dd64af0689fb88b40abdb0f0289156d23e9d8282604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561142c578181015183820152602001611414565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561146b578181015183820152602001611453565b5050505090500194505050505060405180910390a15050565b600082611493575060006114e0565b828202828482816114a057fe5b04146114dd5760405162461bcd60e51b8152600401808060200182810382526021815260200180611a116021913960400191505060405180910390fd5b90505b92915050565b60006114dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611670565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610d28908490611712565b6038546039546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b1580156115d357600080fd5b505af11580156115e7573d6000803e3d6000fd5b505050506040513d60208110156115fd57600080fd5b505161163a5760405162461bcd60e51b8152600401808060200182810382526039815260200180611a606039913960400191505060405180910390fd5b6040805182815290517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9181900360200190a150565b600081836116fc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116c15781810151838201526020016116a9565b50505050905090810190601f1680156116ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161170857fe5b0495945050505050565b611724826001600160a01b03166118d0565b611775576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106117b35780518252601f199092019160209182019101611794565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611815576040519150601f19603f3d011682016040523d82523d6000602084013e61181a565b606091505b509150915081611871576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156118ca5780806020019051602081101561188d57600080fd5b50516118ca5760405162461bcd60e51b815260040180806020018281038252602a815260200180611a99602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061190457508115155b949350505050565b604051806040016040528060608152602001606081525090565b82805482825590600052602060002090810192821561197b579160200282015b8281111561197b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611946565b506119879291506119d2565b5090565b8280548282559060005260206000209081019282156119c6579160200282015b828111156119c65782518255916020019190600101906119ab565b506119879291506119f6565b610ebc91905b808211156119875780546001600160a01b03191681556001016119d8565b610ebc91905b8082111561198757600081556001016119fc56fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564494e5445524e414c5f4255524e2e205265766572746564207472616e7366657220746f20726563697069656e744275726e20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122020a73989387c4e922e3c353ee5b57b85b9812559f531eb4e1b4a1b031229034564736f6c63430006080033"; diff --git a/types/UintStorageFactory.ts b/types/UintStorageFactory.ts index 962ff180..2e5bd8ec 100644 --- a/types/UintStorageFactory.ts +++ b/types/UintStorageFactory.ts @@ -56,4 +56,4 @@ const _abi = [ ]; const _bytecode = - "0x6080604052348015600f57600080fd5b5060be8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063bd02d0f514602d575b600080fd5b605660048036036020811015604157600080fd5b8101908080359060200190929190505050606c565b6040518082815260200191505060405180910390f35b600080600083815260200190815260200160002054905091905056fea2646970667358221220cb9d0b9d81b71521dc4f90374ac7a512ee578c957a497c709f6d137daaf4e73164736f6c63430006080033"; + "0x6080604052348015600f57600080fd5b5060a18061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063bd02d0f514602d575b600080fd5b604760048036036020811015604157600080fd5b50356059565b60408051918252519081900360200190f35b6000908152602081905260409020549056fea2646970667358221220bd68e5c406e3798dd84a0380e5fca02432bd9828e948826d8c339558e7076aef64736f6c63430006080033"; diff --git a/types/UpgradeabilityProxyFactory.ts b/types/UpgradeabilityProxyFactory.ts index f55eba06..727e0be0 100644 --- a/types/UpgradeabilityProxyFactory.ts +++ b/types/UpgradeabilityProxyFactory.ts @@ -76,9 +76,9 @@ const _abi = [ }, { stateMutability: "payable", - type: "receive" + type: "fallback" } ]; const _bytecode = - "0x60806040526040516104643803806104648339818101604052604081101561002657600080fd5b81019080805190602001909291908051604051939291908464010000000082111561005057600080fd5b8382019150602082018581111561006657600080fd5b825186600182028301116401000000008211171561008357600080fd5b8083526020830192505050908051906020019080838360005b838110156100b757808201518184015260208101905061009c565b50505050905090810190601f1680156100e45780820380516001836020036101000a031916815260200191505b50604052505050600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b1461015557fe5b6101648261023760201b60201c565b6000815111156102305760008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106101bb5780518252602082019150602081019050602083039250610198565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461021b576040519150601f19603f3d011682016040523d82523d6000602084013e610220565b606091505b505090508061022e57600080fd5b505b5050610319565b61024a816102ce60201b6100291760201c565b61029f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610429603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561031057506000801b8214155b92505050919050565b610101806103286000396000f3fe608060405236601057600e6015565b005b600080fd5b601b6073565b602760236075565b60a6565b565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015606a57506000801b8214155b92505050919050565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e806000811460c6573d6000f35b3d6000fdfea2646970667358221220bd3110bfb604b29e020b1dd8d013a7114a8c46739fb59f2e5fcb1084feec472d64736f6c6343000608003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373"; + "0x60806040526040516103d93803806103d98339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902060008051602061037e83398151915260001990910114925061012a91505057fe5b61013c826001600160e01b036101fb16565b8051156101f4576000826001600160a01b0316826040518082805190602001908083835b6020831061017f5780518252601f199092019160209182019101610160565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101df576040519150601f19603f3d011682016040523d82523d6000602084013e6101e4565b606091505b50509050806101f257600080fd5b505b5050610297565b61020e8161025b60201b6100201760201c565b6102495760405162461bcd60e51b815260040180806020018281038252603b81526020018061039e603b913960400191505060405180910390fd5b60008051602061037e83398151915255565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028f57508115155b949350505050565b60d9806102a56000396000f3fe6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220fc521e0ffd1e17d0f9982bc9bf3fa4a81d19f85e90c79d5f83a08aaace87fc5564736f6c63430006080033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373"; diff --git a/types/WalletBalanceProviderFactory.ts b/types/WalletBalanceProviderFactory.ts index 2f8de31b..9175f718 100644 --- a/types/WalletBalanceProviderFactory.ts +++ b/types/WalletBalanceProviderFactory.ts @@ -134,4 +134,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610c0d380380610c0d8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610b79806100946000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610093578063b59b28ef14610181578063f7888aec1461032f5761008e565b3661008e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610b16602e913960400191505060405180910390fd5b600080fd5b34801561009f57600080fd5b506100e2600480360360208110156100b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103b4565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561012957808201518184015260208101905061010e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561016b578082015181840152602081019050610150565b5050505090500194505050505060405180910390f35b34801561018d57600080fd5b506102d8600480360360408110156101a457600080fd5b81019080803590602001906401000000008111156101c157600080fd5b8201836020820111156101d357600080fd5b803590602001918460208302840111640100000000831117156101f557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184602083028401116401000000008311171561028957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061079a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561031b578082015181840152602081019050610300565b505050509050019250505060405180910390f35b34801561033b57600080fd5b5061039e6004803603604081101561035257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109be565b6040518082815260200191505060405180910390f35b60608060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d602081101561044a57600080fd5b8101908080519060200190929190505050905060608173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b1580156104a557600080fd5b505afa1580156104b9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156104e357600080fd5b810190808051604051939291908464010000000082111561050357600080fd5b8382019150602082018581111561051957600080fd5b825186602082028301116401000000008211171561053657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561056d578082015181840152602081019050610552565b5050505090500160405250505090506060815167ffffffffffffffff8111801561059657600080fd5b506040519080825280602002602001820160405280156105c55781602001602082028036833780820191505090505b50905060008090505b825181101561078b578373ffffffffffffffffffffffffffffffffffffffff166305075d6e8483815181106105ff57fe5b60200260200101516040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561066757600080fd5b505afa15801561067b573d6000803e3d6000fd5b505050506040513d602081101561069157600080fd5b81019080805190602001909291905050506106c55760008282815181106106b457fe5b60200260200101818152505061077e565b6106cd610aae565b73ffffffffffffffffffffffffffffffffffffffff168382815181106106ef57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161461074c5761072f8784838151811061072257fe5b60200260200101516109be565b82828151811061073b57fe5b60200260200101818152505061077d565b8673ffffffffffffffffffffffffffffffffffffffff163182828151811061077057fe5b6020026020010181815250505b5b80806001019150506105ce565b50818194509450505050915091565b606080825184510267ffffffffffffffff811180156107b857600080fd5b506040519080825280602002602001820160405280156107e75781602001602082028036833780820191505090505b50905060008090505b84518110156109b35760008090505b84518110156109a5576000855183029050610818610aae565b73ffffffffffffffffffffffffffffffffffffffff1686838151811061083a57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156108a85786838151811061086a57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1631848383018151811061089757fe5b602002602001018181525050610997565b6108da8683815181106108b757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610aca565b61094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f494e56414c49445f544f4b454e0000000000000000000000000000000000000081525060200191505060405180910390fd5b61097c87848151811061095b57fe5b602002602001015187848151811061096f57fe5b60200260200101516109be565b848383018151811061098a57fe5b6020026020010181815250505b5080806001019150506107ff565b5080806001019150506107f0565b508091505092915050565b60006109df8273ffffffffffffffffffffffffffffffffffffffff16610aca565b15610aa3578173ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a6157600080fd5b505afa158015610a75573d6000803e3d6000fd5b505050506040513d6020811015610a8b57600080fd5b81019080805190602001909291905050509050610aa8565b600090505b92915050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610b0c57506000801b8214155b9250505091905056fe57616c6c657442616c616e636550726f766964657220646f6573206e6f7420616363657074207061796d656e7473a26469706673582212200e4e04845aa833e41a66942d59968d638e07e12e8ede44593337d9b5fa8ee41f64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506040516109a33803806109a38339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561093e806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610079578063b59b28ef14610145578063f7888aec146102c957610074565b366100745760405162461bcd60e51b815260040180806020018281038252602e8152602001806108db602e913960400191505060405180910390fd5b600080fd5b34801561008557600080fd5b506100ac6004803603602081101561009c57600080fd5b50356001600160a01b0316610316565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100f05781810151838201526020016100d8565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561012f578181015183820152602001610117565b5050505090500194505050505060405180910390f35b34801561015157600080fd5b506102796004803603604081101561016857600080fd5b81019060208101813564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460208302840111640100000000831117156101b757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561020757600080fd5b82018360208201111561021957600080fd5b8035906020019184602083028401116401000000008311171561023b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610644945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102b557818101518382015260200161029d565b505050509050019250505060405180910390f35b3480156102d557600080fd5b50610304600480360360408110156102ec57600080fd5b506001600160a01b03813581169160200135166107dc565b60408051918252519081900360200190f35b60608060008060009054906101000a90046001600160a01b03166001600160a01b031663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561036857600080fd5b505afa15801561037c573d6000803e3d6000fd5b505050506040513d602081101561039257600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561041757600080fd5b810190808051604051939291908464010000000082111561043757600080fd5b90830190602082018581111561044c57600080fd5b825186602082028301116401000000008211171561046957600080fd5b82525081516020918201928201910280838360005b8381101561049657818101518382015260200161047e565b5050505090500160405250505090506060815167ffffffffffffffff811180156104bf57600080fd5b506040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50905060005b825181101561063857836001600160a01b03166305075d6e84838151811061051357fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561056157600080fd5b505afa158015610575573d6000803e3d6000fd5b505050506040513d602081101561058b57600080fd5b50516105b057600082828151811061059f57fe5b602002602001018181525050610630565b6105b8610886565b6001600160a01b03168382815181106105cd57fe5b60200260200101516001600160a01b03161461060c57610600878483815181106105f357fe5b60200260200101516107dc565b82828151811061059f57fe5b866001600160a01b03163182828151811061062357fe5b6020026020010181815250505b6001016104ef565b50909350915050915091565b606080825184510267ffffffffffffffff8111801561066257600080fd5b5060405190808252806020026020018201604052801561068c578160200160208202803683370190505b50905060005b84518110156107d25760005b84518110156107c957845182026106b3610886565b6001600160a01b03168683815181106106c857fe5b60200260200101516001600160a01b0316141561071c578683815181106106eb57fe5b60200260200101516001600160a01b031631848383018151811061070b57fe5b6020026020010181815250506107c0565b61074186838151811061072b57fe5b60200260200101516001600160a01b031661089e565b610782576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6107a587848151811061079157fe5b60200260200101518784815181106105f357fe5b84838301815181106107b357fe5b6020026020010181815250505b5060010161069e565b50600101610692565b5090505b92915050565b60006107f0826001600160a01b031661089e565b1561087e57816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561084b57600080fd5b505afa15801561085f573d6000803e3d6000fd5b505050506040513d602081101561087557600080fd5b505190506107d6565b5060006107d6565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906108d257508115155b94935050505056fe57616c6c657442616c616e636550726f766964657220646f6573206e6f7420616363657074207061796d656e7473a26469706673582212203401836623df3702356c7dfa30467ba792bc90ef3b29b84487d92ba3de60b1ea64736f6c63430006080033";