diff --git a/.gitmodules b/.gitmodules index f941ad1e..f890ab03 100644 --- a/.gitmodules +++ b/.gitmodules @@ -38,3 +38,6 @@ [submodule "contracts/velvet"] path = contracts/velvet url = https://github.com/Velvet-Capital/protocol-v2-public.git +[submodule "contracts/aave-v2"] + path = contracts/aave-v2 + url = https://github.com/aave/protocol-v2.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e323c84..59e733fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ +# 0.25.6 + +- Add Aave v2 event reader support + + # 0.25.5 - Handle HTTP 410 retryable, as returned by dRPC -- -# 0.25.4 - -- TODO # 0.25.4 diff --git a/Makefile b/Makefile index f6896526..91ec5dd5 100644 --- a/Makefile +++ b/Makefile @@ -73,6 +73,11 @@ aavev3: @mkdir -p eth_defi/abi/aave_v3 @find contracts/aave-v3-deploy/artifacts/@aave -iname "*.json" -not -iname "*.dbg.json" -exec cp {} eth_defi/abi/aave_v3 \; +aavev2: + @(cd contracts/aave-v2 && npm ci && npm run compile) > /dev/null + @mkdir -p eth_defi/abi/aave_v2 + @find contracts/aave-v2/artifacts/contracts -iname "*.json" -not -iname "*.dbg.json" -exec cp {} eth_defi/abi/aave_v2 \; + # Compile and copy Enzyme contract ABIs from their Github repository # Needs pnpm: curl -fsSL https://get.pnpm.io/install.sh | sh - # diff --git a/contracts/aave-v2 b/contracts/aave-v2 new file mode 160000 index 00000000..ce53c4a8 --- /dev/null +++ b/contracts/aave-v2 @@ -0,0 +1 @@ +Subproject commit ce53c4a8c8620125063168620eba0a8a92854eb8 diff --git a/docs/source/api/aave_v2/index.rst b/docs/source/api/aave_v2/index.rst new file mode 100644 index 00000000..b4e9447c --- /dev/null +++ b/docs/source/api/aave_v2/index.rst @@ -0,0 +1,15 @@ +Aave v2 API +----------- + +This is Python documentation for high-level `Aave lending protocol `_ APIs. + +Functionality includes: + +- Reading current and historical Aave data and metrics + +.. autosummary:: + :toctree: _autosummary_aave_v2 + :recursive: + + eth_defi.aave_v2.constants + eth_defi.aave_v2.events diff --git a/docs/source/api/index.rst b/docs/source/api/index.rst index 5c6e748f..16388a26 100644 --- a/docs/source/api/index.rst +++ b/docs/source/api/index.rst @@ -20,6 +20,7 @@ API documentation usdc/index uniswap_v2/index uniswap_v3/index + aave_v2/index aave_v3/index one_delta/index enzyme/index diff --git a/eth_defi/aave_v2/constants.py b/eth_defi/aave_v2/constants.py new file mode 100644 index 00000000..2ba9c7e5 --- /dev/null +++ b/eth_defi/aave_v2/constants.py @@ -0,0 +1,58 @@ +"""Aave v2 constants.""" + +from typing import NamedTuple + +from eth_defi.aave_v3.constants import ( # noqa: passthrough imports, don't remove + MAX_AMOUNT, + AaveVersion, +) + + +class AaveV2Network(NamedTuple): + # Network name + name: str + + # Aave v2 lending pool address + pool_address: str + + # Block number when the pool was created + pool_created_at_block: int + + +# https://docs.aave.com/developers/v/2.0/deployed-contracts/deployed-contracts +AAVE_V2_NETWORK_CHAINS: dict[int, str] = { + 1: "ethereum", + 137: "polygon", + 43114: "avalanche", +} + +AAVE_V2_NETWORKS: dict[str, AaveV2Network] = { + # Ethereum Mainnet + "ethereum": AaveV2Network( + name="Ethereum", + pool_address="0x7d2768de32b0b80b7a3454c06bdac94a69ddc7a9", + # https://etherscan.io/tx/0x7d77cc7523a491fa670bfefa0a386ab036b6511d6d9fa6c2cf5c07b349dc9d3a + pool_created_at_block=11362579, + ), + # Polygon Mainnet + "polygon": AaveV2Network( + name="Polygon", + pool_address="0x8dFf5E27EA6b7AC08EbFdf9eB090F32ee9a30fcf", + # https://polygonscan.com/tx/0xb5a63fed49e97a58135b012fa14d83e680a0f3cd3aefeb551228d6e3640dbec9 + pool_created_at_block=12687245, + ), + # Avalanche C-Chain + "avalanche": AaveV2Network( + name="Avalanche", + pool_address="0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C", + # https://snowtrace.io/tx/0x5db8b8c3026d4a433ca67cbc120540ab6f8897b3aff37e78ba014ac505d167bc?chainId=43114 + pool_created_at_block=4607005, + ), +} + + +def get_aave_v2_network_by_chain_id(chain_id: int) -> AaveV2Network: + if chain_id not in AAVE_V2_NETWORK_CHAINS: + raise ValueError(f"Unsupported chain id: {chain_id}") + network_slug = AAVE_V2_NETWORK_CHAINS[chain_id] + return AAVE_V2_NETWORKS[network_slug] diff --git a/eth_defi/aave_v2/events.py b/eth_defi/aave_v2/events.py new file mode 100644 index 00000000..d65e666f --- /dev/null +++ b/eth_defi/aave_v2/events.py @@ -0,0 +1,73 @@ +"""Aave v2 event reader. + +Efficiently read Aave v2 from a blockchain. + +Currently we are tracking these events: + +- ReserveDataUpdated +""" + +import logging +from typing import Callable + +from eth_defi.aave_v3.constants import AaveVersion +from eth_defi.aave_v3.events import _fetch_aave_events_to_csv +from eth_defi.event_reader.reorganisation_monitor import ReorganisationMonitor +from eth_defi.event_reader.state import ScanState + +logger = logging.getLogger(__name__) + + +def aave_v2_fetch_events_to_csv( + json_rpc_url: str, + state: ScanState, + aave_network_name: str, + start_block: int, + end_block: int, + output_folder: str = "/tmp", + max_workers: int = 16, + log_info: Callable = print, + reorg_monitor: ReorganisationMonitor | None = None, +): + """Fetch all tracked Aave v2 events to CSV files for notebook analysis. + + Creates a CSV file with the event data: + + - `/tmp/aave-v2-{aave_network_name.lower()}-reservedataupdated.csv` + + A progress bar and estimation on the completion is rendered for console / Jupyter notebook using `tqdm`. + + The scan be resumed using `state` storage to retrieve the last scanned block number from the previous round. + However, the mechanism here is no perfect and only good for notebook use - for advanced + persistent usage like database backed scans, please write your own scan loop using proper transaction management. + + .. note :: + + Any Ethereum address is lowercased in the resulting dataset and is not checksummed. + + :param json_rpc_url: JSON-RPC URL + :param start_block: First block to process (inclusive), default is block xxx (when Aave v2 xxx was created on mainnet) + :param end_block: Last block to process (inclusive), default is block xxx (1000 block after default start block) + :param aave_network_name: Network name, e.g. 'Polygon' + :param state: Store the current scan state, so we can resume + :param output_folder: Folder to contain output CSV files, default is /tmp folder + :param max_workers: + How many threads to allocate for JSON-RPC IO. + You can increase your EVM node output a bit by making a lot of parallel requests, + until you exhaust your nodes IO capacity. Experiement with different values + and see how your node performs. + :param log_info: Which function to use to output info messages about the progress + """ + + return _fetch_aave_events_to_csv( + json_rpc_url=json_rpc_url, + state=state, + aave_network_name=aave_network_name, + start_block=start_block, + end_block=end_block, + output_folder=output_folder, + max_workers=max_workers, + log_info=log_info, + reorg_monitor=reorg_monitor, + aave_version=AaveVersion.V2, + ) diff --git a/eth_defi/aave_v3/constants.py b/eth_defi/aave_v3/constants.py index 0b562ee5..512ab61f 100644 --- a/eth_defi/aave_v3/constants.py +++ b/eth_defi/aave_v3/constants.py @@ -1,4 +1,5 @@ """Aave v3 constants.""" + import enum import json import os @@ -218,6 +219,11 @@ class AaveV3InterestRateMode(enum.IntEnum): VARIABLE = 2 +class AaveVersion(enum.Enum): + V2 = "v2" + V3 = "v3" + + # Max amount user can withdraw or repay # This is type(uint256).max in solidity # https://github.com/aave/aave-v3-core/blob/e0bfed13240adeb7f05cb6cbe5e7ce78657f0621/contracts/protocol/libraries/logic/SupplyLogic.sol#L123 diff --git a/eth_defi/aave_v3/events.py b/eth_defi/aave_v3/events.py index 6a40892d..2ca1fa66 100644 --- a/eth_defi/aave_v3/events.py +++ b/eth_defi/aave_v3/events.py @@ -6,35 +6,38 @@ - ReserveDataUpdated """ + import csv import datetime import logging from pathlib import Path +from typing import Callable from requests.adapters import HTTPAdapter from tqdm.auto import tqdm from web3 import Web3 +from eth_defi.aave_v2.constants import AAVE_V2_NETWORKS from eth_defi.aave_v3.constants import ( AAVE_V3_NETWORKS, + AaveVersion, aave_v3_get_token_name_by_deposit_address, ) from eth_defi.abi import get_contract from eth_defi.event_reader.conversion import ( convert_int256_bytes_to_int, + convert_jsonrpc_value_to_int, convert_uint256_string_to_address, decode_data, - convert_jsonrpc_value_to_int, ) from eth_defi.event_reader.logresult import LogContext from eth_defi.event_reader.reader import LogResult, read_events_concurrent +from eth_defi.event_reader.reorganisation_monitor import ReorganisationMonitor from eth_defi.event_reader.state import ScanState from eth_defi.event_reader.web3factory import TunedWeb3Factory from eth_defi.event_reader.web3worker import create_thread_pool_executor from eth_defi.token import TokenDetails, fetch_erc20_details -# from eth_defi.token import TokenDetails, fetch_erc20_details - logger = logging.getLogger(__name__) @@ -96,8 +99,19 @@ def _decode_base(log: LogResult) -> dict: } -def decode_reserve_data_updated(aave_network_name: str, log: LogResult) -> dict: - """Process a ReserveDataUpdated event. The event signature is: +def decode_reserve_data_updated( + aave_network_name: str, + log: LogResult, + aave_version: AaveVersion, +) -> dict: + """Process a ReserveDataUpdated event. + + .. note :: + + Both Aave v2 and v3 have this same event, so we use the lending pool smart + contract to filter out the correct events. + + The event signature is: .. code-block:: @@ -112,7 +126,11 @@ def decode_reserve_data_updated(aave_network_name: str, log: LogResult) -> dict: ); """ # Ensure the event comes from the correct smart contract - if log["address"].lower() != AAVE_V3_NETWORKS[aave_network_name.lower()].pool_address.lower(): + if aave_version == AaveVersion.V2: + pool_address = AAVE_V2_NETWORKS[aave_network_name.lower()].pool_address.lower() + else: + pool_address = AAVE_V3_NETWORKS[aave_network_name.lower()].pool_address.lower() + if log["address"].lower() != pool_address: return None # Do additional lookup for the token data @@ -151,7 +169,10 @@ def decode_reserve_data_updated(aave_network_name: str, log: LogResult) -> dict: ) # Detect token name from reserve address (None if not found) - result["token"] = aave_v3_get_token_name_by_deposit_address(deposit_address) + if aave_version == AaveVersion.V3: + result["token"] = aave_v3_get_token_name_by_deposit_address(deposit_address) + else: + result["token"] = None logger.debug(f'EVENT: block={log["blockNumber"]} tx={log["transactionHash"]} token={result["token"]} reserve={deposit_address} liquidity_rate={liquidity_rate} stable_borrow_rate={stable_borrow_rate} variable_borrow_rate={variable_borrow_rate} liquidity_index={liquidity_index} variable_borrow_index={variable_borrow_rate}') @@ -166,7 +187,8 @@ def aave_v3_fetch_events_to_csv( end_block: int, output_folder: str = "/tmp", max_workers: int = 16, - log_info=print, + log_info: Callable = print, + reorg_monitor: ReorganisationMonitor | None = None, ): """Fetch all tracked Aave v3 events to CSV files for notebook analysis. @@ -197,6 +219,34 @@ def aave_v3_fetch_events_to_csv( and see how your node performs. :param log_info: Which function to use to output info messages about the progress """ + + return _fetch_aave_events_to_csv( + json_rpc_url=json_rpc_url, + state=state, + aave_network_name=aave_network_name, + start_block=start_block, + end_block=end_block, + output_folder=output_folder, + max_workers=max_workers, + log_info=log_info, + reorg_monitor=reorg_monitor, + aave_version=AaveVersion.V3, + ) + + +def _fetch_aave_events_to_csv( + json_rpc_url: str, + state: ScanState, + aave_network_name: str, + start_block: int, + end_block: int, + output_folder: str = "/tmp", + max_workers: int = 16, + log_info=print, + reorg_monitor: ReorganisationMonitor | None = None, + aave_version: AaveVersion = AaveVersion.V3, +): + """Fetch all tracked Aave (v2 or v3) events to CSV file.""" token_cache = TokenCache() http_adapter = HTTPAdapter(pool_connections=max_workers, pool_maxsize=max_workers) web3_factory = TunedWeb3Factory(json_rpc_url, http_adapter) @@ -222,7 +272,7 @@ def aave_v3_fetch_events_to_csv( buffers = {} for event_name, mapping in event_mapping.items(): - file_path = f"{output_folder}/aave-v3-{aave_network_name.lower()}-{event_name.lower()}.csv" + file_path = f"{output_folder}/aave-{aave_version.value}-{aave_network_name.lower()}-{event_name.lower()}.csv" exists_already = Path(file_path).exists() file_handler = open(file_path, "a") csv_writer = csv.DictWriter(file_handler, fieldnames=mapping["field_names"]) @@ -288,13 +338,15 @@ def update_progress( notify=update_progress, chunk_size=100, context=token_cache, + reorg_mon=reorg_monitor, + extract_timestamps=None, ): try: # write to correct buffer event_name = log_result["event"].event_name buffer = buffers[event_name]["buffer"] decode_function = event_mapping[event_name]["decode_function"] - decoded_result = decode_function(aave_network_name, log_result) + decoded_result = decode_function(aave_network_name, log_result, aave_version) # Note: decoded_result is None if the event is e.g. from Aave v2 contract if decoded_result: logger.debug(f"Adding event to buffer: {event_name}") diff --git a/eth_defi/abi/aave_v2/AToken.json b/eth_defi/abi/aave_v2/AToken.json new file mode 100644 index 00000000..ec4c2e6b --- /dev/null +++ b/eth_defi/abi/aave_v2/AToken.json @@ -0,0 +1,833 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AToken", + "sourceName": "contracts/protocol/tokenization/AToken.sol", + "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" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "BalanceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "ATOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EIP712_REVISION", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESERVE_TREASURY_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "receiverOfUnderlying", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "handleRepayment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mintToTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferOnLiquidation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferUnderlyingTo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205fc0cbb7fea112ac9dc0f7887ccd7d3edbd4056fa3cee0c144c45e948165555964736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205fc0cbb7fea112ac9dc0f7887ccd7d3edbd4056fa3cee0c144c45e948165555964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ATokensAndRatesHelper.json b/eth_defi/abi/aave_v2/ATokensAndRatesHelper.json new file mode 100644 index 00000000..b02fd5f5 --- /dev/null +++ b/eth_defi/abi/aave_v2/ATokensAndRatesHelper.json @@ -0,0 +1,178 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ATokensAndRatesHelper", + "sourceName": "contracts/deployments/ATokensAndRatesHelper.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "_pool", + "type": "address" + }, + { + "internalType": "address", + "name": "_addressesProvider", + "type": "address" + }, + { + "internalType": "address", + "name": "_poolConfigurator", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "deployedContracts", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseLTV", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "stableBorrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + } + ], + "internalType": "struct ATokensAndRatesHelper.ConfigureReserveInput[]", + "name": "inputParams", + "type": "tuple[]" + } + ], + "name": "configureReserves", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256[6]", + "name": "rates", + "type": "uint256[6]" + } + ], + "internalType": "struct ATokensAndRatesHelper.InitDeploymentInput[]", + "name": "inputParams", + "type": "tuple[]" + } + ], + "name": "initDeployment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161435338038061435383398101604081905261002f916100c9565b60006100396100c5565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039485166001600160a01b03199182161790915560028054938516938216939093179092556003805491909316911617905561012d565b3390565b6000806000606084860312156100dd578283fd5b83516100e881610115565b60208501519093506100f981610115565b604085015190925061010a81610115565b809150509250925092565b6001600160a01b038116811461012a57600080fd5b50565b6142178061013c6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063715018a61461005c5780638da5cb5b146100665780639dd8aad514610084578063f2fde38b14610097578063fc123602146100aa575b600080fd5b6100646100bd565b005b61006e610145565b60405161007b9190610786565b60405180910390f35b6100646100923660046106fe565b610154565b6100646100a53660046106d0565b6103da565b6100646100b836600461073e565b610490565b6100c5610666565b6000546001600160a01b039081169116146100fb5760405162461bcd60e51b81526004016100f29061088f565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b61015c610666565b6000546001600160a01b039081169116146101895760405162461bcd60e51b81526004016100f29061088f565b6003546001600160a01b031660005b828110156103d457816001600160a01b0316637c4e560b8585848181106101bb57fe5b6101d192602060e09092020190810191506106d0565b8686858181106101dd57fe5b905060e00201602001358787868181106101f357fe5b905060e002016040013588888781811061020957fe5b905060e00201606001356040518563ffffffff1660e01b815260040161023294939291906107e8565b600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b5050505083838281811061027057fe5b905060e0020160c00160208101906102889190610766565b1561033257816001600160a01b031663eede87c18585848181106102a857fe5b6102be92602060e09092020190810191506106d0565b8686858181106102ca57fe5b905060e0020160a00160208101906102e29190610766565b6040518363ffffffff1660e01b81526004016102ff9291906107b4565b600060405180830381600087803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050505b816001600160a01b0316634b4e675385858481811061034d57fe5b61036392602060e09092020190810191506106d0565b86868581811061036f57fe5b905060e00201608001356040518363ffffffff1660e01b81526004016103969291906107cf565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b5050600190920191506101989050565b50505050565b6103e2610666565b6000546001600160a01b0390811691161461040f5760405162461bcd60e51b81526004016100f29061088f565b6001600160a01b0381166104355760405162461bcd60e51b81526004016100f290610849565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610498610666565b6000546001600160a01b039081169116146104c55760405162461bcd60e51b81526004016100f29061088f565b60005b81811015610661577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea46040516104fd9061066a565b604051809103906000f080158015610519573d6000803e3d6000fd5b506002546001600160a01b031685858581811061053257fe5b905060e0020160200160006006811061054757fe5b602002013586868681811061055857fe5b905060e0020160200160016006811061056d57fe5b602002013587878781811061057e57fe5b905060e0020160200160026006811061059357fe5b60200201358888888181106105a457fe5b905060e002016020016003600681106105b957fe5b60200201358989898181106105ca57fe5b905060e002016020016004600681106105df57fe5b60200201358a8a8a8181106105f057fe5b905060e0020160200160056006811061060557fe5b602002013560405161061690610678565b610626979695949392919061080e565b604051809103906000f080158015610642573d6000803e3d6000fd5b5060405161065192919061079a565b60405180910390a16001016104c8565b505050565b3390565b61296280620008c583390190565b610fbb806200322783390190565b60008083601f840112610697578182fd5b50813567ffffffffffffffff8111156106ae578182fd5b60208301915083602060e0830285010111156106c957600080fd5b9250929050565b6000602082840312156106e1578081fd5b81356001600160a01b03811681146106f7578182fd5b9392505050565b60008060208385031215610710578081fd5b823567ffffffffffffffff811115610726578182fd5b61073285828601610686565b90969095509350505050565b60008060208385031215610750578182fd5b823567ffffffffffffffff811115610726578283fd5b600060208284031215610777578081fd5b813580151581146106f7578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fe6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205fc0cbb7fea112ac9dc0f7887ccd7d3edbd4056fa3cee0c144c45e948165555964736f6c634300060c003361018060405234801561001157600080fd5b50604051610fbb380380610fbb833981810160405260e081101561003457600080fd5b5080516020808301516040840151606085015160808087015160a088015160c0909801519185905295969395929491939161008e90879061007c906108526100c3821b17901c565b6100d360201b6108621790919060201c565b60a05260609690961b6001600160601b03191660c05260e09390935261010091909152610120526101405250610160526101b9565b6b033b2e3c9fd0803ce800000090565b600061011b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061012260201b60201c565b9392505050565b600081848411156101b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561017657818101518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60805160a05160c05160601c60e05161010051610120516101405161016051610d4d61026e6000398061059752806108305250806101dd52806105c752806106b15250806102df528061032c52806105f852508061030352806103715280610643528061071b5250806103505280610622528061074152806107e8525080610400528061080c52508061020152806105315250806105055280610555528061067d52806106f552806107c45250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033a2646970667358221220fd227c15a35d93688cc617c7a8d27ea0914fc4084e8276883f52ffb6b3cb1f1a64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063715018a61461005c5780638da5cb5b146100665780639dd8aad514610084578063f2fde38b14610097578063fc123602146100aa575b600080fd5b6100646100bd565b005b61006e610145565b60405161007b9190610786565b60405180910390f35b6100646100923660046106fe565b610154565b6100646100a53660046106d0565b6103da565b6100646100b836600461073e565b610490565b6100c5610666565b6000546001600160a01b039081169116146100fb5760405162461bcd60e51b81526004016100f29061088f565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b61015c610666565b6000546001600160a01b039081169116146101895760405162461bcd60e51b81526004016100f29061088f565b6003546001600160a01b031660005b828110156103d457816001600160a01b0316637c4e560b8585848181106101bb57fe5b6101d192602060e09092020190810191506106d0565b8686858181106101dd57fe5b905060e00201602001358787868181106101f357fe5b905060e002016040013588888781811061020957fe5b905060e00201606001356040518563ffffffff1660e01b815260040161023294939291906107e8565b600060405180830381600087803b15801561024c57600080fd5b505af1158015610260573d6000803e3d6000fd5b5050505083838281811061027057fe5b905060e0020160c00160208101906102889190610766565b1561033257816001600160a01b031663eede87c18585848181106102a857fe5b6102be92602060e09092020190810191506106d0565b8686858181106102ca57fe5b905060e0020160a00160208101906102e29190610766565b6040518363ffffffff1660e01b81526004016102ff9291906107b4565b600060405180830381600087803b15801561031957600080fd5b505af115801561032d573d6000803e3d6000fd5b505050505b816001600160a01b0316634b4e675385858481811061034d57fe5b61036392602060e09092020190810191506106d0565b86868581811061036f57fe5b905060e00201608001356040518363ffffffff1660e01b81526004016103969291906107cf565b600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b5050600190920191506101989050565b50505050565b6103e2610666565b6000546001600160a01b0390811691161461040f5760405162461bcd60e51b81526004016100f29061088f565b6001600160a01b0381166104355760405162461bcd60e51b81526004016100f290610849565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610498610666565b6000546001600160a01b039081169116146104c55760405162461bcd60e51b81526004016100f29061088f565b60005b81811015610661577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea46040516104fd9061066a565b604051809103906000f080158015610519573d6000803e3d6000fd5b506002546001600160a01b031685858581811061053257fe5b905060e0020160200160006006811061054757fe5b602002013586868681811061055857fe5b905060e0020160200160016006811061056d57fe5b602002013587878781811061057e57fe5b905060e0020160200160026006811061059357fe5b60200201358888888181106105a457fe5b905060e002016020016003600681106105b957fe5b60200201358989898181106105ca57fe5b905060e002016020016004600681106105df57fe5b60200201358a8a8a8181106105f057fe5b905060e0020160200160056006811061060557fe5b602002013560405161061690610678565b610626979695949392919061080e565b604051809103906000f080158015610642573d6000803e3d6000fd5b5060405161065192919061079a565b60405180910390a16001016104c8565b505050565b3390565b61296280620008c583390190565b610fbb806200322783390190565b60008083601f840112610697578182fd5b50813567ffffffffffffffff8111156106ae578182fd5b60208301915083602060e0830285010111156106c957600080fd5b9250929050565b6000602082840312156106e1578081fd5b81356001600160a01b03811681146106f7578182fd5b9392505050565b60008060208385031215610710578081fd5b823567ffffffffffffffff811115610726578182fd5b61073285828601610686565b90969095509350505050565b60008060208385031215610750578182fd5b823567ffffffffffffffff811115610726578283fd5b600060208284031215610777578081fd5b813580151581146106f7578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6001600160a01b03979097168752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fe6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205fc0cbb7fea112ac9dc0f7887ccd7d3edbd4056fa3cee0c144c45e948165555964736f6c634300060c003361018060405234801561001157600080fd5b50604051610fbb380380610fbb833981810160405260e081101561003457600080fd5b5080516020808301516040840151606085015160808087015160a088015160c0909801519185905295969395929491939161008e90879061007c906108526100c3821b17901c565b6100d360201b6108621790919060201c565b60a05260609690961b6001600160601b03191660c05260e09390935261010091909152610120526101405250610160526101b9565b6b033b2e3c9fd0803ce800000090565b600061011b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061012260201b60201c565b9392505050565b600081848411156101b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561017657818101518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60805160a05160c05160601c60e05161010051610120516101405161016051610d4d61026e6000398061059752806108305250806101dd52806105c752806106b15250806102df528061032c52806105f852508061030352806103715280610643528061071b5250806103505280610622528061074152806107e8525080610400528061080c52508061020152806105315250806105055280610555528061067d52806106f552806107c45250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033a2646970667358221220fd227c15a35d93688cc617c7a8d27ea0914fc4084e8276883f52ffb6b3cb1f1a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/AaveOracle.json b/eth_defi/abi/aave_v2/AaveOracle.json new file mode 100644 index 00000000..5dde0073 --- /dev/null +++ b/eth_defi/abi/aave_v2/AaveOracle.json @@ -0,0 +1,272 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AaveOracle", + "sourceName": "contracts/misc/AaveOracle.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "sources", + "type": "address[]" + }, + { + "internalType": "address", + "name": "fallbackOracle", + "type": "address" + }, + { + "internalType": "address", + "name": "baseCurrency", + "type": "address" + }, + { + "internalType": "uint256", + "name": "baseCurrencyUnit", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "source", + "type": "address" + } + ], + "name": "AssetSourceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "baseCurrency", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseCurrencyUnit", + "type": "uint256" + } + ], + "name": "BaseCurrencySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fallbackOracle", + "type": "address" + } + ], + "name": "FallbackOracleUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "BASE_CURRENCY", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BASE_CURRENCY_UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getAssetPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + } + ], + "name": "getAssetsPrices", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFallbackOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getSourceOfAsset", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "sources", + "type": "address[]" + } + ], + "name": "setAssetSources", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fallbackOracle", + "type": "address" + } + ], + "name": "setFallbackOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162000f2238038062000f22833981810160405260a08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b5050505090500160405260200180516040519392919084640100000000821115620000e557600080fd5b908301906020820185811115620000fb57600080fd5b82518660208202830111640100000000821117156200011957600080fd5b82525081516020918201928201910280838360005b83811015620001485781810151838201526020016200012e565b5050505091909101604090815260208301519083015160609093015190945091925060009050620001786200023a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001cd836200023e565b620001d9858562000288565b6001600160601b0319606083901b1660805260a08190526040805182815290516001600160a01b038416917fe27c4c1372396a3d15a9922f74f9dfc7c72b1ad6d63868470787249c356454c1919081900360200190a25050505050620003d4565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114620002df576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015620003cf57818181518110620002f957fe5b6020026020010151600160008584815181106200031257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106200036b57fe5b60200260200101516001600160a01b03168382815181106200038957fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101620002e2565b505050565b60805160601c60a051610b1d6200040560003980610437528061063d52508061061352806107f45250610b1d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806392bf2be01161007157806392bf2be0146101245780639d23d9f21461014a578063abfd53101461020a578063b3596f07146102cc578063e19f4700146102f2578063f2fde38b146102fa576100a9565b8063170aee73146100ae5780636210308c146100d6578063715018a6146100fa5780638c89b64f146101025780638da5cb5b1461011c575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b0316610320565b005b6100de610384565b604080516001600160a01b039092168252519081900360200190f35b6100d4610393565b61010a610435565b60408051918252519081900360200190f35b6100de610459565b6100de6004803603602081101561013a57600080fd5b50356001600160a01b0316610468565b6101ba6004803603602081101561016057600080fd5b81019060208101813564010000000081111561017b57600080fd5b82018360208201111561018d57600080fd5b803590602001918460208302840111640100000000831117156101af57600080fd5b509092509050610489565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101f65781810151838201526020016101de565b505050509050019250505060405180910390f35b6100d46004803603604081101561022057600080fd5b81019060208101813564010000000081111561023b57600080fd5b82018360208201111561024d57600080fd5b8035906020019184602083028401116401000000008311171561026f57600080fd5b91939092909160208101903564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460208302840111640100000000831117156102c157600080fd5b509092509050610526565b61010a600480360360208110156102e257600080fd5b50356001600160a01b03166105f1565b6100de6107f2565b6100d46004803603602081101561031057600080fd5b50356001600160a01b0316610816565b61032861090e565b6000546001600160a01b03908116911614610378576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b61038181610912565b50565b6002546001600160a01b031690565b61039b61090e565b6000546001600160a01b039081169116146103eb576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff811180156104a357600080fd5b506040519080825280602002602001820160405280156104cd578160200160208202803683370190505b50905060005b8381101561051e576104ff8585838181106104ea57fe5b905060200201356001600160a01b03166105f1565b82828151811061050b57fe5b60209081029190910101526001016104d3565b509392505050565b61052e61090e565b6000546001600160a01b0390811691161461057e576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b6105eb8484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080880282810182019093528782529093508792508691829185019084908082843760009201919091525061095c92505050565b50505050565b6001600160a01b038082166000818152600160205260408120549092908116917f00000000000000000000000000000000000000000000000000000000000000009091161415610664577f0000000000000000000000000000000000000000000000000000000000000000915050610484565b6001600160a01b0381166106f4576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156106bf57600080fd5b505afa1580156106d3573d6000803e3d6000fd5b505050506040513d60208110156106e957600080fd5b505191506104849050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561072f57600080fd5b505afa158015610743573d6000803e3d6000fd5b505050506040513d602081101561075957600080fd5b50519050600081131561076f5791506104849050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d60208110156107e657600080fd5b50519250610484915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61081e61090e565b6000546001600160a01b0390811691161461086e576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b6001600160a01b0381166108b35760405162461bcd60e51b8152600401808060200182810382526026815260200180610aa26026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b80518251146109b2576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a9c578181815181106109ca57fe5b6020026020010151600160008584815181106109e257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110610a3a57fe5b60200260200101516001600160a01b0316838281518110610a5757fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a36001016109b5565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220eb57f0f25d819c5e0f2a38b68292d8ef783d86dd75dea94e4aca3442859c7f0564736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806392bf2be01161007157806392bf2be0146101245780639d23d9f21461014a578063abfd53101461020a578063b3596f07146102cc578063e19f4700146102f2578063f2fde38b146102fa576100a9565b8063170aee73146100ae5780636210308c146100d6578063715018a6146100fa5780638c89b64f146101025780638da5cb5b1461011c575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b0316610320565b005b6100de610384565b604080516001600160a01b039092168252519081900360200190f35b6100d4610393565b61010a610435565b60408051918252519081900360200190f35b6100de610459565b6100de6004803603602081101561013a57600080fd5b50356001600160a01b0316610468565b6101ba6004803603602081101561016057600080fd5b81019060208101813564010000000081111561017b57600080fd5b82018360208201111561018d57600080fd5b803590602001918460208302840111640100000000831117156101af57600080fd5b509092509050610489565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101f65781810151838201526020016101de565b505050509050019250505060405180910390f35b6100d46004803603604081101561022057600080fd5b81019060208101813564010000000081111561023b57600080fd5b82018360208201111561024d57600080fd5b8035906020019184602083028401116401000000008311171561026f57600080fd5b91939092909160208101903564010000000081111561028d57600080fd5b82018360208201111561029f57600080fd5b803590602001918460208302840111640100000000831117156102c157600080fd5b509092509050610526565b61010a600480360360208110156102e257600080fd5b50356001600160a01b03166105f1565b6100de6107f2565b6100d46004803603602081101561031057600080fd5b50356001600160a01b0316610816565b61032861090e565b6000546001600160a01b03908116911614610378576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b61038181610912565b50565b6002546001600160a01b031690565b61039b61090e565b6000546001600160a01b039081169116146103eb576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff811180156104a357600080fd5b506040519080825280602002602001820160405280156104cd578160200160208202803683370190505b50905060005b8381101561051e576104ff8585838181106104ea57fe5b905060200201356001600160a01b03166105f1565b82828151811061050b57fe5b60209081029190910101526001016104d3565b509392505050565b61052e61090e565b6000546001600160a01b0390811691161461057e576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b6105eb8484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080880282810182019093528782529093508792508691829185019084908082843760009201919091525061095c92505050565b50505050565b6001600160a01b038082166000818152600160205260408120549092908116917f00000000000000000000000000000000000000000000000000000000000000009091161415610664577f0000000000000000000000000000000000000000000000000000000000000000915050610484565b6001600160a01b0381166106f4576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156106bf57600080fd5b505afa1580156106d3573d6000803e3d6000fd5b505050506040513d60208110156106e957600080fd5b505191506104849050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561072f57600080fd5b505afa158015610743573d6000803e3d6000fd5b505050506040513d602081101561075957600080fd5b50519050600081131561076f5791506104849050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d60208110156107e657600080fd5b50519250610484915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61081e61090e565b6000546001600160a01b0390811691161461086e576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac8833981519152604482015290519081900360640190fd5b6001600160a01b0381166108b35760405162461bcd60e51b8152600401808060200182810382526026815260200180610aa26026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b80518251146109b2576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a9c578181815181106109ca57fe5b6020026020010151600160008584815181106109e257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110610a3a57fe5b60200260200101516001600160a01b0316838281518110610a5757fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a36001016109b5565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220eb57f0f25d819c5e0f2a38b68292d8ef783d86dd75dea94e4aca3442859c7f0564736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/AaveProtocolDataProvider.json b/eth_defi/abi/aave_v2/AaveProtocolDataProvider.json new file mode 100644 index 00000000..1f25eaf6 --- /dev/null +++ b/eth_defi/abi/aave_v2/AaveProtocolDataProvider.json @@ -0,0 +1,306 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AaveProtocolDataProvider", + "sourceName": "contracts/misc/AaveProtocolDataProvider.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllATokens", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "internalType": "struct AaveProtocolDataProvider.TokenData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllReservesTokens", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "internalType": "struct AaveProtocolDataProvider.TokenData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveConfigurationData", + "outputs": [ + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ltv", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveData", + "outputs": [ + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidityIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveTokensAddresses", + "outputs": [ + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReserveData", + "outputs": [ + { + "internalType": "uint256", + "name": "currentATokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256" + }, + { + "internalType": "uint40", + "name": "stableRateLastUpdated", + "type": "uint40" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b50604051611be3380380611be383398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c611b316100b26000398061015b528061019552806102ac52806107a75280610b2b5280610c7b5280610ff952806111295250611b316000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80633e1501411161005b5780633e150141146100f1578063b316ff891461011a578063d2493b6c1461012f578063f561ae41146101515761007d565b80630542975c1461008257806328dd2d01146100a057806335ea6a75146100c8575b600080fd5b61008a610159565b60405161009791906118e3565b60405180910390f35b6100b36100ae3660046115f5565b61017d565b60405161009799989796959493929190611a44565b6100db6100d63660046115b6565b61078e565b6040516100979a999897969594939291906119f8565b6101046100ff3660046115b6565b610b12565b6040516100979a999897969594939291906119a9565b610122610c75565b604051610097919061191a565b61014261013d3660046115b6565b610fea565b604051610097939291906118f7565b610122611123565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060008060008060006101936114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022491906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161024f91906118e3565b6101806040518083038186803b15801561026857600080fd5b505afa15801561027c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a0919061177f565b90506102aa61151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b91906115d9565b6001600160a01b0316634417a5838d6040518263ffffffff1660e01b815260040161036691906118e3565b60206040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190611764565b60e08301516040516370a0823160e01b81529192506001600160a01b0316906370a08231906103e9908f906004016118e3565b60206040518083038186803b15801561040157600080fd5b505afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610439919061187a565b6101208301516040516370a0823160e01b8152919c506001600160a01b0316906370a082319061046d908f906004016118e3565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd919061187a565b6101008301516040516370a0823160e01b8152919a506001600160a01b0316906370a08231906104f1908f906004016118e3565b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610541919061187a565b61010083015160405163631a6fd560e11b8152919b506001600160a01b03169063c634dfaa90610575908f906004016118e3565b60206040518083038186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c5919061187a565b610120830151604051630ed1279f60e11b81529199506001600160a01b031690631da24f3e906105f9908f906004016118e3565b60206040518083038186803b15801561061157600080fd5b505afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610649919061187a565b965081606001516001600160801b031694508161010001516001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040161068c91906118e3565b60206040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc919061187a565b610100830151604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610710908f906004016118e3565b60206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107609190611892565b935061077d82610160015160ff16826113ea90919063ffffffff16565b925050509295985092959850929598565b6000806000806000806000806000806107a56114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083691906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161086191906118e3565b6101806040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b2919061177f565b60e08101516040516370a0823160e01b81529192506001600160a01b038e16916370a08231916108e4916004016118e3565b60206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610934919061187a565b8161010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa919061187a565b8261012001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a20919061187a565b836060015184608001518560a001518661010001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa5919061187a565b876020015188604001518960c00151866001600160801b03169650856001600160801b03169550846001600160801b03169450826001600160801b03169250816001600160801b031691509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600080600080600080600080600080610b2961151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba91906115d9565b6001600160a01b031663c44b11f78d6040518263ffffffff1660e01b8152600401610be591906118e3565b60206040518083038186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611764565b9050610c408161144c565b909e50929c50909a5098509650610c5681611477565b9d9f9c9e509a9c999b989a8d15159a9099909850919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a91906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d83919081019061162d565b90506060815167ffffffffffffffff81118015610d9f57600080fd5b50604051908082528060200260200182016040528015610dd957816020015b610dc6611531565b815260200190600190039081610dbe5790505b50905060005b8251811015610fe257739f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b0316838281518110610e1257fe5b60200260200101516001600160a01b03161415610e915760405180604001604052806040518060400160405280600381526020016226a5a960e91b8152508152602001848381518110610e6157fe5b60200260200101516001600160a01b0316815250828281518110610e8157fe5b6020026020010181905250610fda565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110610ebb57fe5b60200260200101516001600160a01b03161415610f0a5760405180604001604052806040518060400160405280600381526020016208aa8960eb1b8152508152602001848381518110610e6157fe5b6040518060400160405280848381518110610f2157fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9d91908101906116d8565b8152602001848381518110610fae57fe5b60200260200101516001600160a01b0316815250828281518110610fce57fe5b60200260200101819052505b600101610ddf565b509250505090565b6000806000610ff76114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108891906115d9565b6001600160a01b03166335ea6a75866040518263ffffffff1660e01b81526004016110b391906118e3565b6101806040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611104919061177f565b60e0810151610100820151610120909201519097919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b891906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611231919081019061162d565b90506060815167ffffffffffffffff8111801561124d57600080fd5b5060405190808252806020026020018201604052801561128757816020015b611274611531565b81526020019060019003908161126c5790505b50905060005b8251811015610fe25761129e6114b3565b846001600160a01b03166335ea6a758584815181106112b957fe5b60200260200101516040518263ffffffff1660e01b81526004016112dd91906118e3565b6101806040518083038186803b1580156112f657600080fd5b505afa15801561130a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132e919061177f565b905060405180604001604052808260e001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b491908101906116d8565b81526020018260e001516001600160a01b03168152508383815181106113d657fe5b60209081029190910101525060010161128d565b60006080821060405180604001604052806002815260200161373760f01b815250906114325760405162461bcd60e51b81526004016114299190611996565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518061018001604052806114c761151e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b60408051808201909152606081526000602082015290565b805161144681611ae3565b600060208284031215611565578081fd5b61156f6020611a8c565b9151825250919050565b80516001600160801b038116811461144657600080fd5b805164ffffffffff8116811461144657600080fd5b805160ff8116811461144657600080fd5b6000602082840312156115c7578081fd5b81356115d281611ae3565b9392505050565b6000602082840312156115ea578081fd5b81516115d281611ae3565b60008060408385031215611607578081fd5b823561161281611ae3565b9150602083013561162281611ae3565b809150509250929050565b6000602080838503121561163f578182fd5b825167ffffffffffffffff80821115611656578384fd5b818501915085601f830112611669578384fd5b815181811115611677578485fd5b8381029150611687848301611a8c565b8181528481019084860184860187018a10156116a1578788fd5b8795505b838610156116cb576116b78a82611549565b8352600195909501949186019186016116a5565b5098975050505050505050565b6000602082840312156116e9578081fd5b815167ffffffffffffffff80821115611700578283fd5b818401915084601f830112611713578283fd5b815181811115611721578384fd5b611734601f8201601f1916602001611a8c565b915080825285602082850101111561174a578384fd5b61175b816020840160208601611ab3565b50949350505050565b600060208284031215611775578081fd5b6115d28383611554565b6000610180808385031215611792578182fd5b61179b81611a8c565b90506117a78484611554565b81526117b68460208501611579565b60208201526117c88460408501611579565b60408201526117da8460608501611579565b60608201526117ec8460808501611579565b60808201526117fe8460a08501611579565b60a08201526118108460c08501611590565b60c08201526118228460e08501611549565b60e082015261010061183685828601611549565b9082015261012061184985858301611549565b9082015261014061185c85858301611549565b9082015261016061186f858583016115a5565b908201529392505050565b60006020828403121561188b578081fd5b5051919050565b6000602082840312156118a3578081fd5b815164ffffffffff811681146115d2578182fd5b600081518084526118cf816020860160208601611ab3565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561198857888303603f1901855281518051878552611962888601826118b7565b918901516001600160a01b0316948901949094529487019492509086019060010161193e565b509098975050505050505050565b6000602082526115d260208301846118b7565b998a5260208a0198909852604089019690965260608801949094526080870192909252151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015264ffffffffff1660e083015215156101008201526101200190565b60405181810167ffffffffffffffff81118282101715611aab57600080fd5b604052919050565b60005b83811015611ace578181015183820152602001611ab6565b83811115611add576000848401525b50505050565b6001600160a01b0381168114611af857600080fd5b5056fea2646970667358221220c95ed0a27140fa7ca2f039553c58c99ad2010367b851ad264734255afc5a005764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80633e1501411161005b5780633e150141146100f1578063b316ff891461011a578063d2493b6c1461012f578063f561ae41146101515761007d565b80630542975c1461008257806328dd2d01146100a057806335ea6a75146100c8575b600080fd5b61008a610159565b60405161009791906118e3565b60405180910390f35b6100b36100ae3660046115f5565b61017d565b60405161009799989796959493929190611a44565b6100db6100d63660046115b6565b61078e565b6040516100979a999897969594939291906119f8565b6101046100ff3660046115b6565b610b12565b6040516100979a999897969594939291906119a9565b610122610c75565b604051610097919061191a565b61014261013d3660046115b6565b610fea565b604051610097939291906118f7565b610122611123565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060008060008060006101936114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101ec57600080fd5b505afa158015610200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022491906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161024f91906118e3565b6101806040518083038186803b15801561026857600080fd5b505afa15801561027c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a0919061177f565b90506102aa61151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030357600080fd5b505afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b91906115d9565b6001600160a01b0316634417a5838d6040518263ffffffff1660e01b815260040161036691906118e3565b60206040518083038186803b15801561037e57600080fd5b505afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190611764565b60e08301516040516370a0823160e01b81529192506001600160a01b0316906370a08231906103e9908f906004016118e3565b60206040518083038186803b15801561040157600080fd5b505afa158015610415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610439919061187a565b6101208301516040516370a0823160e01b8152919c506001600160a01b0316906370a082319061046d908f906004016118e3565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd919061187a565b6101008301516040516370a0823160e01b8152919a506001600160a01b0316906370a08231906104f1908f906004016118e3565b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610541919061187a565b61010083015160405163631a6fd560e11b8152919b506001600160a01b03169063c634dfaa90610575908f906004016118e3565b60206040518083038186803b15801561058d57600080fd5b505afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c5919061187a565b610120830151604051630ed1279f60e11b81529199506001600160a01b031690631da24f3e906105f9908f906004016118e3565b60206040518083038186803b15801561061157600080fd5b505afa158015610625573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610649919061187a565b965081606001516001600160801b031694508161010001516001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040161068c91906118e3565b60206040518083038186803b1580156106a457600080fd5b505afa1580156106b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dc919061187a565b610100830151604051631e739ae360e21b81529197506001600160a01b0316906379ce6b8c90610710908f906004016118e3565b60206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107609190611892565b935061077d82610160015160ff16826113ea90919063ffffffff16565b925050509295985092959850929598565b6000806000806000806000806000806107a56114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083691906115d9565b6001600160a01b03166335ea6a758d6040518263ffffffff1660e01b815260040161086191906118e3565b6101806040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b2919061177f565b60e08101516040516370a0823160e01b81529192506001600160a01b038e16916370a08231916108e4916004016118e3565b60206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610934919061187a565b8161010001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa919061187a565b8261012001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a20919061187a565b836060015184608001518560a001518661010001516001600160a01b03166390f6fcf26040518163ffffffff1660e01b815260040160206040518083038186803b158015610a6d57600080fd5b505afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa5919061187a565b876020015188604001518960c00151866001600160801b03169650856001600160801b03169550846001600160801b03169450826001600160801b03169250816001600160801b031691509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600080600080600080600080600080610b2961151e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bba91906115d9565b6001600160a01b031663c44b11f78d6040518263ffffffff1660e01b8152600401610be591906118e3565b60206040518083038186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c359190611764565b9050610c408161144c565b909e50929c50909a5098509650610c5681611477565b9d9f9c9e509a9c999b989a8d15159a9099909850919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0a91906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d83919081019061162d565b90506060815167ffffffffffffffff81118015610d9f57600080fd5b50604051908082528060200260200182016040528015610dd957816020015b610dc6611531565b815260200190600190039081610dbe5790505b50905060005b8251811015610fe257739f8f72aa9304c8b593d555f12ef6589cc3a579a26001600160a01b0316838281518110610e1257fe5b60200260200101516001600160a01b03161415610e915760405180604001604052806040518060400160405280600381526020016226a5a960e91b8152508152602001848381518110610e6157fe5b60200260200101516001600160a01b0316815250828281518110610e8157fe5b6020026020010181905250610fda565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316838281518110610ebb57fe5b60200260200101516001600160a01b03161415610f0a5760405180604001604052806040518060400160405280600381526020016208aa8960eb1b8152508152602001848381518110610e6157fe5b6040518060400160405280848381518110610f2157fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6157600080fd5b505afa158015610f75573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9d91908101906116d8565b8152602001848381518110610fae57fe5b60200260200101516001600160a01b0316815250828281518110610fce57fe5b60200260200101819052505b600101610ddf565b509250505090565b6000806000610ff76114b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108891906115d9565b6001600160a01b03166335ea6a75866040518263ffffffff1660e01b81526004016110b391906118e3565b6101806040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611104919061177f565b60e0810151610100820151610120909201519097919650945092505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b891906115d9565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156111f557600080fd5b505afa158015611209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611231919081019061162d565b90506060815167ffffffffffffffff8111801561124d57600080fd5b5060405190808252806020026020018201604052801561128757816020015b611274611531565b81526020019060019003908161126c5790505b50905060005b8251811015610fe25761129e6114b3565b846001600160a01b03166335ea6a758584815181106112b957fe5b60200260200101516040518263ffffffff1660e01b81526004016112dd91906118e3565b6101806040518083038186803b1580156112f657600080fd5b505afa15801561130a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132e919061177f565b905060405180604001604052808260e001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113b491908101906116d8565b81526020018260e001516001600160a01b03168152508383815181106113d657fe5b60209081029190910101525060010161128d565b60006080821060405180604001604052806002815260200161373760f01b815250906114325760405162461bcd60e51b81526004016114299190611996565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518061018001604052806114c761151e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b60408051808201909152606081526000602082015290565b805161144681611ae3565b600060208284031215611565578081fd5b61156f6020611a8c565b9151825250919050565b80516001600160801b038116811461144657600080fd5b805164ffffffffff8116811461144657600080fd5b805160ff8116811461144657600080fd5b6000602082840312156115c7578081fd5b81356115d281611ae3565b9392505050565b6000602082840312156115ea578081fd5b81516115d281611ae3565b60008060408385031215611607578081fd5b823561161281611ae3565b9150602083013561162281611ae3565b809150509250929050565b6000602080838503121561163f578182fd5b825167ffffffffffffffff80821115611656578384fd5b818501915085601f830112611669578384fd5b815181811115611677578485fd5b8381029150611687848301611a8c565b8181528481019084860184860187018a10156116a1578788fd5b8795505b838610156116cb576116b78a82611549565b8352600195909501949186019186016116a5565b5098975050505050505050565b6000602082840312156116e9578081fd5b815167ffffffffffffffff80821115611700578283fd5b818401915084601f830112611713578283fd5b815181811115611721578384fd5b611734601f8201601f1916602001611a8c565b915080825285602082850101111561174a578384fd5b61175b816020840160208601611ab3565b50949350505050565b600060208284031215611775578081fd5b6115d28383611554565b6000610180808385031215611792578182fd5b61179b81611a8c565b90506117a78484611554565b81526117b68460208501611579565b60208201526117c88460408501611579565b60408201526117da8460608501611579565b60608201526117ec8460808501611579565b60808201526117fe8460a08501611579565b60a08201526118108460c08501611590565b60c08201526118228460e08501611549565b60e082015261010061183685828601611549565b9082015261012061184985858301611549565b9082015261014061185c85858301611549565b9082015261016061186f858583016115a5565b908201529392505050565b60006020828403121561188b578081fd5b5051919050565b6000602082840312156118a3578081fd5b815164ffffffffff811681146115d2578182fd5b600081518084526118cf816020860160208601611ab3565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561198857888303603f1901855281518051878552611962888601826118b7565b918901516001600160a01b0316948901949094529487019492509086019060010161193e565b509098975050505050505050565b6000602082526115d260208301846118b7565b998a5260208a0198909852604089019690965260608801949094526080870192909252151560a0860152151560c0850152151560e0840152151561010083015215156101208201526101400190565b998a5260208a019890985260408901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015264ffffffffff166101208201526101400190565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015264ffffffffff1660e083015215156101008201526101200190565b60405181810167ffffffffffffffff81118282101715611aab57600080fd5b604052919050565b60005b83811015611ace578181015183820152602001611ab6565b83811115611add576000848401525b50505050565b6001600160a01b0381168114611af857600080fd5b5056fea2646970667358221220c95ed0a27140fa7ca2f039553c58c99ad2010367b851ad264734255afc5a005764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Address.json b/eth_defi/abi/aave_v2/Address.json new file mode 100644 index 00000000..f24aa49f --- /dev/null +++ b/eth_defi/abi/aave_v2/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "contracts/dependencies/openzeppelin/contracts/Address.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d929e9255a31a618822d038a5070bc0f29f948496e43b9ca7e13af705eed6564736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093d929e9255a31a618822d038a5070bc0f29f948496e43b9ca7e13af705eed6564736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/AdminUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/AdminUpgradeabilityProxy.json new file mode 100644 index 00000000..acd4e357 --- /dev/null +++ b/eth_defi/abi/aave_v2/AdminUpgradeabilityProxy.json @@ -0,0 +1,138 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AdminUpgradeabilityProxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "changeAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60806040526040516109353803806109358339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6103a31760201c565b61020d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806108fa603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b61065a806102a06000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103df565b6101986101936103e7565b61040c565b565b6101a2610430565b6001600160a01b0316336001600160a01b031614156101c9576101c481610455565b6101d1565b6101d1610180565b50565b6101dc610430565b6001600160a01b0316336001600160a01b03161415610274576101fe83610455565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac6103e7565b90506102bb565b6102bb610180565b90565b6102c6610430565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105b46036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d610430565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c481610495565b6000610382610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac610430565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103d757508115155b949350505050565b6101986104b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561042b573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61045e81610519565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104c1610430565b6001600160a01b0316336001600160a01b031614156105115760405162461bcd60e51b81526004018080602001828103825260328152602001806105826032913960400191505060405180910390fd5b610198610198565b610522816103a3565b61055d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806105ea603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212209709a6ccc8d5f316f876990a689b0d68375820d751636132767f99a69915c6d864736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103df565b6101986101936103e7565b61040c565b565b6101a2610430565b6001600160a01b0316336001600160a01b031614156101c9576101c481610455565b6101d1565b6101d1610180565b50565b6101dc610430565b6001600160a01b0316336001600160a01b03161415610274576101fe83610455565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac6103e7565b90506102bb565b6102bb610180565b90565b6102c6610430565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105b46036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d610430565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c481610495565b6000610382610430565b6001600160a01b0316336001600160a01b031614156102b3576102ac610430565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103d757508115155b949350505050565b6101986104b9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561042b573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61045e81610519565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104c1610430565b6001600160a01b0316336001600160a01b031614156105115760405162461bcd60e51b81526004018080602001828103825260328152602001806105826032913960400191505060405180910390fd5b610198610198565b610522816103a3565b61055d5760405162461bcd60e51b815260040180806020018281038252603b8152602001806105ea603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212209709a6ccc8d5f316f876990a689b0d68375820d751636132767f99a69915c6d864736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/BaseAdminUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/BaseAdminUpgradeabilityProxy.json new file mode 100644 index 00000000..aedb7ff7 --- /dev/null +++ b/eth_defi/abi/aave_v2/BaseAdminUpgradeabilityProxy.json @@ -0,0 +1,117 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseAdminUpgradeabilityProxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "changeAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610652806100206000396000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220192c302e3ae6d263c9d93f41926adf158d0c2aec2a4da2a14ba8d7b28ac93bbc64736f6c634300060c0033", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b146101075780638f28397014610138578063f851a4401461016b575b610052610180565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661019a565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b5090925090506101d4565b34801561011357600080fd5b5061011c610281565b604080516001600160a01b039092168252519081900360200190f35b34801561014457600080fd5b506100526004803603602081101561015b57600080fd5b50356001600160a01b03166102be565b34801561017757600080fd5b5061011c610378565b6101886103a3565b610198610193610403565b610428565b565b6101a261044c565b6001600160a01b0316336001600160a01b031614156101c9576101c481610471565b6101d1565b6101d1610180565b50565b6101dc61044c565b6001600160a01b0316336001600160a01b03161415610274576101fe83610471565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461025b576040519150601f19603f3d011682016040523d82523d6000602084013e610260565b606091505b505090508061026e57600080fd5b5061027c565b61027c610180565b505050565b600061028b61044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac610403565b90506102bb565b6102bb610180565b90565b6102c661044c565b6001600160a01b0316336001600160a01b031614156101c9576001600160a01b0381166103245760405162461bcd60e51b81526004018080602001828103825260368152602001806105ac6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61034d61044c565b604080516001600160a01b03928316815291841660208301528051918290030190a16101c4816104b1565b600061038261044c565b6001600160a01b0316336001600160a01b031614156102b3576102ac61044c565b6103ab61044c565b6001600160a01b0316336001600160a01b031614156103fb5760405162461bcd60e51b815260040180806020018281038252603281526020018061057a6032913960400191505060405180910390fd5b610198610198565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610447573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61047a816104d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104de8161053d565b6105195760405162461bcd60e51b815260040180806020018281038252603b8152602001806105e2603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061057157508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220192c302e3ae6d263c9d93f41926adf158d0c2aec2a4da2a14ba8d7b28ac93bbc64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/BaseImmutableAdminUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/BaseImmutableAdminUpgradeabilityProxy.json new file mode 100644 index 00000000..1fa5cf90 --- /dev/null +++ b/eth_defi/abi/aave_v2/BaseImmutableAdminUpgradeabilityProxy.json @@ -0,0 +1,96 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseImmutableAdminUpgradeabilityProxy", + "sourceName": "contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516105ca3803806105ca8339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661054a6100806000398061016752806101b1528061027052806102bd52806102e65280610315525061054a6000f3fe60806040526004361061003f5760003560e01c80633659cfe6146100495780634f1ef2861461007c5780635c60da1b146100fc578063f851a4401461012d575b610047610142565b005b34801561005557600080fd5b506100476004803603602081101561006c57600080fd5b50356001600160a01b031661015c565b6100476004803603604081101561009257600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100bd57600080fd5b8201836020820111156100cf57600080fd5b803590602001918460018302840111640100000000831117156100f157600080fd5b5090925090506101a6565b34801561010857600080fd5b50610111610263565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116102b0565b61014a61030a565b61015a61015561037a565b61039f565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561019b57610196816103c3565b6101a3565b6101a3610142565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610256576101e0836103c3565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461023d576040519150601f19603f3d011682016040523d82523d6000602084013e610242565b606091505b505090508061025057600080fd5b5061025e565b61025e610142565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a55761029e61037a565b90506102ad565b6102ad610142565b90565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a557507f00000000000000000000000000000000000000000000000000000000000000006102ad565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103725760405162461bcd60e51b81526004018080602001828103825260328152602001806104a86032913960400191505060405180910390fd5b61015a61015a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156103be573d6000f35b3d6000fd5b6103cc81610403565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61040c8161046b565b6104475760405162461bcd60e51b815260040180806020018281038252603b8152602001806104da603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061049f57508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212208164596792f942fc3b6b368ddb911a2c3be724177b37d682e5cf4be38b403b4e64736f6c634300060c0033", + "deployedBytecode": "0x60806040526004361061003f5760003560e01c80633659cfe6146100495780634f1ef2861461007c5780635c60da1b146100fc578063f851a4401461012d575b610047610142565b005b34801561005557600080fd5b506100476004803603602081101561006c57600080fd5b50356001600160a01b031661015c565b6100476004803603604081101561009257600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100bd57600080fd5b8201836020820111156100cf57600080fd5b803590602001918460018302840111640100000000831117156100f157600080fd5b5090925090506101a6565b34801561010857600080fd5b50610111610263565b604080516001600160a01b039092168252519081900360200190f35b34801561013957600080fd5b506101116102b0565b61014a61030a565b61015a61015561037a565b61039f565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561019b57610196816103c3565b6101a3565b6101a3610142565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610256576101e0836103c3565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461023d576040519150601f19603f3d011682016040523d82523d6000602084013e610242565b606091505b505090508061025057600080fd5b5061025e565b61025e610142565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a55761029e61037a565b90506102ad565b6102ad610142565b90565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156102a557507f00000000000000000000000000000000000000000000000000000000000000006102ad565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103725760405162461bcd60e51b81526004018080602001828103825260328152602001806104a86032913960400191505060405180910390fd5b61015a61015a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156103be573d6000f35b3d6000fd5b6103cc81610403565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61040c8161046b565b6104475760405162461bcd60e51b815260040180806020018281038252603b8152602001806104da603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061049f57508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212208164596792f942fc3b6b368ddb911a2c3be724177b37d682e5cf4be38b403b4e64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/BaseParaSwapAdapter.json b/eth_defi/abi/aave_v2/BaseParaSwapAdapter.json new file mode 100644 index 00000000..91ac22d1 --- /dev/null +++ b/eth_defi/abi/aave_v2/BaseParaSwapAdapter.json @@ -0,0 +1,209 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseParaSwapAdapter", + "sourceName": "contracts/adapters/BaseParaSwapAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/BaseParaSwapSellAdapter.json b/eth_defi/abi/aave_v2/BaseParaSwapSellAdapter.json new file mode 100644 index 00000000..122301ec --- /dev/null +++ b/eth_defi/abi/aave_v2/BaseParaSwapSellAdapter.json @@ -0,0 +1,227 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseParaSwapSellAdapter", + "sourceName": "contracts/adapters/BaseParaSwapSellAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + }, + { + "internalType": "contract IParaSwapAugustusRegistry", + "name": "augustusRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "AUGUSTUS_REGISTRY", + "outputs": [ + { + "internalType": "contract IParaSwapAugustusRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/BaseUniswapAdapter.json b/eth_defi/abi/aave_v2/BaseUniswapAdapter.json new file mode 100644 index 00000000..b0c249b4 --- /dev/null +++ b/eth_defi/abi/aave_v2/BaseUniswapAdapter.json @@ -0,0 +1,369 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseUniswapAdapter", + "sourceName": "contracts/adapters/BaseUniswapAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + }, + { + "internalType": "contract IUniswapV2Router02", + "name": "uniswapRouter", + "type": "address" + }, + { + "internalType": "address", + "name": "wethAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FLASHLOAN_PREMIUM_TOTAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNISWAP_ROUTER", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "USD_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WETH_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/BaseUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/BaseUpgradeabilityProxy.json new file mode 100644 index 00000000..195a1836 --- /dev/null +++ b/eth_defi/abi/aave_v2/BaseUpgradeabilityProxy.json @@ -0,0 +1,28 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BaseUpgradeabilityProxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x6080604052348015600f57600080fd5b50609e8061001e6000396000f3fe6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122080238c1c240f36ee82095aaf1463780c0a37c9abffa58925670dde70c2d9507e64736f6c634300060c0033", + "deployedBytecode": "0x6080604052600a600c565b005b6012601e565b601e601a6020565b6045565b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156063573d6000f35b3d6000fdfea264697066735822122080238c1c240f36ee82095aaf1463780c0a37c9abffa58925670dde70c2d9507e64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ChainlinkUSDETHOracleI.json b/eth_defi/abi/aave_v2/ChainlinkUSDETHOracleI.json new file mode 100644 index 00000000..75efb3a3 --- /dev/null +++ b/eth_defi/abi/aave_v2/ChainlinkUSDETHOracleI.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ChainlinkUSDETHOracleI", + "sourceName": "contracts/mocks/oracle/ChainlinkUSDETHOracleI.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "int256", + "name": "current", + "type": "int256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "answerId", + "type": "uint256" + } + ], + "name": "AnswerUpdated", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Context.json b/eth_defi/abi/aave_v2/Context.json new file mode 100644 index 00000000..76ec54cc --- /dev/null +++ b/eth_defi/abi/aave_v2/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "contracts/dependencies/openzeppelin/contracts/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/DataTypes.json b/eth_defi/abi/aave_v2/DataTypes.json new file mode 100644 index 00000000..eeb4d5c0 --- /dev/null +++ b/eth_defi/abi/aave_v2/DataTypes.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DataTypes", + "sourceName": "contracts/protocol/libraries/types/DataTypes.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220994213952bddcef31a0dfc76b05ac29d3fd5b752f96fa2278343c51a37de9e1164736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220994213952bddcef31a0dfc76b05ac29d3fd5b752f96fa2278343c51a37de9e1164736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/DebtTokenBase.json b/eth_defi/abi/aave_v2/DebtTokenBase.json new file mode 100644 index 00000000..c1c92bac --- /dev/null +++ b/eth_defi/abi/aave_v2/DebtTokenBase.json @@ -0,0 +1,354 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DebtTokenBase", + "sourceName": "contracts/protocol/tokenization/base/DebtTokenBase.sol", + "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": "fromUser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowAllowanceDelegated", + "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": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveDelegation", + "outputs": [], + "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": "address", + "name": "fromUser", + "type": "address" + }, + { + "internalType": "address", + "name": "toUser", + "type": "address" + } + ], + "name": "borrowAllowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/DefaultReserveInterestRateStrategy.json b/eth_defi/abi/aave_v2/DefaultReserveInterestRateStrategy.json new file mode 100644 index 00000000..86bda398 --- /dev/null +++ b/eth_defi/abi/aave_v2/DefaultReserveInterestRateStrategy.json @@ -0,0 +1,287 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DefaultReserveInterestRateStrategy", + "sourceName": "contracts/protocol/lendingpool/DefaultReserveInterestRateStrategy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "uint256", + "name": "optimalUtilizationRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseVariableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "EXCESS_UTILIZATION_RATE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OPTIMAL_UTILIZATION_RATE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "addressesProvider", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseVariableBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidityAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidityTaken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + } + ], + "name": "calculateInterestRates", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + } + ], + "name": "calculateInterestRates", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxVariableBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stableRateSlope1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stableRateSlope2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "variableRateSlope1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "variableRateSlope2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x61018060405234801561001157600080fd5b50604051610fbb380380610fbb833981810160405260e081101561003457600080fd5b5080516020808301516040840151606085015160808087015160a088015160c0909801519185905295969395929491939161008e90879061007c906108526100c3821b17901c565b6100d360201b6108621790919060201c565b60a05260609690961b6001600160601b03191660c05260e09390935261010091909152610120526101405250610160526101b9565b6b033b2e3c9fd0803ce800000090565b600061011b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061012260201b60201c565b9392505050565b600081848411156101b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561017657818101518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60805160a05160c05160601c60e05161010051610120516101405161016051610d4d61026e6000398061059752806108305250806101dd52806105c752806106b15250806102df528061032c52806105f852508061030352806103715280610643528061071b5250806103505280610622528061074152806107e8525080610400528061080c52508061020152806105315250806105055280610555528061067d52806106f552806107c45250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806380031e371161007157806380031e37146101535780639584df281461015b578063a15f30ac1461019f578063b2589544146101a7578063c72c4d10146101af578063ccab01a3146101d3576100a9565b80630bdf953f146100ae57806317319873146100c857806329db497d146100d057806365614f81146101435780637b832f581461014b575b600080fd5b6100b66101db565b60408051918252519081900360200190f35b6100b66101ff565b61012560048036036101008110156100e757600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a08101359060c08101359060e00135610223565b60408051938452602084019290925282820152519081900360600190f35b6100b66102dd565b6100b6610301565b6100b6610325565b610125600480360360c081101561017157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a001356103a0565b6100b66107c2565b6100b66107e6565b6101b761080a565b604080516001600160a01b039092168252519081900360200190f35b6100b661082e565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000808b6001600160a01b03166370a082318c6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561027657600080fd5b505afa15801561028a573d6000803e3d6000fd5b505050506040513d60208110156102a057600080fd5b505190506102b8896102b2838d6108ad565b90610862565b90506102c88c828a8a8a8a6103a0565b93509350935050985098509895505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061039b7f00000000000000000000000000000000000000000000000000000000000000006103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b906108ad565b905090565b60008060006103ad610ce8565b6103b788886108ad565b808252600060208301819052604083018190526060830152156103f25780516103ed906103e5908b906108ad565b825190610907565b6103f5565b60005b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b50516040805163bb85c0bb60e01b81526001600160a01b038d811660048301529151919092169163bb85c0bb916024808301926020929190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b5051604082015260808101517f0000000000000000000000000000000000000000000000000000000000000000101561067257600061058d7f00000000000000000000000000000000000000000000000000000000000000006105877f0000000000000000000000000000000000000000000000000000000000000000856080015161086290919063ffffffff16565b90610907565b90506105eb6105bc7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6040840151610395907f00000000000000000000000000000000000000000000000000000000000000006108ad565b604083015261066761061d7f000000000000000000000000000000000000000000000000000000000000000083610a4b565b6103957f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006108ad565b60208301525061076c565b6106e16106d66106af7f0000000000000000000000000000000000000000000000000000000000000000846080015161090790919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000090610a4b565b6040830151906108ad565b604082015260808101516107669061073f907f000000000000000000000000000000000000000000000000000000000000000090610587907f0000000000000000000000000000000000000000000000000000000000000000610a4b565b7f0000000000000000000000000000000000000000000000000000000000000000906108ad565b60208201525b61079f61077b61271087610862565b61079983608001516107938c8c87602001518d610b0c565b90610a4b565b90610b73565b606082018190526040820151602090920151909b919a5098509650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6b033b2e3c9fd0803ce800000090565b60006108a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c10565b90505b92915050565b6000828201838110156108a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082019091526002815261035360f41b6020820152600090826109ac5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610971578181015183820152602001610959565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115610a285760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5082816b033b2e3c9fd0803ce800000086020181610a4257fe5b04949350505050565b6000821580610a58575081155b15610a65575060006108a7565b816b019d971e4fe8401e740000001981610a7b57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ae65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b506b033b2e3c9fd0803ce80000006002815b048385020181610b0457fe5b049392505050565b600080610b1986866108ad565b905080610b2a576000915050610b6b565b6000610b398561079388610c6a565b90506000610b4a856107938a610c6a565b90506000610b64610b5a85610c6a565b61058785856108ad565b9450505050505b949350505050565b6000821580610b80575081155b15610b8d575060006108a7565b816113881981610b9957fe5b0483111560405180604001604052806002815260200161068760f31b81525090610c045760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b50612710600281610af8565b60008184841115610c625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b505050900390565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b81525090610ce15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610971578181015183820152602001610959565b5092915050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fea26469706673582212202de93b4e5bd8eff563a6594cebe41ba1046984974b817cc22176094a2c3682bf64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/DelegationAwareAToken.json b/eth_defi/abi/aave_v2/DelegationAwareAToken.json new file mode 100644 index 00000000..cc91025a --- /dev/null +++ b/eth_defi/abi/aave_v2/DelegationAwareAToken.json @@ -0,0 +1,846 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DelegationAwareAToken", + "sourceName": "contracts/protocol/tokenization/DelegationAwareAToken.sol", + "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" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "BalanceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "ATOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EIP712_REVISION", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESERVE_TREASURY_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "receiverOfUnderlying", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + } + ], + "name": "delegateUnderlyingTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "handleRepayment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mintToTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferOnLiquidation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferUnderlyingTo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b612a2680620001406000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106db578063d7020d0a1461072c578063dd62ed3e14610768578063f866c31914610796576101f0565b8063ae1673351461069d578063b16a19de146106a5578063b1bf962d146106ad578063b9844d8d146106b5576101f0565b806388dd91a1116100de57806388dd91a11461061157806395d89b411461063d578063a457c2d714610645578063a9059cbb14610671576101f0565b80637535d246146105ba57806375d26413146105de57806378160376146105e65780637df5bd3b146105ee576101f0565b806323b872dd116101875780633644e515116101565780633644e51514610534578063395093511461053c5780634efecaa51461056857806370a0823114610594576101f0565b806323b872dd146104b25780632f114618146104e857806330adf81f1461050e578063313ce56714610516576101f0565b8063156e29f6116101c3578063156e29f61461030b57806318160ddd1461033d578063183fb413146103455780631da24f3e1461048c576101f0565b806306fdde03146101f5578063095ea7b3146102725780630afbcdc9146102b25780630bd7ad3b146102f1575b600080fd5b6101fd6107cc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029e6004803603604081101561028857600080fd5b506001600160a01b038135169060200135610863565b604080519115158252519081900360200190f35b6102d8600480360360208110156102c857600080fd5b50356001600160a01b0316610881565b6040805192835260208301919091528051918290030190f35b6102f961089e565b60408051918252519081900360200190f35b61029e6004803603606081101561032157600080fd5b506001600160a01b0381351690602081013590604001356108a3565b6102f9610a71565b61048a600480360361010081101561035c57600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a08201356401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b9193909290916020810190356401000000008111156103f957600080fd5b82018360208201111561040b57600080fd5b8035906020019184600183028401116401000000008311171561042d57600080fd5b91939092909160208101903564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184600183028401116401000000008311171561047f57600080fd5b509092509050610b1b565b005b6102f9600480360360208110156104a257600080fd5b50356001600160a01b0316610e98565b61029e600480360360608110156104c857600080fd5b506001600160a01b03813581169160208101359091169060400135610ea3565b61048a600480360360208110156104fe57600080fd5b50356001600160a01b0316610f63565b6102f9611137565b61051e61115b565b6040805160ff9092168252519081900360200190f35b6102f9611164565b61029e6004803603604081101561055257600080fd5b506001600160a01b03813516906020013561116a565b6102f96004803603604081101561057e57600080fd5b506001600160a01b0381351690602001356111b8565b6102f9600480360360208110156105aa57600080fd5b50356001600160a01b031661125e565b6105c26112ed565b604080516001600160a01b039092168252519081900360200190f35b6105c26112fc565b6101fd61130b565b61048a6004803603604081101561060457600080fd5b5080359060200135611328565b61048a6004803603604081101561062757600080fd5b506001600160a01b03813516906020013561144f565b6101fd6114d9565b61029e6004803603604081101561065b57600080fd5b506001600160a01b03813516906020013561153a565b61029e6004803603604081101561068757600080fd5b506001600160a01b0381351690602001356115a2565b6105c26115ff565b6105c261160e565b6102f961161d565b6102f9600480360360208110156106cb57600080fd5b50356001600160a01b0316611627565b61048a600480360360e08110156106f157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611639565b61048a6004803603608081101561074257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611880565b6102f96004803603604081101561077e57600080fd5b506001600160a01b0381358116916020013516611a25565b61048a600480360360608110156107ac57600080fd5b506001600160a01b03813581169160208101359091169060400135611a50565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b820191906000526020600020905b81548152906001019060200180831161083b57829003601f168201915b505050505090505b90565b6000610877610870611b21565b8484611b25565b5060015b92915050565b60008061088d83611c11565b610895611c2c565b91509150915091565b600181565b603c546000906001600160a01b03166108ba611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561092d578181015183820152602001610915565b50505050905090810190601f16801561095a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061097485611c11565b905060006109828585611c32565b6040805180820190915260028152611a9b60f11b6020820152909150816109ea5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b506109f58682611d39565b6040805186815290516001600160a01b038816916000916000805160206129188339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a7c611c2c565b905080610a8d576000915050610860565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610b1593929092169163d15e005391602480820192602092909190829003018186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50518290611e8a565b91505090565b6000610b25611f48565b60015490915060ff1680610b3c5750610b3c611f4d565b80610b48575060005481115b610b835760405162461bcd60e51b815260040180806020018281038252602e8152602001806128ea602e913960400191505060405180910390fd5b60015460ff16158015610ba2576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c9a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5392505050565b610cd987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6692505050565b610ce28a611f79565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e89576001805460ff191690555b50505050505050505050505050565b600061087b82611c11565b6000610eb0848484611f8f565b610f2084610ebc611b21565b610f1b856040518060600160405280602881526020016128c2602891396001600160a01b038a16600090815260356020526040812090610efa611b21565b6001600160a01b031681526020810191909152604001600020549190611f9c565b611b25565b826001600160a01b0316846001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a35060019392505050565b603c60009054906101000a90046001600160a01b03166001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb157600080fd5b505afa158015610fc5573d6000803e3d6000fd5b505050506040513d6020811015610fdb57600080fd5b5051604080516315d9b46f60e31b815290516001600160a01b039092169163aecda37891600480820192602092909190829003018186803b15801561101f57600080fd5b505afa158015611033573d6000803e3d6000fd5b505050506040513d602081101561104957600080fd5b50516001600160a01b031661105c611b21565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906110cd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610877611177611b21565b84610f1b8560356000611188611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611ff6565b603c546000906001600160a01b03166111cf611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112405760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54611258906001600160a01b03168484612057565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361087b93169163d15e0053916024808301926020929190829003018186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50516112e784611c11565b90611e8a565b603c546001600160a01b031690565b60006113066120a9565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661133c611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906113ad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50816113b85761144b565b603d546001600160a01b03166113d7816113d28585611c32565b611d39565b6040805184815290516001600160a01b038316916000916000805160206129188339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b0316611463611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906114d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b6000610877611547611b21565b84610f1b856040518060600160405280602581526020016129cc6025913960356000611571611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f9c565b60006115b66115af611b21565b8484611f8f565b826001600160a01b03166115c8611b21565b6001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611306611c2c565b603a6020526000908152604090205481565b6001600160a01b038716611684576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156116ce576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156117e3573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611846576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611851826001611ff6565b6001600160a01b038a166000908152603a6020526040902055611875898989611b25565b505050505050505050565b603c546001600160a01b0316611894611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906119055760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060006119128383611c32565b60408051808201909152600281526106a760f31b60208201529091508161197a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5061198585826120b8565b603e5461199c906001600160a01b03168585612057565b6040805184815290516000916001600160a01b038816916000805160206129188339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b0316611a64611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090611ad55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50611ae3838383600061215c565b816001600160a01b0316836001600160a01b0316600080516020612918833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611b6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061297e6024913960400191505060405180910390fd5b6001600160a01b038216611baf5760405162461bcd60e51b815260040180806020018281038252602281526020018061287a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611c9a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611d165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5082816b033b2e3c9fd0803ce800000086020181611d3057fe5b04949350505050565b6001600160a01b038216611d94576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611da0600083836114d4565b603654611dad8183611ff6565b6036556001600160a01b038316600090815260346020526040902054611dd38184611ff6565b6001600160a01b038516600090815260346020526040812091909155611df76120a9565b6001600160a01b031614611e8457611e0d6120a9565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611e6b57600080fd5b505af1158015611e7f573d6000803e3d6000fd5b505050505b50505050565b6000821580611e97575081155b15611ea45750600061087b565b816b019d971e4fe8401e740000001981611eba57fe5b0483111560405180604001604052806002815260200161068760f31b81525090611f255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161144b9060379060208401906127a1565b805161144b9060389060208401906127a1565b6039805460ff191660ff92909216919091179055565b6114d4838383600161215c565b60008184841115611fee5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050900390565b600082820183811015612050576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114d4908490612305565b603f546001600160a01b031690565b6001600160a01b0382166120fd5760405162461bcd60e51b81526004018080602001828103825260218152602001806129386021913960400191505060405180910390fd5b612109826000836114d4565b60365461211681836124bd565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611dd39286929061285890830139839190611f9c565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b1580156121b457600080fd5b505afa1580156121c8573d6000803e3d6000fd5b505050506040513d60208110156121de57600080fd5b5051905060006121f1826112e78a611c11565b90506000612202836112e78a611c11565b905061221889896122138a87611c32565b6124ff565b85156122a7576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612317826001600160a01b0316612765565b612368576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123a65780518252601f199092019160209182019101612387565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612408576040519150601f19603f3d011682016040523d82523d6000602084013e61240d565b606091505b509150915081612464576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e845780806020019051602081101561248057600080fd5b5051611e845760405162461bcd60e51b815260040180806020018281038252602a8152602001806129a2602a913960400191505060405180910390fd5b600061205083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f9c565b6001600160a01b0383166125445760405162461bcd60e51b81526004018080602001828103825260258152602001806129596025913960400191505060405180910390fd5b6001600160a01b0382166125895760405162461bcd60e51b81526004018080602001828103825260238152602001806128356023913960400191505060405180910390fd5b6125948383836114d4565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506125e38260405180606001604052806026815260200161289c60269139839190611f9c565b6001600160a01b0380861660009081526034602052604080822093909355908516815220546126128184611ff6565b6001600160a01b0385166000908152603460205260408120919091556126366120a9565b6001600160a01b0316146111305760365461264f6120a9565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156126ad57600080fd5b505af11580156126c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03161461275d576126e66120a9565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b505050505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061279957508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e257805160ff191683800117855561280f565b8280016001018555821561280f579182015b8281111561280f5782518255916020019190600101906127f4565b5061281b92915061281f565b5090565b5b8082111561281b576000815560010161282056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200e2f83c5105885d29e8ffbfe773d29119b1657b74bd1f7d53169a24ec60a790a64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106db578063d7020d0a1461072c578063dd62ed3e14610768578063f866c31914610796576101f0565b8063ae1673351461069d578063b16a19de146106a5578063b1bf962d146106ad578063b9844d8d146106b5576101f0565b806388dd91a1116100de57806388dd91a11461061157806395d89b411461063d578063a457c2d714610645578063a9059cbb14610671576101f0565b80637535d246146105ba57806375d26413146105de57806378160376146105e65780637df5bd3b146105ee576101f0565b806323b872dd116101875780633644e515116101565780633644e51514610534578063395093511461053c5780634efecaa51461056857806370a0823114610594576101f0565b806323b872dd146104b25780632f114618146104e857806330adf81f1461050e578063313ce56714610516576101f0565b8063156e29f6116101c3578063156e29f61461030b57806318160ddd1461033d578063183fb413146103455780631da24f3e1461048c576101f0565b806306fdde03146101f5578063095ea7b3146102725780630afbcdc9146102b25780630bd7ad3b146102f1575b600080fd5b6101fd6107cc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029e6004803603604081101561028857600080fd5b506001600160a01b038135169060200135610863565b604080519115158252519081900360200190f35b6102d8600480360360208110156102c857600080fd5b50356001600160a01b0316610881565b6040805192835260208301919091528051918290030190f35b6102f961089e565b60408051918252519081900360200190f35b61029e6004803603606081101561032157600080fd5b506001600160a01b0381351690602081013590604001356108a3565b6102f9610a71565b61048a600480360361010081101561035c57600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a08201356401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b9193909290916020810190356401000000008111156103f957600080fd5b82018360208201111561040b57600080fd5b8035906020019184600183028401116401000000008311171561042d57600080fd5b91939092909160208101903564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184600183028401116401000000008311171561047f57600080fd5b509092509050610b1b565b005b6102f9600480360360208110156104a257600080fd5b50356001600160a01b0316610e98565b61029e600480360360608110156104c857600080fd5b506001600160a01b03813581169160208101359091169060400135610ea3565b61048a600480360360208110156104fe57600080fd5b50356001600160a01b0316610f63565b6102f9611137565b61051e61115b565b6040805160ff9092168252519081900360200190f35b6102f9611164565b61029e6004803603604081101561055257600080fd5b506001600160a01b03813516906020013561116a565b6102f96004803603604081101561057e57600080fd5b506001600160a01b0381351690602001356111b8565b6102f9600480360360208110156105aa57600080fd5b50356001600160a01b031661125e565b6105c26112ed565b604080516001600160a01b039092168252519081900360200190f35b6105c26112fc565b6101fd61130b565b61048a6004803603604081101561060457600080fd5b5080359060200135611328565b61048a6004803603604081101561062757600080fd5b506001600160a01b03813516906020013561144f565b6101fd6114d9565b61029e6004803603604081101561065b57600080fd5b506001600160a01b03813516906020013561153a565b61029e6004803603604081101561068757600080fd5b506001600160a01b0381351690602001356115a2565b6105c26115ff565b6105c261160e565b6102f961161d565b6102f9600480360360208110156106cb57600080fd5b50356001600160a01b0316611627565b61048a600480360360e08110156106f157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611639565b61048a6004803603608081101561074257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611880565b6102f96004803603604081101561077e57600080fd5b506001600160a01b0381358116916020013516611a25565b61048a600480360360608110156107ac57600080fd5b506001600160a01b03813581169160208101359091169060400135611a50565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b820191906000526020600020905b81548152906001019060200180831161083b57829003601f168201915b505050505090505b90565b6000610877610870611b21565b8484611b25565b5060015b92915050565b60008061088d83611c11565b610895611c2c565b91509150915091565b600181565b603c546000906001600160a01b03166108ba611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561092d578181015183820152602001610915565b50505050905090810190601f16801561095a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061097485611c11565b905060006109828585611c32565b6040805180820190915260028152611a9b60f11b6020820152909150816109ea5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b506109f58682611d39565b6040805186815290516001600160a01b038816916000916000805160206129188339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a7c611c2c565b905080610a8d576000915050610860565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610b1593929092169163d15e005391602480820192602092909190829003018186803b158015610ae257600080fd5b505afa158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50518290611e8a565b91505090565b6000610b25611f48565b60015490915060ff1680610b3c5750610b3c611f4d565b80610b48575060005481115b610b835760405162461bcd60e51b815260040180806020018281038252602e8152602001806128ea602e913960400191505060405180910390fd5b60015460ff16158015610ba2576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c9a89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5392505050565b610cd987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6692505050565b610ce28a611f79565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e89576001805460ff191690555b50505050505050505050505050565b600061087b82611c11565b6000610eb0848484611f8f565b610f2084610ebc611b21565b610f1b856040518060600160405280602881526020016128c2602891396001600160a01b038a16600090815260356020526040812090610efa611b21565b6001600160a01b031681526020810191909152604001600020549190611f9c565b611b25565b826001600160a01b0316846001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a35060019392505050565b603c60009054906101000a90046001600160a01b03166001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb157600080fd5b505afa158015610fc5573d6000803e3d6000fd5b505050506040513d6020811015610fdb57600080fd5b5051604080516315d9b46f60e31b815290516001600160a01b039092169163aecda37891600480820192602092909190829003018186803b15801561101f57600080fd5b505afa158015611033573d6000803e3d6000fd5b505050506040513d602081101561104957600080fd5b50516001600160a01b031661105c611b21565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906110cd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54604080516317066a5760e21b81526001600160a01b03848116600483015291519190921691635c19a95c91602480830192600092919082900301818387803b15801561111c57600080fd5b505af1158015611130573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610877611177611b21565b84610f1b8560356000611188611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611ff6565b603c546000906001600160a01b03166111cf611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112405760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50603e54611258906001600160a01b03168484612057565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361087b93169163d15e0053916024808301926020929190829003018186803b1580156112b257600080fd5b505afa1580156112c6573d6000803e3d6000fd5b505050506040513d60208110156112dc57600080fd5b50516112e784611c11565b90611e8a565b603c546001600160a01b031690565b60006113066120a9565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661133c611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906113ad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50816113b85761144b565b603d546001600160a01b03166113d7816113d28585611c32565b611d39565b6040805184815290516001600160a01b038316916000916000805160206129188339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b0316611463611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906114d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108585780601f1061082d57610100808354040283529160200191610858565b6000610877611547611b21565b84610f1b856040518060600160405280602581526020016129cc6025913960356000611571611b21565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f9c565b60006115b66115af611b21565b8484611f8f565b826001600160a01b03166115c8611b21565b6001600160a01b0316600080516020612918833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611306611c2c565b603a6020526000908152604090205481565b6001600160a01b038716611684576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156116ce576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156117e3573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611846576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611851826001611ff6565b6001600160a01b038a166000908152603a6020526040902055611875898989611b25565b505050505050505050565b603c546001600160a01b0316611894611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906119055760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060006119128383611c32565b60408051808201909152600281526106a760f31b60208201529091508161197a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5061198585826120b8565b603e5461199c906001600160a01b03168585612057565b6040805184815290516000916001600160a01b038816916000805160206129188339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b0316611a64611b21565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090611ad55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50611ae3838383600061215c565b816001600160a01b0316836001600160a01b0316600080516020612918833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611b6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061297e6024913960400191505060405180910390fd5b6001600160a01b038216611baf5760405162461bcd60e51b815260040180806020018281038252602281526020018061287a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611c9a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611d165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b5082816b033b2e3c9fd0803ce800000086020181611d3057fe5b04949350505050565b6001600160a01b038216611d94576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611da0600083836114d4565b603654611dad8183611ff6565b6036556001600160a01b038316600090815260346020526040902054611dd38184611ff6565b6001600160a01b038516600090815260346020526040812091909155611df76120a9565b6001600160a01b031614611e8457611e0d6120a9565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611e6b57600080fd5b505af1158015611e7f573d6000803e3d6000fd5b505050505b50505050565b6000821580611e97575081155b15611ea45750600061087b565b816b019d971e4fe8401e740000001981611eba57fe5b0483111560405180604001604052806002815260200161068760f31b81525090611f255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600190565b303b1590565b805161144b9060379060208401906127a1565b805161144b9060389060208401906127a1565b6039805460ff191660ff92909216919091179055565b6114d4838383600161215c565b60008184841115611fee5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561092d578181015183820152602001610915565b505050900390565b600082820183811015612050576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114d4908490612305565b603f546001600160a01b031690565b6001600160a01b0382166120fd5760405162461bcd60e51b81526004018080602001828103825260218152602001806129386021913960400191505060405180910390fd5b612109826000836114d4565b60365461211681836124bd565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611dd39286929061285890830139839190611f9c565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b1580156121b457600080fd5b505afa1580156121c8573d6000803e3d6000fd5b505050506040513d60208110156121de57600080fd5b5051905060006121f1826112e78a611c11565b90506000612202836112e78a611c11565b905061221889896122138a87611c32565b6124ff565b85156122a7576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561228e57600080fd5b505af11580156122a2573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612317826001600160a01b0316612765565b612368576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123a65780518252601f199092019160209182019101612387565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612408576040519150601f19603f3d011682016040523d82523d6000602084013e61240d565b606091505b509150915081612464576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e845780806020019051602081101561248057600080fd5b5051611e845760405162461bcd60e51b815260040180806020018281038252602a8152602001806129a2602a913960400191505060405180910390fd5b600061205083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f9c565b6001600160a01b0383166125445760405162461bcd60e51b81526004018080602001828103825260258152602001806129596025913960400191505060405180910390fd5b6001600160a01b0382166125895760405162461bcd60e51b81526004018080602001828103825260238152602001806128356023913960400191505060405180910390fd5b6125948383836114d4565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506125e38260405180606001604052806026815260200161289c60269139839190611f9c565b6001600160a01b0380861660009081526034602052604080822093909355908516815220546126128184611ff6565b6001600160a01b0385166000908152603460205260408120919091556126366120a9565b6001600160a01b0316146111305760365461264f6120a9565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156126ad57600080fd5b505af11580156126c1573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b03161461275d576126e66120a9565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561274457600080fd5b505af1158015612758573d6000803e3d6000fd5b505050505b505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061279957508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e257805160ff191683800117855561280f565b8280016001018555821561280f579182015b8281111561280f5782518255916020019190600101906127f4565b5061281b92915061281f565b5090565b5b8082111561281b576000815560010161282056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200e2f83c5105885d29e8ffbfe773d29119b1657b74bd1f7d53169a24ec60a790a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ERC20.json b/eth_defi/abi/aave_v2/ERC20.json new file mode 100644 index 00000000..5098155e --- /dev/null +++ b/eth_defi/abi/aave_v2/ERC20.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20", + "sourceName": "contracts/dependencies/openzeppelin/contracts/ERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405162000c6238038062000c628339818101604052604081101561003557600080fd5b810190808051604051939291908464010000000082111561005557600080fd5b90830190602082018581111561006a57600080fd5b825164010000000081118282018810171561008457600080fd5b82525081516020918201929091019080838360005b838110156100b1578181015183820152602001610099565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010157600080fd5b90830190602082018581111561011657600080fd5b825164010000000081118282018810171561013057600080fd5b82525081516020918201929091019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b50604052505082516101a4915060039060208501906101cd565b5080516101b89060049060208401906101cd565b50506005805460ff1916601217905550610260565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020e57805160ff191683800117855561023b565b8280016001018555821561023b579182015b8281111561023b578251825591602001919060010190610220565b5061024792915061024b565b5090565b5b80821115610247576000815560010161024c565b6109f280620002706000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103f9565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610402565b6101736004803603602081101561021b57600080fd5b50356001600160a01b0316610450565b6100b661046b565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104cc565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610534565b610173600480360360408110156102a157600080fd5b506001600160a01b0381358116916020013516610548565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610573565b8484610577565b50600192915050565b60025490565b600061037f848484610663565b6103ef8461038b610573565b6103ea85604051806060016040528060288152602001610927602891396001600160a01b038a166000908152600160205260408120906103c9610573565b6001600160a01b0316815260208101919091526040016000205491906107be565b610577565b5060019392505050565b60055460ff1690565b600061036361040f610573565b846103ea8560016000610420610573565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610855565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104d9610573565b846103ea856040518060600160405280602581526020016109986025913960016000610503610573565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906107be565b6000610363610541610573565b8484610663565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105bc5760405162461bcd60e51b81526004018080602001828103825260248152602001806109746024913960400191505060405180910390fd5b6001600160a01b0382166106015760405162461bcd60e51b81526004018080602001828103825260228152602001806108df6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106a85760405162461bcd60e51b815260040180806020018281038252602581526020018061094f6025913960400191505060405180910390fd5b6001600160a01b0382166106ed5760405162461bcd60e51b81526004018080602001828103825260238152602001806108bc6023913960400191505060405180910390fd5b6106f88383836108b6565b61073581604051806060016040528060268152602001610901602691396001600160a01b03861660009081526020819052604090205491906107be565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107649082610855565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561084d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108125781810151838201526020016107fa565b50505050905090810190601f16801561083f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203ea3e781ac6f0e23a39424cfe2d52984a4c24a8a035d3ca917cdbe104ad6fe7a64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103f9565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610402565b6101736004803603602081101561021b57600080fd5b50356001600160a01b0316610450565b6100b661046b565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104cc565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610534565b610173600480360360408110156102a157600080fd5b506001600160a01b0381358116916020013516610548565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610573565b8484610577565b50600192915050565b60025490565b600061037f848484610663565b6103ef8461038b610573565b6103ea85604051806060016040528060288152602001610927602891396001600160a01b038a166000908152600160205260408120906103c9610573565b6001600160a01b0316815260208101919091526040016000205491906107be565b610577565b5060019392505050565b60055460ff1690565b600061036361040f610573565b846103ea8560016000610420610573565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610855565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104d9610573565b846103ea856040518060600160405280602581526020016109986025913960016000610503610573565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906107be565b6000610363610541610573565b8484610663565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105bc5760405162461bcd60e51b81526004018080602001828103825260248152602001806109746024913960400191505060405180910390fd5b6001600160a01b0382166106015760405162461bcd60e51b81526004018080602001828103825260228152602001806108df6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106a85760405162461bcd60e51b815260040180806020018281038252602581526020018061094f6025913960400191505060405180910390fd5b6001600160a01b0382166106ed5760405162461bcd60e51b81526004018080602001828103825260238152602001806108bc6023913960400191505060405180910390fd5b6106f88383836108b6565b61073581604051806060016040528060268152602001610901602691396001600160a01b03861660009081526020819052604090205491906107be565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107649082610855565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561084d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108125781810151838201526020016107fa565b50505050905090810190601f16801561083f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203ea3e781ac6f0e23a39424cfe2d52984a4c24a8a035d3ca917cdbe104ad6fe7a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Errors.json b/eth_defi/abi/aave_v2/Errors.json new file mode 100644 index 00000000..94aaa67b --- /dev/null +++ b/eth_defi/abi/aave_v2/Errors.json @@ -0,0 +1,1051 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Errors", + "sourceName": "contracts/protocol/libraries/helpers/Errors.sol", + "abi": [ + { + "inputs": [], + "name": "BORROW_ALLOWANCE_NOT_ENOUGH", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CALLER_NOT_POOL_ADMIN", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CT_CALLER_MUST_BE_LENDING_POOL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CT_CANNOT_GIVE_ALLOWANCE_TO_HIMSELF", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CT_INVALID_BURN_AMOUNT", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CT_INVALID_MINT_AMOUNT", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CT_TRANSFER_AMOUNT_NOT_GT_0", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPAPR_INVALID_ADDRESSES_PROVIDER_ID", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPAPR_PROVIDER_NOT_REGISTERED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPCM_COLLATERAL_CANNOT_BE_LIQUIDATED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPCM_HEALTH_FACTOR_NOT_BELOW_THRESHOLD", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPCM_NOT_ENOUGH_LIQUIDITY_TO_LIQUIDATE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPCM_NO_ERRORS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPCM_SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_CALLER_NOT_EMERGENCY_ADMIN", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_ADDRESSES_PROVIDER_ID", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_ATOKEN_POOL_ADDRESS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_CONFIGURATION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_STABLE_DEBT_TOKEN_POOL_ADDRESS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_STABLE_DEBT_TOKEN_UNDERLYING_ADDRESS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_VARIABLE_DEBT_TOKEN_POOL_ADDRESS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_INVALID_VARIABLE_DEBT_TOKEN_UNDERLYING_ADDRESS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LPC_RESERVE_LIQUIDITY_NOT_0", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_CALLER_MUST_BE_AN_ATOKEN", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_CALLER_NOT_LENDING_POOL_CONFIGURATOR", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_FAILED_COLLATERAL_SWAP", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_FAILED_REPAY_WITH_COLLATERAL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INCONSISTENT_FLASHLOAN_PARAMS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INCONSISTENT_PARAMS_LENGTH", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INCONSISTENT_PROTOCOL_ACTUAL_BALANCE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INVALID_EQUAL_ASSETS_TO_SWAP", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INVALID_FLASHLOAN_MODE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_INVALID_FLASH_LOAN_EXECUTOR_RETURN", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_IS_PAUSED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_LIQUIDATION_CALL_FAILED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_NOT_CONTRACT", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_NOT_ENOUGH_LIQUIDITY_TO_BORROW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_NOT_ENOUGH_STABLE_BORROW_BALANCE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_NO_MORE_RESERVES_ALLOWED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_REENTRANCY_NOT_ALLOWED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LP_REQUESTED_AMOUNT_TOO_SMALL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MATH_ADDITION_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MATH_DIVISION_BY_ZERO", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MATH_MULTIPLICATION_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RC_INVALID_DECIMALS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RC_INVALID_LIQ_BONUS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RC_INVALID_LIQ_THRESHOLD", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RC_INVALID_LTV", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RC_INVALID_RESERVE_FACTOR", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RL_LIQUIDITY_INDEX_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RL_LIQUIDITY_RATE_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RL_RESERVE_ALREADY_INITIALIZED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RL_STABLE_BORROW_RATE_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RL_VARIABLE_BORROW_INDEX_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RL_VARIABLE_BORROW_RATE_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SDT_BURN_EXCEEDS_BALANCE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SDT_STABLE_DEBT_OVERFLOW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UL_INVALID_INDEX", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_BORROWING_NOT_ENABLED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_COLLATERAL_BALANCE_IS_0", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_COLLATERAL_CANNOT_COVER_NEW_BORROW", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_COLLATERAL_SAME_AS_BORROWING_CURRENCY", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_CURRENT_AVAILABLE_LIQUIDITY_NOT_ENOUGH", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_DEPOSIT_ALREADY_IN_USE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_INCONSISTENT_FLASHLOAN_PARAMS", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_INVALID_AMOUNT", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_INVALID_INTEREST_RATE_MODE_SELECTED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_NOT_ENOUGH_AVAILABLE_USER_BALANCE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_NO_ACTIVE_RESERVE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_NO_DEBT_OF_SELECTED_TYPE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_NO_STABLE_RATE_LOAN_IN_RESERVE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_NO_VARIABLE_RATE_LOAN_IN_RESERVE", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_RESERVE_FROZEN", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_STABLE_BORROWING_NOT_ENABLED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_TRANSFER_NOT_ALLOWED", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VL_UNDERLYING_BALANCE_NOT_GREATER_THAN_0", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x611111610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061048a5760003560e01c80636ba4271f11610261578063cdad445a11610150578063e2c16d69116100cd578063f11c672011610091578063f11c67201461075c578063f3d9cc1114610764578063f902735d1461076c578063fb681def14610774578063fe75fd261461077c5761048a565b8063e2c16d6914610734578063e66327481461073c578063e7bf91b314610744578063eca85d3a1461074c578063f0473259146107545761048a565b8063d7510e0c11610114578063d7510e0c1461070c578063d7b079aa14610714578063daf235471461071c578063e0d7dfd714610724578063e29425dc1461072c5761048a565b8063cdad445a146106e4578063d3e370ee146106ec578063d44e8e88146106f4578063d57bb964146106fc578063d6f681b6146107045761048a565b8063a39ed4ff116101de578063b89652cd116101a2578063b89652cd146106bc578063bd013f5b146106c4578063c09e2618146106cc578063c2d628df146106d4578063cc5fc44c146106dc5761048a565b8063a39ed4ff14610694578063a84402411461069c578063ac753236146106a4578063b36a2cf3146106ac578063b72e40c7146106b45761048a565b80637865a627116102255780637865a6271461066c578063871938a81461067457806391a9fb181461067c5780639be4f03a14610684578063a2fbc8ad1461068c5761048a565b80636ba4271f146106445780636d422aa11461064c578063708b8dd31461065457806371a629da1461065c57806376f19030146106645761048a565b80633aa786a81161037d5780634a529f91116102fa578063614cf6a1116102be578063614cf6a11461061c578063637a5a12146106245780636422b2571461062c57806365344799146106345780636ab5e6151461063c5761048a565b80634a529f91146105f45780634fe4f1ab146105fc57806355bab12c146106045780635a9786d41461060c5780635e869ff1146106145761048a565b80634349e3d8116103415780634349e3d8146105cc57806344942004146105d457806344dc4f70146105dc57806347d25300146105e45780634927c63a146105ec5761048a565b80633aa786a8146105a45780633b5d25aa146105ac5780633f5d6ec8146105b4578063407374a4146105bc57806341b40ba5146105c45761048a565b806322a6f08e1161040b578063333e8ea8116103cf578063333e8ea81461057c57806335a9d21d1461058457806336565ab11461058c5780633872b0ad14610594578063390f34ba1461059c5761048a565b806322a6f08e146105545780632ace698a1461055c5780632b34c349146105645780632b9c57f61461056c5780632ea347b0146105745761048a565b80631291a38b116104525780631291a38b1461052c578063179476c5146105345780631befa78d1461053c5780631ea7c604146105445780631ec68b1d1461054c5761048a565b806302454ad31461048f578063029d23441461050c57806306f355ad146105145780630b8fd5881461051c5780630f5ee48214610524575b600080fd5b610497610784565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104d15781810151838201526020016104b9565b50505050905090810190601f1680156104fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104976107a2565b6104976107c0565b6104976107de565b6104976107fc565b61049761081a565b610497610838565b610497610855565b610497610873565b610497610891565b6104976108af565b6104976108cd565b6104976108eb565b610497610909565b610497610927565b610497610945565b610497610963565b610497610981565b61049761099e565b6104976109bc565b6104976109da565b6104976109f8565b610497610a15565b610497610a33565b610497610a51565b610497610a6f565b610497610a8d565b610497610aab565b610497610ac9565b610497610ae7565b610497610b05565b610497610b23565b610497610b41565b610497610b5f565b610497610b7d565b610497610b9b565b610497610bb9565b610497610bd7565b610497610bf5565b610497610c13565b610497610c31565b610497610c4f565b610497610c6d565b610497610c8a565b610497610ca8565b610497610cc6565b610497610ce3565b610497610d00565b610497610d1e565b610497610d3c565b610497610d5a565b610497610d78565b610497610d95565b610497610db3565b610497610dd1565b610497610def565b610497610e0d565b610497610e2b565b610497610e49565b610497610e67565b610497610e85565b610497610ea3565b610497610ec1565b610497610edf565b610497610efd565b610497610f1b565b610497610f38565b610497610f56565b610497610f74565b610497610f92565b610497610fb0565b610497610fce565b610497610fec565b61049761100a565b610497611028565b610497611046565b610497611064565b610497611081565b61049761109f565b6104976110bd565b60405180604001604052806002815260200161373760f01b81525081565b60405180604001604052806002815260200161068760f31b81525081565b60405180604001604052806002815260200161033360f41b81525081565b60405180604001604052806002815260200161191b60f11b81525081565b60405180604001604052806002815260200161343960f01b81525081565b604051806040016040528060028152602001611a9b60f11b81525081565b604051806040016040528060018152602001600d60fa1b81525081565b60405180604001604052806002815260200161038360f41b81525081565b604051806040016040528060028152602001611a1b60f11b81525081565b60405180604001604052806002815260200161031360f41b81525081565b604051806040016040528060028152602001610c8d60f21b81525081565b60405180604001604052806002815260200161313160f01b81525081565b60405180604001604052806002815260200161064760f31b81525081565b6040518060400160405280600281526020016106a760f31b81525081565b604051806040016040528060028152602001610d4d60f21b81525081565b604051806040016040528060028152602001611b9960f11b81525081565b60405180604001604052806002815260200161313960f01b81525081565b604051806040016040528060018152602001603760f81b81525081565b60405180604001604052806002815260200161333960f01b81525081565b60405180604001604052806002815260200161323560f01b81525081565b604051806040016040528060028152602001610c4d60f21b81525081565b604051806040016040528060018152602001600760fb1b81525081565b60405180604001604052806002815260200161037360f41b81525081565b60405180604001604052806002815260200161343360f01b81525081565b60405180604001604052806002815260200161066760f31b81525081565b60405180604001604052806002815260200161035360f41b81525081565b604051806040016040528060028152602001611a9960f11b81525081565b60405180604001604052806002815260200161323160f01b81525081565b60405180604001604052806002815260200161373560f01b81525081565b60405180604001604052806002815260200161189960f11b81525081565b60405180604001604052806002815260200161323360f01b81525081565b60405180604001604052806002815260200161353160f01b81525081565b60405180604001604052806002815260200161036360f41b81525081565b60405180604001604052806002815260200161034360f41b81525081565b60405180604001604052806002815260200161363960f01b81525081565b60405180604001604052806002815260200161363760f01b81525081565b6040518060400160405280600281526020016106e760f31b81525081565b60405180604001604052806002815260200161313760f01b81525081565b604051806040016040528060028152602001610ccd60f21b81525081565b60405180604001604052806002815260200161062760f31b81525081565b60405180604001604052806002815260200161323960f01b81525081565b60405180604001604052806002815260200161353560f01b81525081565b604051806040016040528060018152602001603960f81b81525081565b604051806040016040528060028152602001610d0d60f21b81525081565b60405180604001604052806002815260200161363560f01b81525081565b604051806040016040528060018152602001601960f91b81525081565b604051806040016040528060018152602001603160f81b81525081565b60405180604001604052806002815260200161313560f01b81525081565b60405180604001604052806002815260200161373160f01b81525081565b60405180604001604052806002815260200161333160f01b81525081565b60405180604001604052806002815260200161313360f01b81525081565b604051806040016040528060018152602001603560f81b81525081565b60405180604001604052806002815260200161333360f01b81525081565b60405180604001604052806002815260200161323760f01b81525081565b604051806040016040528060028152602001610dcd60f21b81525081565b60405180604001604052806002815260200161191960f11b81525081565b6040518060400160405280600281526020016106c760f31b81525081565b60405180604001604052806002815260200161333760f01b81525081565b60405180604001604052806002815260200161363160f01b81525081565b60405180604001604052806002815260200161343560f01b81525081565b60405180604001604052806002815260200161373960f01b81525081565b604051806040016040528060028152602001611b9b60f11b81525081565b604051806040016040528060028152602001611b1b60f11b81525081565b604051806040016040528060028152602001610d8d60f21b81525081565b60405180604001604052806002815260200161343160f01b81525081565b604051806040016040528060018152602001603360f81b81525081565b60405180604001604052806002815260200161373360f01b81525081565b60405180604001604052806002815260200161189b60f11b81525081565b60405180604001604052806002815260200161199b60f11b81525081565b60405180604001604052806002815260200161032360f41b81525081565b60405180604001604052806002815260200161353960f01b81525081565b60405180604001604052806002815260200161353760f01b81525081565b60405180604001604052806002815260200161343760f01b81525081565b60405180604001604052806002815260200161363360f01b81525081565b60405180604001604052806002815260200161333560f01b81525081565b60405180604001604052806002815260200161353360f01b81525081565b604051806040016040528060018152602001601b60f91b81525081565b604051806040016040528060028152602001611b1960f11b81525081565b604051806040016040528060028152602001611a1960f11b81525081565b60405180604001604052806002815260200161199960f11b8152508156fea264697066735822122031dc367ad4466b8be1fcde1dc598e31bd7cee9829694af2139923ac0db7f5faa64736f6c634300060c0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061048a5760003560e01c80636ba4271f11610261578063cdad445a11610150578063e2c16d69116100cd578063f11c672011610091578063f11c67201461075c578063f3d9cc1114610764578063f902735d1461076c578063fb681def14610774578063fe75fd261461077c5761048a565b8063e2c16d6914610734578063e66327481461073c578063e7bf91b314610744578063eca85d3a1461074c578063f0473259146107545761048a565b8063d7510e0c11610114578063d7510e0c1461070c578063d7b079aa14610714578063daf235471461071c578063e0d7dfd714610724578063e29425dc1461072c5761048a565b8063cdad445a146106e4578063d3e370ee146106ec578063d44e8e88146106f4578063d57bb964146106fc578063d6f681b6146107045761048a565b8063a39ed4ff116101de578063b89652cd116101a2578063b89652cd146106bc578063bd013f5b146106c4578063c09e2618146106cc578063c2d628df146106d4578063cc5fc44c146106dc5761048a565b8063a39ed4ff14610694578063a84402411461069c578063ac753236146106a4578063b36a2cf3146106ac578063b72e40c7146106b45761048a565b80637865a627116102255780637865a6271461066c578063871938a81461067457806391a9fb181461067c5780639be4f03a14610684578063a2fbc8ad1461068c5761048a565b80636ba4271f146106445780636d422aa11461064c578063708b8dd31461065457806371a629da1461065c57806376f19030146106645761048a565b80633aa786a81161037d5780634a529f91116102fa578063614cf6a1116102be578063614cf6a11461061c578063637a5a12146106245780636422b2571461062c57806365344799146106345780636ab5e6151461063c5761048a565b80634a529f91146105f45780634fe4f1ab146105fc57806355bab12c146106045780635a9786d41461060c5780635e869ff1146106145761048a565b80634349e3d8116103415780634349e3d8146105cc57806344942004146105d457806344dc4f70146105dc57806347d25300146105e45780634927c63a146105ec5761048a565b80633aa786a8146105a45780633b5d25aa146105ac5780633f5d6ec8146105b4578063407374a4146105bc57806341b40ba5146105c45761048a565b806322a6f08e1161040b578063333e8ea8116103cf578063333e8ea81461057c57806335a9d21d1461058457806336565ab11461058c5780633872b0ad14610594578063390f34ba1461059c5761048a565b806322a6f08e146105545780632ace698a1461055c5780632b34c349146105645780632b9c57f61461056c5780632ea347b0146105745761048a565b80631291a38b116104525780631291a38b1461052c578063179476c5146105345780631befa78d1461053c5780631ea7c604146105445780631ec68b1d1461054c5761048a565b806302454ad31461048f578063029d23441461050c57806306f355ad146105145780630b8fd5881461051c5780630f5ee48214610524575b600080fd5b610497610784565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104d15781810151838201526020016104b9565b50505050905090810190601f1680156104fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104976107a2565b6104976107c0565b6104976107de565b6104976107fc565b61049761081a565b610497610838565b610497610855565b610497610873565b610497610891565b6104976108af565b6104976108cd565b6104976108eb565b610497610909565b610497610927565b610497610945565b610497610963565b610497610981565b61049761099e565b6104976109bc565b6104976109da565b6104976109f8565b610497610a15565b610497610a33565b610497610a51565b610497610a6f565b610497610a8d565b610497610aab565b610497610ac9565b610497610ae7565b610497610b05565b610497610b23565b610497610b41565b610497610b5f565b610497610b7d565b610497610b9b565b610497610bb9565b610497610bd7565b610497610bf5565b610497610c13565b610497610c31565b610497610c4f565b610497610c6d565b610497610c8a565b610497610ca8565b610497610cc6565b610497610ce3565b610497610d00565b610497610d1e565b610497610d3c565b610497610d5a565b610497610d78565b610497610d95565b610497610db3565b610497610dd1565b610497610def565b610497610e0d565b610497610e2b565b610497610e49565b610497610e67565b610497610e85565b610497610ea3565b610497610ec1565b610497610edf565b610497610efd565b610497610f1b565b610497610f38565b610497610f56565b610497610f74565b610497610f92565b610497610fb0565b610497610fce565b610497610fec565b61049761100a565b610497611028565b610497611046565b610497611064565b610497611081565b61049761109f565b6104976110bd565b60405180604001604052806002815260200161373760f01b81525081565b60405180604001604052806002815260200161068760f31b81525081565b60405180604001604052806002815260200161033360f41b81525081565b60405180604001604052806002815260200161191b60f11b81525081565b60405180604001604052806002815260200161343960f01b81525081565b604051806040016040528060028152602001611a9b60f11b81525081565b604051806040016040528060018152602001600d60fa1b81525081565b60405180604001604052806002815260200161038360f41b81525081565b604051806040016040528060028152602001611a1b60f11b81525081565b60405180604001604052806002815260200161031360f41b81525081565b604051806040016040528060028152602001610c8d60f21b81525081565b60405180604001604052806002815260200161313160f01b81525081565b60405180604001604052806002815260200161064760f31b81525081565b6040518060400160405280600281526020016106a760f31b81525081565b604051806040016040528060028152602001610d4d60f21b81525081565b604051806040016040528060028152602001611b9960f11b81525081565b60405180604001604052806002815260200161313960f01b81525081565b604051806040016040528060018152602001603760f81b81525081565b60405180604001604052806002815260200161333960f01b81525081565b60405180604001604052806002815260200161323560f01b81525081565b604051806040016040528060028152602001610c4d60f21b81525081565b604051806040016040528060018152602001600760fb1b81525081565b60405180604001604052806002815260200161037360f41b81525081565b60405180604001604052806002815260200161343360f01b81525081565b60405180604001604052806002815260200161066760f31b81525081565b60405180604001604052806002815260200161035360f41b81525081565b604051806040016040528060028152602001611a9960f11b81525081565b60405180604001604052806002815260200161323160f01b81525081565b60405180604001604052806002815260200161373560f01b81525081565b60405180604001604052806002815260200161189960f11b81525081565b60405180604001604052806002815260200161323360f01b81525081565b60405180604001604052806002815260200161353160f01b81525081565b60405180604001604052806002815260200161036360f41b81525081565b60405180604001604052806002815260200161034360f41b81525081565b60405180604001604052806002815260200161363960f01b81525081565b60405180604001604052806002815260200161363760f01b81525081565b6040518060400160405280600281526020016106e760f31b81525081565b60405180604001604052806002815260200161313760f01b81525081565b604051806040016040528060028152602001610ccd60f21b81525081565b60405180604001604052806002815260200161062760f31b81525081565b60405180604001604052806002815260200161323960f01b81525081565b60405180604001604052806002815260200161353560f01b81525081565b604051806040016040528060018152602001603960f81b81525081565b604051806040016040528060028152602001610d0d60f21b81525081565b60405180604001604052806002815260200161363560f01b81525081565b604051806040016040528060018152602001601960f91b81525081565b604051806040016040528060018152602001603160f81b81525081565b60405180604001604052806002815260200161313560f01b81525081565b60405180604001604052806002815260200161373160f01b81525081565b60405180604001604052806002815260200161333160f01b81525081565b60405180604001604052806002815260200161313360f01b81525081565b604051806040016040528060018152602001603560f81b81525081565b60405180604001604052806002815260200161333360f01b81525081565b60405180604001604052806002815260200161323760f01b81525081565b604051806040016040528060028152602001610dcd60f21b81525081565b60405180604001604052806002815260200161191960f11b81525081565b6040518060400160405280600281526020016106c760f31b81525081565b60405180604001604052806002815260200161333760f01b81525081565b60405180604001604052806002815260200161363160f01b81525081565b60405180604001604052806002815260200161343560f01b81525081565b60405180604001604052806002815260200161373960f01b81525081565b604051806040016040528060028152602001611b9b60f11b81525081565b604051806040016040528060028152602001611b1b60f11b81525081565b604051806040016040528060028152602001610d8d60f21b81525081565b60405180604001604052806002815260200161343160f01b81525081565b604051806040016040528060018152602001603360f81b81525081565b60405180604001604052806002815260200161373360f01b81525081565b60405180604001604052806002815260200161189b60f11b81525081565b60405180604001604052806002815260200161199b60f11b81525081565b60405180604001604052806002815260200161032360f41b81525081565b60405180604001604052806002815260200161353960f01b81525081565b60405180604001604052806002815260200161353760f01b81525081565b60405180604001604052806002815260200161343760f01b81525081565b60405180604001604052806002815260200161363360f01b81525081565b60405180604001604052806002815260200161333560f01b81525081565b60405180604001604052806002815260200161353360f01b81525081565b604051806040016040528060018152602001601b60f91b81525081565b604051806040016040528060028152602001611b1960f11b81525081565b604051806040016040528060028152602001611a1960f11b81525081565b60405180604001604052806002815260200161199960f11b8152508156fea264697066735822122031dc367ad4466b8be1fcde1dc598e31bd7cee9829694af2139923ac0db7f5faa64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/FlashLiquidationAdapter.json b/eth_defi/abi/aave_v2/FlashLiquidationAdapter.json new file mode 100644 index 00000000..be0c5103 --- /dev/null +++ b/eth_defi/abi/aave_v2/FlashLiquidationAdapter.json @@ -0,0 +1,369 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FlashLiquidationAdapter", + "sourceName": "contracts/adapters/FlashLiquidationAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + }, + { + "internalType": "contract IUniswapV2Router02", + "name": "uniswapRouter", + "type": "address" + }, + { + "internalType": "address", + "name": "wethAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FLASHLOAN_PREMIUM_TOTAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNISWAP_ROUTER", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "USD_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WETH_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101206040523480156200001257600080fd5b5060405162002ce938038062002ce98339810160408190526200003591620001fd565b82828282806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb9190620001d7565b60601b6001600160601b03191660a052506000620000e8620001d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350826001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a79190620001d7565b6001600160601b0319606091821b811660e05292811b8316610100521b1660c052506200026992505050565b3390565b600060208284031215620001e9578081fd5b8151620001f68162000250565b9392505050565b60008060006060848603121562000212578182fd5b83516200021f8162000250565b6020850151909350620002328162000250565b6040850151909250620002458162000250565b809150509250925092565b6001600160a01b03811681146200026657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6129d262000317600039806106235280610f645280611058528061155a528061158f52806117235280611b605280611c515250806103845280611d9b5250806103315280610e3e5280610e7b5280610ee5528061160d5280611a3a5280611a775280611ae1525080610441528061059e52806108c352806109565280610b9652508061035552506129d26000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c80638da5cb5b11610097578063baf7fa9911610066578063baf7fa9914610199578063cdf58cd6146101bd578063d8264920146101d0578063f2fde38b146101d8576100f4565b80638da5cb5b14610161578063920f5c84146101695780639d1211bf14610189578063b4dcfc7714610191576100f4565b8063074b2e43116100d3578063074b2e431461013457806332e4b2861461014957806338013f0214610151578063715018a614610159576100f4565b8062ae3bf8146100f9578063040141e51461010e5780630542975c1461012c575b600080fd5b61010c6101073660046121da565b6101eb565b005b61011661032f565b60405161012391906124e7565b60405180910390f35b610116610353565b61013c610377565b604051610123919061286f565b61013c61037c565b610116610382565b61010c6103a6565b610116610425565b61017c610177366004612260565b610434565b604051610123919061258b565b610116610584565b61011661059c565b6101ac6101a7366004612426565b6105c0565b6040516101239594939291906128cd565b6101ac6101cb366004612426565b610606565b610116610621565b61010c6101e63660046121da565b610645565b6101f36106fb565b6000546001600160a01b039081169116146102295760405162461bcd60e51b815260040161022090612736565b60405180910390fd5b806001600160a01b031663a9059cbb610240610425565b6040516370a0823160e01b81526001600160a01b038516906370a082319061026c9030906004016124e7565b60206040518083038186803b15801561028457600080fd5b505afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061240e565b6040518363ffffffff1660e01b81526004016102d9929190612572565b602060405180830381600087803b1580156102f357600080fd5b505af1158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b91906123f2565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103ae6106fb565b6000546001600160a01b039081169116146103db5760405162461bcd60e51b815260040161022090612736565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461047e5760405162461bcd60e51b8152600401610220906125c9565b6104866120ef565b6104c584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106ff92505050565b905060018a14801561050d575080602001516001600160a01b03168b8b60008181106104ed57fe5b905060200201602081019061050291906121da565b6001600160a01b0316145b6105295760405162461bcd60e51b81526004016102209061276b565b610573816000015182602001518360400151846060015185608001518e8e600081811061055257fe5b905060200201358d8d600081811061056657fe5b905060200201358c610765565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105d061211d565b6105db88888b610cac565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b600080600080606061061661211d565b6105db88888b611269565b7f000000000000000000000000000000000000000000000000000000000000000081565b61064d6106fb565b6000546001600160a01b0390811691161461067a5760405162461bcd60e51b815260040161022090612736565b6001600160a01b0381166106a05760405162461bcd60e51b815260040161022090612600565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6107076120ef565b60008060008060008680602001905181019061072391906121f6565b6040805160a0810182526001600160a01b0396871681529486166020860152929094169183019190915260608201529015156080820152979650505050505050565b61076d61214c565b6040516370a0823160e01b81526001600160a01b038a16906370a08231906107999030906004016124e7565b60206040518083038186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e9919061240e565b60408201526001600160a01b0389811690891614610890576040516370a0823160e01b81526001600160a01b038916906370a082319061082d9030906004016124e7565b60206040518083038186803b15801561084557600080fd5b505afa158015610859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087d919061240e565b80825261088a9085611443565b60e08201525b61089a848461148e565b608082015260405163095ea7b360e01b81526001600160a01b0389169063095ea7b3906108ed907f0000000000000000000000000000000000000000000000000000000000000000908a90600401612572565b602060405180830381600087803b15801561090757600080fd5b505af115801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f91906123f2565b5060405162a718a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062a718a990610993908c908c908c908c90600090600401612515565b600060405180830381600087803b1580156109ad57600080fd5b505af11580156109c1573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b038c1691506370a08231906109f49030906004016124e7565b60206040518083038186803b158015610a0c57600080fd5b505afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a44919061240e565b9050610a5d82604001518261144390919063ffffffff16565b60608301526001600160a01b038a8116908a1614610b58576040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610aa49030906004016124e7565b60206040518083038186803b158015610abc57600080fd5b505afa158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af4919061240e565b9050610b0d8360e001518261144390919063ffffffff16565b6020840181905260608401516080850151610b38928e928e929091610b329190611443565b8b6114b3565b60a084018190526060840151610b4d91611443565b60c084015250610b6d565b6060820151610b679085611443565b60c08301525b608082015160405163095ea7b360e01b81526001600160a01b038b169163095ea7b391610bbe917f000000000000000000000000000000000000000000000000000000000000000091600401612572565b602060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906123f2565b5060c082015115610ca05760c082015160405163a9059cbb60e01b81526001600160a01b038c169163a9059cbb91610c4c918791600401612572565b602060405180830381600087803b158015610c6657600080fd5b505af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906123f2565b505b50505050505050505050565b610cb461211d565b6000610cd7610cd0612710610cca866009611847565b90611881565b8490611443565b9050836001600160a01b0316856001600160a01b03161415610da3576000610cfe866118c3565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610d3257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610d7087610cca87670de0b6b3a7640000611847565b8152602001610d8089888661193f565b8152602001610d9089868661193f565b8152602001828152509350505050611262565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610dd157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610dff57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015610eb057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561101c578881600081518110610ec357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f1157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110610f3f57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90610f9d9088908590600401612878565b60006040518083038186803b158015610fb557600080fd5b505afa925050508015610fea57506040513d6000823e601f3d908101601f19168201604052610fe7919081019061235d565b60015b61101457604080516003808252608082019092529060208201606080368337019050509150611017565b91505b61103e565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f9061108f9089908990600401612878565b60006040518083038186803b1580156110a757600080fd5b505afa9250505080156110dc57506040513d6000823e601f3d908101601f191682016040526110d9919081019061235d565b60015b61111c5760408051600280825260608201835290916020830190803683370190505093508260028151811061110d57fe5b60200260200101519050611182565b8094508460018151811061112c57fe5b60200260200101518460028151811061114157fe5b602002602001015111611168578460018151811061115b57fe5b602002602001015161117e565b8360028151811061117557fe5b60200260200101515b9150505b600061118d8b6118c3565b9050600061119a8b6118c3565b905060006111cf6111af85600a86900a611847565b610cca600a85900a6111c98d670de0b6b3a7640000611847565b90611847565b90506040518060a001604052808581526020018281526020016111f38f8e8761193f565b81526020016112038e878661193f565b81526020018515611236578860018151811061121b57fe5b6020026020010151861461122f5786611231565b895b611254565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61127161211d565b826001600160a01b0316846001600160a01b031614156113475760006112a86112a1612710610cca866009611847565b849061148e565b905060006112b5866118c3565b604080516001808252818301909252919250606091906020808301908036833701905050905086816000815181106112e957fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161132785610cca89670de0b6b3a7640000611847565b815260200161133789868661193f565b8152602001610d9089888661193f565b606080611355868686611998565b9150915060006113af61138c612710610cca60098760008151811061137657fe5b602002602001015161184790919063ffffffff16565b8460008151811061139957fe5b602002602001015161148e90919063ffffffff16565b905060006113bc886118c3565b905060006113c9886118c3565b905060006113f86113de85600a85900a611847565b610cca600a86900a6111c98c670de0b6b3a7640000611847565b90506040518060a0016040528085815260200182815260200161141c8c878761193f565b815260200161142c8b8b8661193f565b815260200195909552509298975050505050505050565b600061148583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d55565b90505b92915050565b6000828201838110156114855760405162461bcd60e51b815260040161022090612646565b6000806114bf876118c3565b905060006114cc876118c3565b905060006114d989611d81565b905060006114e689611d81565b9050600061152a6114fb612710610bb861148e565b61152461150c86600a89900a611847565b610cca61151d87600a8c900a611847565b8d90611847565b90611e20565b905080891061154b5760405162461bcd60e51b8152600401610220906126b2565b6115806001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611e92565b6115b46001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611e92565b6060871561168c576040805160038082526080820190925290602082016060803683370190505090508b816000815181106115eb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a8160028151811061166757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611709565b60408051600280825260608201835290916020830190803683370190505090508b816000815181106116ba57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a816001815181106116e857fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611760908d908f90879030904290600401612891565b600060405180830381600087803b15801561177a57600080fd5b505af115801561178e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117b6919081019061235d565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d836000815181106117e857fe5b60200260200101518460018651038151811061180057fe5b60200260200101516040516118189493929190612549565b60405180910390a18060008151811061182d57fe5b602002602001015197505050505050505095945050505050565b60008261185657506000611488565b8282028284828161186357fe5b04146114855760405162461bcd60e51b8152600401610220906126f5565b600061148583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f91565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156118fe57600080fd5b505afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190612467565b60ff1692915050565b60008061195f7310f7fc1f91ba351f9c629c5947ad69bd03c05b96611d81565b9050600061196c86611d81565b905061198e670de0b6b3a7640000610cca846111c9600a89900a838b88611847565b9695505050505050565b60408051600280825260608281019093528291829181602001602082028036833701905050905085816000815181106119cd57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106119fb57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015611aac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b15611c18578881600081518110611abf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611b0d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110611b3b57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca7490611b99908a908590600401612878565b60006040518083038186803b158015611bb157600080fd5b505afa925050508015611be657506040513d6000823e601f3d908101601f19168201604052611be3919081019061235d565b60015b611c1057604080516003808252608082019092529060208201606080368337019050509150611c13565b91505b611c3a565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca7490611c88908a908890600401612878565b60006040518083038186803b158015611ca057600080fd5b505afa925050508015611cd557506040513d6000823e601f3d908101601f19168201604052611cd2919081019061235d565b60015b611ce6579094509250611d4d915050565b80935083600081518110611cf657fe5b602002602001015183600081518110611d0b57fe5b6020026020010151108015611d35575082600081518110611d2857fe5b6020026020010151600014155b611d40578385611d43565b82825b9650965050505050505b935093915050565b60008184841115611d795760405162461bcd60e51b81526004016102209190612596565b505050900390565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790611dd09085906004016124e7565b60206040518083038186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611488919061240e565b6000821580611e2d575081155b15611e3a57506000611488565b816113881981611e4657fe5b0483111560405180604001604052806002815260200161068760f31b81525090611e835760405162461bcd60e51b81526004016102209190612596565b50506127109102611388010490565b801580611f1a5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611ec890309086906004016124fb565b60206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f18919061240e565b155b611f365760405162461bcd60e51b8152600401610220906127e2565b611f8c8363095ea7b360e01b8484604051602401611f55929190612572565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fc8565b505050565b60008183611fb25760405162461bcd60e51b81526004016102209190612596565b506000838581611fbe57fe5b0495945050505050565b611fda826001600160a01b03166120b3565b611ff65760405162461bcd60e51b815260040161022090612838565b60006060836001600160a01b03168360405161201291906124cb565b6000604051808303816000865af19150503d806000811461204f576040519150601f19603f3d011682016040523d82523d6000602084013e612054565b606091505b5091509150816120765760405162461bcd60e51b81526004016102209061267d565b8051156120ad578080602001905181019061209191906123f2565b6120ad5760405162461bcd60e51b815260040161022090612798565b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906120e757508115155b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008083601f8401126121a2578182fd5b50813567ffffffffffffffff8111156121b9578182fd5b60208301915083602080830285010111156121d357600080fd5b9250929050565b6000602082840312156121eb578081fd5b813561148581612976565b600080600080600060a0868803121561220d578081fd5b855161221881612976565b602087015190955061222981612976565b604087015190945061223a81612976565b6060870151608088015191945092506122528161298e565b809150509295509295909350565b600080600080600080600080600060a08a8c03121561227d578384fd5b893567ffffffffffffffff80821115612294578586fd5b6122a08d838e01612191565b909b50995060208c01359150808211156122b8578586fd5b6122c48d838e01612191565b909950975060408c01359150808211156122dc578586fd5b6122e88d838e01612191565b909750955060608c013591506122fd82612976565b90935060808b01359080821115612312578384fd5b818c0191508c601f830112612325578384fd5b813581811115612333578485fd5b8d6020828501011115612344578485fd5b6020830194508093505050509295985092959850929598565b6000602080838503121561236f578182fd5b825167ffffffffffffffff811115612385578283fd5b8301601f81018513612395578283fd5b80516123a86123a38261292a565b612903565b81815283810190838501858402850186018910156123c4578687fd5b8694505b838510156123e65780518352600194909401939185019185016123c8565b50979650505050505050565b600060208284031215612403578081fd5b81516114858161298e565b60006020828403121561241f578081fd5b5051919050565b60008060006060848603121561243a578283fd5b83359250602084013561244c81612976565b9150604084013561245c81612976565b809150509250925092565b600060208284031215612478578081fd5b815160ff81168114611485578182fd5b6000815180845260208085019450808401835b838110156124c05781516001600160a01b03168752958201959082019060010161249b565b509495945050505050565b600082516124dd81846020870161294a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526125b581604085016020870161294a565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526120e76040830184612488565b600086825285602083015260a060408301526128b060a0830186612488565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526128f860a0830184612488565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561292257600080fd5b604052919050565b600067ffffffffffffffff821115612940578081fd5b5060209081020190565b60005b8381101561296557818101518382015260200161294d565b838111156120ad5750506000910152565b6001600160a01b038116811461298b57600080fd5b50565b801515811461298b57600080fdfea264697066735822122084a63ae600414c011c72b5b52e9262d5080ecb0fe2834ceca056f8f5e9a3adda64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f45760003560e01c80638da5cb5b11610097578063baf7fa9911610066578063baf7fa9914610199578063cdf58cd6146101bd578063d8264920146101d0578063f2fde38b146101d8576100f4565b80638da5cb5b14610161578063920f5c84146101695780639d1211bf14610189578063b4dcfc7714610191576100f4565b8063074b2e43116100d3578063074b2e431461013457806332e4b2861461014957806338013f0214610151578063715018a614610159576100f4565b8062ae3bf8146100f9578063040141e51461010e5780630542975c1461012c575b600080fd5b61010c6101073660046121da565b6101eb565b005b61011661032f565b60405161012391906124e7565b60405180910390f35b610116610353565b61013c610377565b604051610123919061286f565b61013c61037c565b610116610382565b61010c6103a6565b610116610425565b61017c610177366004612260565b610434565b604051610123919061258b565b610116610584565b61011661059c565b6101ac6101a7366004612426565b6105c0565b6040516101239594939291906128cd565b6101ac6101cb366004612426565b610606565b610116610621565b61010c6101e63660046121da565b610645565b6101f36106fb565b6000546001600160a01b039081169116146102295760405162461bcd60e51b815260040161022090612736565b60405180910390fd5b806001600160a01b031663a9059cbb610240610425565b6040516370a0823160e01b81526001600160a01b038516906370a082319061026c9030906004016124e7565b60206040518083038186803b15801561028457600080fd5b505afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061240e565b6040518363ffffffff1660e01b81526004016102d9929190612572565b602060405180830381600087803b1580156102f357600080fd5b505af1158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b91906123f2565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103ae6106fb565b6000546001600160a01b039081169116146103db5760405162461bcd60e51b815260040161022090612736565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461047e5760405162461bcd60e51b8152600401610220906125c9565b6104866120ef565b6104c584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106ff92505050565b905060018a14801561050d575080602001516001600160a01b03168b8b60008181106104ed57fe5b905060200201602081019061050291906121da565b6001600160a01b0316145b6105295760405162461bcd60e51b81526004016102209061276b565b610573816000015182602001518360400151846060015185608001518e8e600081811061055257fe5b905060200201358d8d600081811061056657fe5b905060200201358c610765565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105d061211d565b6105db88888b610cac565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b600080600080606061061661211d565b6105db88888b611269565b7f000000000000000000000000000000000000000000000000000000000000000081565b61064d6106fb565b6000546001600160a01b0390811691161461067a5760405162461bcd60e51b815260040161022090612736565b6001600160a01b0381166106a05760405162461bcd60e51b815260040161022090612600565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6107076120ef565b60008060008060008680602001905181019061072391906121f6565b6040805160a0810182526001600160a01b0396871681529486166020860152929094169183019190915260608201529015156080820152979650505050505050565b61076d61214c565b6040516370a0823160e01b81526001600160a01b038a16906370a08231906107999030906004016124e7565b60206040518083038186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e9919061240e565b60408201526001600160a01b0389811690891614610890576040516370a0823160e01b81526001600160a01b038916906370a082319061082d9030906004016124e7565b60206040518083038186803b15801561084557600080fd5b505afa158015610859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087d919061240e565b80825261088a9085611443565b60e08201525b61089a848461148e565b608082015260405163095ea7b360e01b81526001600160a01b0389169063095ea7b3906108ed907f0000000000000000000000000000000000000000000000000000000000000000908a90600401612572565b602060405180830381600087803b15801561090757600080fd5b505af115801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f91906123f2565b5060405162a718a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062a718a990610993908c908c908c908c90600090600401612515565b600060405180830381600087803b1580156109ad57600080fd5b505af11580156109c1573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b038c1691506370a08231906109f49030906004016124e7565b60206040518083038186803b158015610a0c57600080fd5b505afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a44919061240e565b9050610a5d82604001518261144390919063ffffffff16565b60608301526001600160a01b038a8116908a1614610b58576040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610aa49030906004016124e7565b60206040518083038186803b158015610abc57600080fd5b505afa158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af4919061240e565b9050610b0d8360e001518261144390919063ffffffff16565b6020840181905260608401516080850151610b38928e928e929091610b329190611443565b8b6114b3565b60a084018190526060840151610b4d91611443565b60c084015250610b6d565b6060820151610b679085611443565b60c08301525b608082015160405163095ea7b360e01b81526001600160a01b038b169163095ea7b391610bbe917f000000000000000000000000000000000000000000000000000000000000000091600401612572565b602060405180830381600087803b158015610bd857600080fd5b505af1158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906123f2565b5060c082015115610ca05760c082015160405163a9059cbb60e01b81526001600160a01b038c169163a9059cbb91610c4c918791600401612572565b602060405180830381600087803b158015610c6657600080fd5b505af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906123f2565b505b50505050505050505050565b610cb461211d565b6000610cd7610cd0612710610cca866009611847565b90611881565b8490611443565b9050836001600160a01b0316856001600160a01b03161415610da3576000610cfe866118c3565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610d3257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610d7087610cca87670de0b6b3a7640000611847565b8152602001610d8089888661193f565b8152602001610d9089868661193f565b8152602001828152509350505050611262565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610dd157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610dff57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015610eb057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561101c578881600081518110610ec357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610f1157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110610f3f57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90610f9d9088908590600401612878565b60006040518083038186803b158015610fb557600080fd5b505afa925050508015610fea57506040513d6000823e601f3d908101601f19168201604052610fe7919081019061235d565b60015b61101457604080516003808252608082019092529060208201606080368337019050509150611017565b91505b61103e565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f9061108f9089908990600401612878565b60006040518083038186803b1580156110a757600080fd5b505afa9250505080156110dc57506040513d6000823e601f3d908101601f191682016040526110d9919081019061235d565b60015b61111c5760408051600280825260608201835290916020830190803683370190505093508260028151811061110d57fe5b60200260200101519050611182565b8094508460018151811061112c57fe5b60200260200101518460028151811061114157fe5b602002602001015111611168578460018151811061115b57fe5b602002602001015161117e565b8360028151811061117557fe5b60200260200101515b9150505b600061118d8b6118c3565b9050600061119a8b6118c3565b905060006111cf6111af85600a86900a611847565b610cca600a85900a6111c98d670de0b6b3a7640000611847565b90611847565b90506040518060a001604052808581526020018281526020016111f38f8e8761193f565b81526020016112038e878661193f565b81526020018515611236578860018151811061121b57fe5b6020026020010151861461122f5786611231565b895b611254565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61127161211d565b826001600160a01b0316846001600160a01b031614156113475760006112a86112a1612710610cca866009611847565b849061148e565b905060006112b5866118c3565b604080516001808252818301909252919250606091906020808301908036833701905050905086816000815181106112e957fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161132785610cca89670de0b6b3a7640000611847565b815260200161133789868661193f565b8152602001610d9089888661193f565b606080611355868686611998565b9150915060006113af61138c612710610cca60098760008151811061137657fe5b602002602001015161184790919063ffffffff16565b8460008151811061139957fe5b602002602001015161148e90919063ffffffff16565b905060006113bc886118c3565b905060006113c9886118c3565b905060006113f86113de85600a85900a611847565b610cca600a86900a6111c98c670de0b6b3a7640000611847565b90506040518060a0016040528085815260200182815260200161141c8c878761193f565b815260200161142c8b8b8661193f565b815260200195909552509298975050505050505050565b600061148583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d55565b90505b92915050565b6000828201838110156114855760405162461bcd60e51b815260040161022090612646565b6000806114bf876118c3565b905060006114cc876118c3565b905060006114d989611d81565b905060006114e689611d81565b9050600061152a6114fb612710610bb861148e565b61152461150c86600a89900a611847565b610cca61151d87600a8c900a611847565b8d90611847565b90611e20565b905080891061154b5760405162461bcd60e51b8152600401610220906126b2565b6115806001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611e92565b6115b46001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611e92565b6060871561168c576040805160038082526080820190925290602082016060803683370190505090508b816000815181106115eb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a8160028151811061166757fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611709565b60408051600280825260608201835290916020830190803683370190505090508b816000815181106116ba57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a816001815181106116e857fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611760908d908f90879030904290600401612891565b600060405180830381600087803b15801561177a57600080fd5b505af115801561178e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117b6919081019061235d565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d836000815181106117e857fe5b60200260200101518460018651038151811061180057fe5b60200260200101516040516118189493929190612549565b60405180910390a18060008151811061182d57fe5b602002602001015197505050505050505095945050505050565b60008261185657506000611488565b8282028284828161186357fe5b04146114855760405162461bcd60e51b8152600401610220906126f5565b600061148583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f91565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156118fe57600080fd5b505afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190612467565b60ff1692915050565b60008061195f7310f7fc1f91ba351f9c629c5947ad69bd03c05b96611d81565b9050600061196c86611d81565b905061198e670de0b6b3a7640000610cca846111c9600a89900a838b88611847565b9695505050505050565b60408051600280825260608281019093528291829181602001602082028036833701905050905085816000815181106119cd57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106119fb57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614158015611aac57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b15611c18578881600081518110611abf57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611b0d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508781600281518110611b3b57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca7490611b99908a908590600401612878565b60006040518083038186803b158015611bb157600080fd5b505afa925050508015611be657506040513d6000823e601f3d908101601f19168201604052611be3919081019061235d565b60015b611c1057604080516003808252608082019092529060208201606080368337019050509150611c13565b91505b611c3a565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca7490611c88908a908890600401612878565b60006040518083038186803b158015611ca057600080fd5b505afa925050508015611cd557506040513d6000823e601f3d908101601f19168201604052611cd2919081019061235d565b60015b611ce6579094509250611d4d915050565b80935083600081518110611cf657fe5b602002602001015183600081518110611d0b57fe5b6020026020010151108015611d35575082600081518110611d2857fe5b6020026020010151600014155b611d40578385611d43565b82825b9650965050505050505b935093915050565b60008184841115611d795760405162461bcd60e51b81526004016102209190612596565b505050900390565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790611dd09085906004016124e7565b60206040518083038186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611488919061240e565b6000821580611e2d575081155b15611e3a57506000611488565b816113881981611e4657fe5b0483111560405180604001604052806002815260200161068760f31b81525090611e835760405162461bcd60e51b81526004016102209190612596565b50506127109102611388010490565b801580611f1a5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611ec890309086906004016124fb565b60206040518083038186803b158015611ee057600080fd5b505afa158015611ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f18919061240e565b155b611f365760405162461bcd60e51b8152600401610220906127e2565b611f8c8363095ea7b360e01b8484604051602401611f55929190612572565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fc8565b505050565b60008183611fb25760405162461bcd60e51b81526004016102209190612596565b506000838581611fbe57fe5b0495945050505050565b611fda826001600160a01b03166120b3565b611ff65760405162461bcd60e51b815260040161022090612838565b60006060836001600160a01b03168360405161201291906124cb565b6000604051808303816000865af19150503d806000811461204f576040519150601f19603f3d011682016040523d82523d6000602084013e612054565b606091505b5091509150816120765760405162461bcd60e51b81526004016102209061267d565b8051156120ad578080602001905181019061209191906123f2565b6120ad5760405162461bcd60e51b815260040161022090612798565b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906120e757508115155b949350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008083601f8401126121a2578182fd5b50813567ffffffffffffffff8111156121b9578182fd5b60208301915083602080830285010111156121d357600080fd5b9250929050565b6000602082840312156121eb578081fd5b813561148581612976565b600080600080600060a0868803121561220d578081fd5b855161221881612976565b602087015190955061222981612976565b604087015190945061223a81612976565b6060870151608088015191945092506122528161298e565b809150509295509295909350565b600080600080600080600080600060a08a8c03121561227d578384fd5b893567ffffffffffffffff80821115612294578586fd5b6122a08d838e01612191565b909b50995060208c01359150808211156122b8578586fd5b6122c48d838e01612191565b909950975060408c01359150808211156122dc578586fd5b6122e88d838e01612191565b909750955060608c013591506122fd82612976565b90935060808b01359080821115612312578384fd5b818c0191508c601f830112612325578384fd5b813581811115612333578485fd5b8d6020828501011115612344578485fd5b6020830194508093505050509295985092959850929598565b6000602080838503121561236f578182fd5b825167ffffffffffffffff811115612385578283fd5b8301601f81018513612395578283fd5b80516123a86123a38261292a565b612903565b81815283810190838501858402850186018910156123c4578687fd5b8694505b838510156123e65780518352600194909401939185019185016123c8565b50979650505050505050565b600060208284031215612403578081fd5b81516114858161298e565b60006020828403121561241f578081fd5b5051919050565b60008060006060848603121561243a578283fd5b83359250602084013561244c81612976565b9150604084013561245c81612976565b809150509250925092565b600060208284031215612478578081fd5b815160ff81168114611485578182fd5b6000815180845260208085019450808401835b838110156124c05781516001600160a01b03168752958201959082019060010161249b565b509495945050505050565b600082516124dd81846020870161294a565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282518060208401526125b581604085016020870161294a565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526120e76040830184612488565b600086825285602083015260a060408301526128b060a0830186612488565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526128f860a0830184612488565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561292257600080fd5b604052919050565b600067ffffffffffffffff821115612940578081fd5b5060209081020190565b60005b8381101561296557818101518382015260200161294d565b838111156120ad5750506000910152565b6001600160a01b038116811461298b57600080fd5b50565b801515811461298b57600080fdfea264697066735822122084a63ae600414c011c72b5b52e9262d5080ecb0fe2834ceca056f8f5e9a3adda64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/FlashLoanReceiverBase.json b/eth_defi/abi/aave_v2/FlashLoanReceiverBase.json new file mode 100644 index 00000000..afdde5b3 --- /dev/null +++ b/eth_defi/abi/aave_v2/FlashLoanReceiverBase.json @@ -0,0 +1,87 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FlashLoanReceiverBase", + "sourceName": "contracts/flashloan/base/FlashLoanReceiverBase.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/GenericLogic.json b/eth_defi/abi/aave_v2/GenericLogic.json new file mode 100644 index 00000000..937d29cd --- /dev/null +++ b/eth_defi/abi/aave_v2/GenericLogic.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GenericLogic", + "sourceName": "contracts/protocol/libraries/logic/GenericLogic.sol", + "abi": [ + { + "inputs": [], + "name": "HEALTH_FACTOR_LIQUIDATION_THRESHOLD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x610e75610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c8063c3525c2814610045578063e617042414610063575b600080fd5b61004d610083565b60405161005a9190610e36565b60405180910390f35b610076610071366004610c6f565b61008f565b60405161005a9190610d60565b670de0b6b3a764000081565b60006100a86100a336879003870187610cf7565b6102be565b15806100f057506001600160a01b0389166000908152602087905260409020600701546100ee90600160a01b900460ff166100e836889003880188610cf7565b906102e6565b155b156100fd575060016102b2565b610105610b69565b6001600160a01b038a16600090815260208890526040902061012690610348565b5084525060208301819052151590506101435760019150506102b2565b61015f8988610157368a90038a018a610cf7565b888888610373565b506080850152506060830181905260408301919091526101835760019150506102b2565b61021a8160000151600a0a6102148a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b81526004016101be9190610d4c565b60206040518083038186803b1580156101d657600080fd5b505afa1580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e9190610d34565b90610834565b90610875565b60a08201819052604082015161022f916108b7565b60c082018190526102445760009150506102b2565b6102838160c0015161021461026a84602001518560a0015161083490919063ffffffff16565b6080850151604086015161027d91610834565b906108b7565b60e0820181905260c082015160608301516000926102a29291906108f9565b670de0b6b3a76400001115925050505b98975050505050505050565b517f555555555555555555555555555555555555555555555555555555555555555516151590565b60006080821060405180604001604052806002815260200161373760f01b8152509061032e5760405162461bcd60e51b81526004016103259190610d6b565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000806000806000610383610bbe565b61038c8a610925565b156103aa576000806000806000199550955095509550955050610826565b600060e08201525b878160e0015110156107855760e08101516103ce908b9061092a565b6103d757610775565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061040e81610348565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916104609190600401610d4c565b60206040518083038186803b15801561047857600080fd5b505afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190610d34565b825260c0820151158015906104d0575060e08201516104d0908c906102e6565b156105ee578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016105189190610d4c565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610d34565b6040830181905260208301518351600092610587929161021491610834565b61012084015190915061059a908261097b565b61012084015260a08301516105c0906105b4908390610834565b6101608501519061097b565b61016084015260c08301516105e6906105da908390610834565b6101808501519061097b565b610180840152505b60e08201516105fe908c906109a0565b15610773578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016106469190610d4c565b60206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190610d34565b8260600181815250506107408160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016106e59190610d4c565b60206040518083038186803b1580156106fd57600080fd5b505afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610d34565b60608401519061097b565b606083018190526020830151835161076c92610760929161021491610834565b6101408401519061097b565b6101408301525b505b60e08101805160010190526103b2565b6000816101200151116107995760006107ae565b6101208101516101608201516107ae91610875565b6101608201526101208101516107c55760006107da565b6101208101516101808201516107da91610875565b61018082018190526101208201516101408301516107f7926108f9565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b60008261084357506000610342565b8282028284828161085057fe5b041461086e5760405162461bcd60e51b815260040161032590610df5565b9392505050565b600061086e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109f1565b600061086e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a28565b600082610909575060001961086e565b61091d836109178685610a54565b90610ac6565b949350505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906109695760405162461bcd60e51b81526004016103259190610d6b565b50509051600360029092021c16151590565b60008282018381101561086e5760405162461bcd60e51b815260040161032590610dbe565b60006080821060405180604001604052806002815260200161373760f01b815250906109df5760405162461bcd60e51b81526004016103259190610d6b565b50509051600160029092021c16151590565b60008183610a125760405162461bcd60e51b81526004016103259190610d6b565b506000838581610a1e57fe5b0495945050505050565b60008184841115610a4c5760405162461bcd60e51b81526004016103259190610d6b565b505050900390565b6000821580610a61575081155b15610a6e57506000610342565b816113881981610a7a57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ab75760405162461bcd60e51b81526004016103259190610d6b565b50506127109102611388010490565b604080518082019091526002815261035360f41b602082015260009082610b005760405162461bcd60e51b81526004016103259190610d6b565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115610b4a5760405162461bcd60e51b81526004016103259190610d6b565b508281670de0b6b3a764000086020181610b6057fe5b04949350505050565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b80356001600160a01b038116811461034257600080fd5b600080600080600080600080888a03610100811215610c8c578485fd5b610c968b8b610c58565b9850610ca58b60208c01610c58565b975060408a0135965060608a013595506020607f1982011215610cc6578485fd5b5060808901935060a0890135925060c08901359150610ce88a60e08b01610c58565b90509295985092959890939650565b600060208284031215610d08578081fd5b6040516020810181811067ffffffffffffffff82111715610d27578283fd5b6040529135825250919050565b600060208284031215610d45578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610d9757858101830151858201604001528201610d7b565b81811115610da85783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b9081526020019056fea264697066735822122047aa69503c94a30b23f780d1ed67a6c9e36db5ac7ebf61a7adec2bc53ea82e0b64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c8063c3525c2814610045578063e617042414610063575b600080fd5b61004d610083565b60405161005a9190610e36565b60405180910390f35b610076610071366004610c6f565b61008f565b60405161005a9190610d60565b670de0b6b3a764000081565b60006100a86100a336879003870187610cf7565b6102be565b15806100f057506001600160a01b0389166000908152602087905260409020600701546100ee90600160a01b900460ff166100e836889003880188610cf7565b906102e6565b155b156100fd575060016102b2565b610105610b69565b6001600160a01b038a16600090815260208890526040902061012690610348565b5084525060208301819052151590506101435760019150506102b2565b61015f8988610157368a90038a018a610cf7565b888888610373565b506080850152506060830181905260408301919091526101835760019150506102b2565b61021a8160000151600a0a6102148a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b81526004016101be9190610d4c565b60206040518083038186803b1580156101d657600080fd5b505afa1580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e9190610d34565b90610834565b90610875565b60a08201819052604082015161022f916108b7565b60c082018190526102445760009150506102b2565b6102838160c0015161021461026a84602001518560a0015161083490919063ffffffff16565b6080850151604086015161027d91610834565b906108b7565b60e0820181905260c082015160608301516000926102a29291906108f9565b670de0b6b3a76400001115925050505b98975050505050505050565b517f555555555555555555555555555555555555555555555555555555555555555516151590565b60006080821060405180604001604052806002815260200161373760f01b8152509061032e5760405162461bcd60e51b81526004016103259190610d6b565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000806000806000610383610bbe565b61038c8a610925565b156103aa576000806000806000199550955095509550955050610826565b600060e08201525b878160e0015110156107855760e08101516103ce908b9061092a565b6103d757610775565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061040e81610348565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916104609190600401610d4c565b60206040518083038186803b15801561047857600080fd5b505afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b09190610d34565b825260c0820151158015906104d0575060e08201516104d0908c906102e6565b156105ee578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016105189190610d4c565b60206040518083038186803b15801561053057600080fd5b505afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610d34565b6040830181905260208301518351600092610587929161021491610834565b61012084015190915061059a908261097b565b61012084015260a08301516105c0906105b4908390610834565b6101608501519061097b565b61016084015260c08301516105e6906105da908390610834565b6101808501519061097b565b610180840152505b60e08201516105fe908c906109a0565b15610773578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016106469190610d4c565b60206040518083038186803b15801561065e57600080fd5b505afa158015610672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106969190610d34565b8260600181815250506107408160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016106e59190610d4c565b60206040518083038186803b1580156106fd57600080fd5b505afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610d34565b60608401519061097b565b606083018190526020830151835161076c92610760929161021491610834565b6101408401519061097b565b6101408301525b505b60e08101805160010190526103b2565b6000816101200151116107995760006107ae565b6101208101516101608201516107ae91610875565b6101608201526101208101516107c55760006107da565b6101208101516101808201516107da91610875565b61018082018190526101208201516101408301516107f7926108f9565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b60008261084357506000610342565b8282028284828161085057fe5b041461086e5760405162461bcd60e51b815260040161032590610df5565b9392505050565b600061086e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506109f1565b600061086e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a28565b600082610909575060001961086e565b61091d836109178685610a54565b90610ac6565b949350505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906109695760405162461bcd60e51b81526004016103259190610d6b565b50509051600360029092021c16151590565b60008282018381101561086e5760405162461bcd60e51b815260040161032590610dbe565b60006080821060405180604001604052806002815260200161373760f01b815250906109df5760405162461bcd60e51b81526004016103259190610d6b565b50509051600160029092021c16151590565b60008183610a125760405162461bcd60e51b81526004016103259190610d6b565b506000838581610a1e57fe5b0495945050505050565b60008184841115610a4c5760405162461bcd60e51b81526004016103259190610d6b565b505050900390565b6000821580610a61575081155b15610a6e57506000610342565b816113881981610a7a57fe5b0483111560405180604001604052806002815260200161068760f31b81525090610ab75760405162461bcd60e51b81526004016103259190610d6b565b50506127109102611388010490565b604080518082019091526002815261035360f41b602082015260009082610b005760405162461bcd60e51b81526004016103259190610d6b565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115610b4a5760405162461bcd60e51b81526004016103259190610d6b565b508281670de0b6b3a764000086020181610b6057fe5b04949350505050565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b80356001600160a01b038116811461034257600080fd5b600080600080600080600080888a03610100811215610c8c578485fd5b610c968b8b610c58565b9850610ca58b60208c01610c58565b975060408a0135965060608a013595506020607f1982011215610cc6578485fd5b5060808901935060a0890135925060c08901359150610ce88a60e08b01610c58565b90509295985092959890939650565b600060208284031215610d08578081fd5b6040516020810181811067ffffffffffffffff82111715610d27578283fd5b6040529135825250919050565b600060208284031215610d45578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610d9757858101830151858201604001528201610d7b565b81811115610da85783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b9081526020019056fea264697066735822122047aa69503c94a30b23f780d1ed67a6c9e36db5ac7ebf61a7adec2bc53ea82e0b64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/GenericOracleI.json b/eth_defi/abi/aave_v2/GenericOracleI.json new file mode 100644 index 00000000..5ad7484d --- /dev/null +++ b/eth_defi/abi/aave_v2/GenericOracleI.json @@ -0,0 +1,118 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GenericOracleI", + "sourceName": "contracts/mocks/oracle/GenericOracleI.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "AssetPriceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "EthPriceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_sybil", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "_sybilProphecy", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "_oracleProphecy", + "type": "uint96" + } + ], + "name": "ProphecySubmitted", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + } + ], + "name": "getAssetPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getEthUsdPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Helpers.json b/eth_defi/abi/aave_v2/Helpers.json new file mode 100644 index 00000000..156a30e2 --- /dev/null +++ b/eth_defi/abi/aave_v2/Helpers.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Helpers", + "sourceName": "contracts/protocol/libraries/helpers/Helpers.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220381605c4ccf19c827bf1d07283f4ce15e8050272c1bb1b7dd9340fb83357728664736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220381605c4ccf19c827bf1d07283f4ce15e8050272c1bb1b7dd9340fb83357728664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IAToken.json b/eth_defi/abi/aave_v2/IAToken.json new file mode 100644 index 00000000..3041c9fd --- /dev/null +++ b/eth_defi/abi/aave_v2/IAToken.json @@ -0,0 +1,606 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAToken", + "sourceName": "contracts/interfaces/IAToken.sol", + "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" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "BalanceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "receiverOfUnderlying", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "handleRepayment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mintToTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferOnLiquidation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferUnderlyingTo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IAaveIncentivesController.json b/eth_defi/abi/aave_v2/IAaveIncentivesController.json new file mode 100644 index 00000000..f26dc15c --- /dev/null +++ b/eth_defi/abi/aave_v2/IAaveIncentivesController.json @@ -0,0 +1,410 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAaveIncentivesController", + "sourceName": "contracts/interfaces/IAaveIncentivesController.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "ClaimerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsAccrued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "claimer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "RewardsClaimed", + "type": "event" + }, + { + "inputs": [], + "name": "DISTRIBUTION_END", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PRECISION", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REWARD_TOKEN", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "assets", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "claimRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "claimRewardsOnBehalf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "emissionsPerSecond", + "type": "uint256[]" + } + ], + "name": "configureAssets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getAssetData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getClaimer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getRewardsBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getUserAssetData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserUnclaimedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + } + ], + "name": "handleAction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "setClaimer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IAaveOracle.json b/eth_defi/abi/aave_v2/IAaveOracle.json new file mode 100644 index 00000000..78f6f514 --- /dev/null +++ b/eth_defi/abi/aave_v2/IAaveOracle.json @@ -0,0 +1,75 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAaveOracle", + "sourceName": "contracts/misc/interfaces/IAaveOracle.sol", + "abi": [ + { + "inputs": [], + "name": "BASE_CURRENCY", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BASE_CURRENCY_UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getAssetPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getSourceOfAsset", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IBaseUniswapAdapter.json b/eth_defi/abi/aave_v2/IBaseUniswapAdapter.json new file mode 100644 index 00000000..94d53e84 --- /dev/null +++ b/eth_defi/abi/aave_v2/IBaseUniswapAdapter.json @@ -0,0 +1,218 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IBaseUniswapAdapter", + "sourceName": "contracts/adapters/interfaces/IBaseUniswapAdapter.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "FLASHLOAN_PREMIUM_TOTAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "UNISWAP_ROUTER", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "USD_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "WETH_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IChainlinkAggregator.json b/eth_defi/abi/aave_v2/IChainlinkAggregator.json new file mode 100644 index 00000000..4165eef1 --- /dev/null +++ b/eth_defi/abi/aave_v2/IChainlinkAggregator.json @@ -0,0 +1,145 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IChainlinkAggregator", + "sourceName": "contracts/interfaces/IChainlinkAggregator.sol", + "abi": [ + { + "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" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "roundId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "startedBy", + "type": "address" + } + ], + "name": "NewRound", + "type": "event" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "roundId", + "type": "uint256" + } + ], + "name": "getAnswer", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "roundId", + "type": "uint256" + } + ], + "name": "getTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAnswer", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestRound", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ICreditDelegationToken.json b/eth_defi/abi/aave_v2/ICreditDelegationToken.json new file mode 100644 index 00000000..bd736403 --- /dev/null +++ b/eth_defi/abi/aave_v2/ICreditDelegationToken.json @@ -0,0 +1,84 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ICreditDelegationToken", + "sourceName": "contracts/interfaces/ICreditDelegationToken.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromUser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowAllowanceDelegated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromUser", + "type": "address" + }, + { + "internalType": "address", + "name": "toUser", + "type": "address" + } + ], + "name": "borrowAllowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IDelegationToken.json b/eth_defi/abi/aave_v2/IDelegationToken.json new file mode 100644 index 00000000..e9f84709 --- /dev/null +++ b/eth_defi/abi/aave_v2/IDelegationToken.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IDelegationToken", + "sourceName": "contracts/interfaces/IDelegationToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "delegatee", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IERC20.json b/eth_defi/abi/aave_v2/IERC20.json new file mode 100644 index 00000000..598c646c --- /dev/null +++ b/eth_defi/abi/aave_v2/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "contracts/dependencies/openzeppelin/contracts/IERC20.sol", + "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": [], + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IERC20Detailed.json b/eth_defi/abi/aave_v2/IERC20Detailed.json new file mode 100644 index 00000000..3b346e03 --- /dev/null +++ b/eth_defi/abi/aave_v2/IERC20Detailed.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Detailed", + "sourceName": "contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol", + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IERC20DetailedBytes.json b/eth_defi/abi/aave_v2/IERC20DetailedBytes.json new file mode 100644 index 00000000..d9807e24 --- /dev/null +++ b/eth_defi/abi/aave_v2/IERC20DetailedBytes.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20DetailedBytes", + "sourceName": "contracts/misc/interfaces/IERC20DetailedBytes.sol", + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IERC20WithPermit.json b/eth_defi/abi/aave_v2/IERC20WithPermit.json new file mode 100644 index 00000000..7bfd9346 --- /dev/null +++ b/eth_defi/abi/aave_v2/IERC20WithPermit.json @@ -0,0 +1,237 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20WithPermit", + "sourceName": "contracts/interfaces/IERC20WithPermit.sol", + "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": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IExchangeAdapter.json b/eth_defi/abi/aave_v2/IExchangeAdapter.json new file mode 100644 index 00000000..9bbec9ff --- /dev/null +++ b/eth_defi/abi/aave_v2/IExchangeAdapter.json @@ -0,0 +1,95 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IExchangeAdapter", + "sourceName": "contracts/interfaces/IExchangeAdapter.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "platform", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "toAmount", + "type": "uint256" + } + ], + "name": "Exchange", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IERC20[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "approveExchange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxSlippage", + "type": "uint256" + } + ], + "name": "exchange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IExtendedPriceAggregator.json b/eth_defi/abi/aave_v2/IExtendedPriceAggregator.json new file mode 100644 index 00000000..9ee51b15 --- /dev/null +++ b/eth_defi/abi/aave_v2/IExtendedPriceAggregator.json @@ -0,0 +1,101 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IExtendedPriceAggregator", + "sourceName": "contracts/mocks/oracle/IExtendedPriceAggregator.sol", + "abi": [ + { + "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": "getPlatformId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSubTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenType", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAnswer", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IFlashLoanReceiver.json b/eth_defi/abi/aave_v2/IFlashLoanReceiver.json new file mode 100644 index 00000000..256e87ae --- /dev/null +++ b/eth_defi/abi/aave_v2/IFlashLoanReceiver.json @@ -0,0 +1,76 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IFlashLoanReceiver", + "sourceName": "contracts/flashloan/interfaces/IFlashLoanReceiver.sol", + "abi": [ + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IInitializableAToken.json b/eth_defi/abi/aave_v2/IInitializableAToken.json new file mode 100644 index 00000000..ab8f8f39 --- /dev/null +++ b/eth_defi/abi/aave_v2/IInitializableAToken.json @@ -0,0 +1,114 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IInitializableAToken", + "sourceName": "contracts/interfaces/IInitializableAToken.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IInitializableDebtToken.json b/eth_defi/abi/aave_v2/IInitializableDebtToken.json new file mode 100644 index 00000000..4f19489a --- /dev/null +++ b/eth_defi/abi/aave_v2/IInitializableDebtToken.json @@ -0,0 +1,103 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IInitializableDebtToken", + "sourceName": "contracts/interfaces/IInitializableDebtToken.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ILendingPool.json b/eth_defi/abi/aave_v2/ILendingPool.json new file mode 100644 index 00000000..6cb91f33 --- /dev/null +++ b/eth_defi/abi/aave_v2/ILendingPool.json @@ -0,0 +1,1023 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILendingPool", + "sourceName": "contracts/interfaces/ILendingPool.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowRateMode", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint16", + "name": "referral", + "type": "uint16" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint16", + "name": "referral", + "type": "uint16" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "premium", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "FlashLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "collateralAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "debtAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidatedCollateralAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "LiquidationCall", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "RebalanceStableBorrowRate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "repayer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidityIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256" + } + ], + "name": "ReserveDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "interestRateMode", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balanceFromAfter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balanceToBefore", + "type": "uint256" + } + ], + "name": "finalizeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiverAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "modes", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "flashLoan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAddressesProvider", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getConfiguration", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.ReserveConfigurationMap", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveData", + "outputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.ReserveConfigurationMap", + "name": "configuration", + "type": "tuple" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentLiquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentVariableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentStableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "id", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.ReserveData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveNormalizedIncome", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveNormalizedVariableDebt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserAccountData", + "outputs": [ + { + "internalType": "uint256", + "name": "totalCollateralETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDebtETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableBorrowsETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ltv", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "healthFactor", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserConfiguration", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.UserConfigurationMap", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + } + ], + "name": "initReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "collateralAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "debtAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "liquidationCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "rebalanceStableBorrowRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "configuration", + "type": "uint256" + } + ], + "name": "setConfiguration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "val", + "type": "bool" + } + ], + "name": "setPause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "address", + "name": "rateStrategyAddress", + "type": "address" + } + ], + "name": "setReserveInterestRateStrategyAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "bool", + "name": "useAsCollateral", + "type": "bool" + } + ], + "name": "setUserUseReserveAsCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + } + ], + "name": "swapBorrowRateMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ILendingPoolAddressesProvider.json b/eth_defi/abi/aave_v2/ILendingPoolAddressesProvider.json new file mode 100644 index 00000000..21e575cf --- /dev/null +++ b/eth_defi/abi/aave_v2/ILendingPoolAddressesProvider.json @@ -0,0 +1,422 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILendingPoolAddressesProvider", + "sourceName": "contracts/interfaces/ILendingPoolAddressesProvider.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "hasProxy", + "type": "bool" + } + ], + "name": "AddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ConfigurationAdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "EmergencyAdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingPoolCollateralManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingPoolConfiguratorUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingPoolUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingRateOracleUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "newMarketId", + "type": "string" + } + ], + "name": "MarketIdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "PriceOracleUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ProxyCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getEmergencyAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingPoolCollateralManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingPoolConfigurator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingRateOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMarketId", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPriceOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "impl", + "type": "address" + } + ], + "name": "setAddressAsProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "setEmergencyAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setLendingPoolCollateralManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "configurator", + "type": "address" + } + ], + "name": "setLendingPoolConfiguratorImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "setLendingPoolImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingRateOracle", + "type": "address" + } + ], + "name": "setLendingRateOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "marketId", + "type": "string" + } + ], + "name": "setMarketId", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "setPoolAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "priceOracle", + "type": "address" + } + ], + "name": "setPriceOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ILendingPoolAddressesProviderRegistry.json b/eth_defi/abi/aave_v2/ILendingPoolAddressesProviderRegistry.json new file mode 100644 index 00000000..665e9e97 --- /dev/null +++ b/eth_defi/abi/aave_v2/ILendingPoolAddressesProviderRegistry.json @@ -0,0 +1,100 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILendingPoolAddressesProviderRegistry", + "sourceName": "contracts/interfaces/ILendingPoolAddressesProviderRegistry.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "AddressesProviderRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "AddressesProviderUnregistered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addressesProvider", + "type": "address" + } + ], + "name": "getAddressesProviderIdByAddress", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAddressesProvidersList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "registerAddressesProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + } + ], + "name": "unregisterAddressesProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ILendingPoolCollateralManager.json b/eth_defi/abi/aave_v2/ILendingPoolCollateralManager.json new file mode 100644 index 00000000..7882fc59 --- /dev/null +++ b/eth_defi/abi/aave_v2/ILendingPoolCollateralManager.json @@ -0,0 +1,142 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILendingPoolCollateralManager", + "sourceName": "contracts/interfaces/ILendingPoolCollateralManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "principal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidatedCollateralAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "LiquidationCall", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralEnabled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { + "internalType": "address", + "name": "principal", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "liquidationCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ILendingPoolConfigurator.json b/eth_defi/abi/aave_v2/ILendingPoolConfigurator.json new file mode 100644 index 00000000..555f8e7d --- /dev/null +++ b/eth_defi/abi/aave_v2/ILendingPoolConfigurator.json @@ -0,0 +1,321 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILendingPoolConfigurator", + "sourceName": "contracts/interfaces/ILendingPoolConfigurator.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ATokenUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BorrowingDisabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "stableRateEnabled", + "type": "bool" + } + ], + "name": "BorrowingEnabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ltv", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidationThreshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidationBonus", + "type": "uint256" + } + ], + "name": "CollateralConfigurationChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "ReserveDecimalsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "factor", + "type": "uint256" + } + ], + "name": "ReserveFactorChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveFrozen", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "stableDebtToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "variableDebtToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + } + ], + "name": "ReserveInitialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "ReserveInterestRateStrategyChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveUnfrozen", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "StableDebtTokenUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "StableRateDisabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "StableRateEnabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "VariableDebtTokenUpgraded", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ILendingRateOracle.json b/eth_defi/abi/aave_v2/ILendingRateOracle.json new file mode 100644 index 00000000..ede2429d --- /dev/null +++ b/eth_defi/abi/aave_v2/ILendingRateOracle.json @@ -0,0 +1,48 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILendingRateOracle", + "sourceName": "contracts/interfaces/ILendingRateOracle.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getMarketBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + } + ], + "name": "setMarketBorrowRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IParaSwapAugustus.json b/eth_defi/abi/aave_v2/IParaSwapAugustus.json new file mode 100644 index 00000000..5e9f9da0 --- /dev/null +++ b/eth_defi/abi/aave_v2/IParaSwapAugustus.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IParaSwapAugustus", + "sourceName": "contracts/interfaces/IParaSwapAugustus.sol", + "abi": [ + { + "inputs": [], + "name": "getTokenTransferProxy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IParaSwapAugustusRegistry.json b/eth_defi/abi/aave_v2/IParaSwapAugustusRegistry.json new file mode 100644 index 00000000..6b81e44b --- /dev/null +++ b/eth_defi/abi/aave_v2/IParaSwapAugustusRegistry.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IParaSwapAugustusRegistry", + "sourceName": "contracts/interfaces/IParaSwapAugustusRegistry.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "augustus", + "type": "address" + } + ], + "name": "isValidAugustus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IPriceOracle.json b/eth_defi/abi/aave_v2/IPriceOracle.json new file mode 100644 index 00000000..26688466 --- /dev/null +++ b/eth_defi/abi/aave_v2/IPriceOracle.json @@ -0,0 +1,48 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPriceOracle", + "sourceName": "contracts/interfaces/IPriceOracle.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getAssetPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "setAssetPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IPriceOracleGetter.json b/eth_defi/abi/aave_v2/IPriceOracleGetter.json new file mode 100644 index 00000000..a1e51b81 --- /dev/null +++ b/eth_defi/abi/aave_v2/IPriceOracleGetter.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IPriceOracleGetter", + "sourceName": "contracts/interfaces/IPriceOracleGetter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getAssetPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IReserveInterestRateStrategy.json b/eth_defi/abi/aave_v2/IReserveInterestRateStrategy.json new file mode 100644 index 00000000..9bf77d8c --- /dev/null +++ b/eth_defi/abi/aave_v2/IReserveInterestRateStrategy.json @@ -0,0 +1,155 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IReserveInterestRateStrategy", + "sourceName": "contracts/interfaces/IReserveInterestRateStrategy.sol", + "abi": [ + { + "inputs": [], + "name": "baseVariableBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidityAdded", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidityTaken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + } + ], + "name": "calculateInterestRates", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + } + ], + "name": "calculateInterestRates", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMaxVariableBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IScaledBalanceToken.json b/eth_defi/abi/aave_v2/IScaledBalanceToken.json new file mode 100644 index 00000000..fbbbff86 --- /dev/null +++ b/eth_defi/abi/aave_v2/IScaledBalanceToken.json @@ -0,0 +1,67 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IScaledBalanceToken", + "sourceName": "contracts/interfaces/IScaledBalanceToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IStableDebtToken.json b/eth_defi/abi/aave_v2/IStableDebtToken.json new file mode 100644 index 00000000..9fa998d4 --- /dev/null +++ b/eth_defi/abi/aave_v2/IStableDebtToken.json @@ -0,0 +1,395 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IStableDebtToken", + "sourceName": "contracts/interfaces/IStableDebtToken.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "avgStableRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalSupply", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "avgStableRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalSupply", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAverageStableRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupplyData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalSupplyAndAvgRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalSupplyLastUpdated", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserLastUpdated", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserStableRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "principalBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUiIncentiveDataProviderV2.json b/eth_defi/abi/aave_v2/IUiIncentiveDataProviderV2.json new file mode 100644 index 00000000..68696fec --- /dev/null +++ b/eth_defi/abi/aave_v2/IUiIncentiveDataProviderV2.json @@ -0,0 +1,645 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUiIncentiveDataProviderV2", + "sourceName": "contracts/misc/interfaces/IUiIncentiveDataProviderV2.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getFullReservesIncentiveData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUiIncentiveDataProviderV3.json b/eth_defi/abi/aave_v2/IUiIncentiveDataProviderV3.json new file mode 100644 index 00000000..56426018 --- /dev/null +++ b/eth_defi/abi/aave_v2/IUiIncentiveDataProviderV3.json @@ -0,0 +1,969 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUiIncentiveDataProviderV3", + "sourceName": "contracts/misc/interfaces/IUiIncentiveDataProviderV3.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getFullReservesIncentiveData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUiPoolDataProvider.json b/eth_defi/abi/aave_v2/IUiPoolDataProvider.json new file mode 100644 index 00000000..e8eecb37 --- /dev/null +++ b/eth_defi/abi/aave_v2/IUiPoolDataProvider.json @@ -0,0 +1,680 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUiPoolDataProvider", + "sourceName": "contracts/misc/interfaces/IUiPoolDataProvider.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInEth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenIncentivesIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenincentivesUserIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.UserReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.IncentivesControllerData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getSimpleReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInEth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenIncentivesIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenincentivesUserIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.UserReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUiPoolDataProviderV2.json b/eth_defi/abi/aave_v2/IUiPoolDataProviderV2.json new file mode 100644 index 00000000..662574e0 --- /dev/null +++ b/eth_defi/abi/aave_v2/IUiPoolDataProviderV2.json @@ -0,0 +1,304 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUiPoolDataProviderV2", + "sourceName": "contracts/misc/interfaces/IUiPoolDataProviderV2.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInMarketReferenceCurrency", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProviderV2.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "marketReferenceCurrencyUnit", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "marketReferenceCurrencyPriceInUsd", + "type": "int256" + }, + { + "internalType": "int256", + "name": "networkBaseTokenPriceInUsd", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "networkBaseTokenPriceDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiPoolDataProviderV2.BaseCurrencyInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProviderV2.UserReserveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUiPoolDataProviderV3.json b/eth_defi/abi/aave_v2/IUiPoolDataProviderV3.json new file mode 100644 index 00000000..9458e9f2 --- /dev/null +++ b/eth_defi/abi/aave_v2/IUiPoolDataProviderV3.json @@ -0,0 +1,414 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUiPoolDataProviderV3", + "sourceName": "contracts/misc/interfaces/IUiPoolDataProviderV3.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInMarketReferenceCurrency", + "type": "uint256" + }, + { + "internalType": "address", + "name": "priceOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseVariableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "optimalUsageRatio", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSiloedBorrowing", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "accruedToTreasury", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "unbacked", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "isolationModeTotalDebt", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "flashLoanEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "debtCeiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "debtCeilingDecimals", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "eModeCategoryId", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "borrowCap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyCap", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "eModeLtv", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "eModeLiquidationThreshold", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "eModeLiquidationBonus", + "type": "uint16" + }, + { + "internalType": "address", + "name": "eModePriceSource", + "type": "address" + }, + { + "internalType": "string", + "name": "eModeLabel", + "type": "string" + }, + { + "internalType": "bool", + "name": "borrowableInIsolation", + "type": "bool" + } + ], + "internalType": "struct IUiPoolDataProviderV3.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "marketReferenceCurrencyUnit", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "marketReferenceCurrencyPriceInUsd", + "type": "int256" + }, + { + "internalType": "int256", + "name": "networkBaseTokenPriceInUsd", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "networkBaseTokenPriceDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiPoolDataProviderV3.BaseCurrencyInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProviderV3.UserReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUniswapExchange.json b/eth_defi/abi/aave_v2/IUniswapExchange.json new file mode 100644 index 00000000..b139e66b --- /dev/null +++ b/eth_defi/abi/aave_v2/IUniswapExchange.json @@ -0,0 +1,111 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapExchange", + "sourceName": "contracts/interfaces/IUniswapExchange.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "eth_amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "token_amount", + "type": "uint256" + } + ], + "name": "AddLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokens_sold", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "eth_bought", + "type": "uint256" + } + ], + "name": "EthPurchase", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "eth_amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "token_amount", + "type": "uint256" + } + ], + "name": "RemoveLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "eth_sold", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokens_bought", + "type": "uint256" + } + ], + "name": "TokenPurchase", + "type": "event" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUniswapV2Router01.json b/eth_defi/abi/aave_v2/IUniswapV2Router01.json new file mode 100644 index 00000000..b7d6cd5e --- /dev/null +++ b/eth_defi/abi/aave_v2/IUniswapV2Router01.json @@ -0,0 +1,760 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Router01", + "sourceName": "contracts/misc/interfaces/IUniswapV2Router01.sol", + "abi": [ + { + "inputs": [], + "name": "WETH", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountADesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountTokenDesired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "addLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountIn", + "outputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveOut", + "type": "uint256" + } + ], + "name": "getAmountOut", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveB", + "type": "uint256" + } + ], + "name": "quote", + "outputs": [ + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "removeLiquidityETH", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountTokenMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETHMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityETHWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountToken", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountETH", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountAMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountBMin", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approveMax", + "type": "bool" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "removeLiquidityWithPermit", + "outputs": [ + { + "internalType": "uint256", + "name": "amountA", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountB", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapETHForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactETHForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactETH", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IUniswapV2Router02.json b/eth_defi/abi/aave_v2/IUniswapV2Router02.json new file mode 100644 index 00000000..9bb80a18 --- /dev/null +++ b/eth_defi/abi/aave_v2/IUniswapV2Router02.json @@ -0,0 +1,137 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV2Router02", + "sourceName": "contracts/interfaces/IUniswapV2Router02.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMin", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountInMax", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IVariableDebtToken.json b/eth_defi/abi/aave_v2/IVariableDebtToken.json new file mode 100644 index 00000000..330a441e --- /dev/null +++ b/eth_defi/abi/aave_v2/IVariableDebtToken.json @@ -0,0 +1,285 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IVariableDebtToken", + "sourceName": "contracts/interfaces/IVariableDebtToken.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IWETH.json b/eth_defi/abi/aave_v2/IWETH.json new file mode 100644 index 00000000..8ca850e2 --- /dev/null +++ b/eth_defi/abi/aave_v2/IWETH.json @@ -0,0 +1,84 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWETH", + "sourceName": "contracts/misc/interfaces/IWETH.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IWETHGateway.json b/eth_defi/abi/aave_v2/IWETHGateway.json new file mode 100644 index 00000000..f9908849 --- /dev/null +++ b/eth_defi/abi/aave_v2/IWETHGateway.json @@ -0,0 +1,113 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWETHGateway", + "sourceName": "contracts/misc/interfaces/IWETHGateway.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "interesRateMode", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "borrowETH", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "depositETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repayETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/IncentivizedERC20.json b/eth_defi/abi/aave_v2/IncentivizedERC20.json new file mode 100644 index 00000000..3d7f81f5 --- /dev/null +++ b/eth_defi/abi/aave_v2/IncentivizedERC20.json @@ -0,0 +1,302 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IncentivizedERC20", + "sourceName": "contracts/protocol/tokenization/IncentivizedERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Initializable.json b/eth_defi/abi/aave_v2/Initializable.json new file mode 100644 index 00000000..a41f9151 --- /dev/null +++ b/eth_defi/abi/aave_v2/Initializable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Initializable", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/Initializable.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122006c563f8af058211b8a7999f05da22a4cf964615c609fb8352e4d0b747c2d78464736f6c634300060c0033", + "deployedBytecode": "0x6080604052600080fdfea264697066735822122006c563f8af058211b8a7999f05da22a4cf964615c609fb8352e4d0b747c2d78464736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/InitializableAdminUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/InitializableAdminUpgradeabilityProxy.json new file mode 100644 index 00000000..8c915667 --- /dev/null +++ b/eth_defi/abi/aave_v2/InitializableAdminUpgradeabilityProxy.json @@ -0,0 +1,158 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "InitializableAdminUpgradeabilityProxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "changeAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "logic", + "type": "address" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610905806100206000396000f3fe6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610543945050505050565b34801561031257600080fd5b50610142610623565b61032361064e565b61033361032e610656565b61067b565b565b61033d61069f565b6001600160a01b0316336001600160a01b031614156103645761035f816106c4565b61036c565b61036c61031b565b50565b61037761069f565b6001600160a01b0316336001600160a01b0316141561040f57610399836106c4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b600061042661069f565b6001600160a01b0316336001600160a01b0316141561044e57610447610656565b9050610456565b61045661031b565b90565b61046161069f565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b815260040180806020018281038252603681526020018061085f6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e861069f565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f81610704565b600061051d610656565b6001600160a01b03161461053057600080fd5b61053a8382610543565b61041782610704565b600061054d610656565b6001600160a01b03161461056057600080fd5b61056982610728565b80511561061f576000826001600160a01b0316826040518082805190602001908083835b602083106105ac5780518252601f19909201916020918201910161058d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b505090508061041757600080fd5b5050565b600061062d61069f565b6001600160a01b0316336001600160a01b0316141561044e5761044761069f565b610333610790565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561069a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106cd81610728565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610731816107f0565b61076c5760405162461bcd60e51b815260040180806020018281038252603b815260200180610895603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61079861069f565b6001600160a01b0316336001600160a01b031614156107e85760405162461bcd60e51b815260040180806020018281038252603281526020018061082d6032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061082457508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220fe68a9812581c642698b9d572fd77ba9c99d18900f5df484d2cf6201692c0bbe64736f6c634300060c0033", + "deployedBytecode": "0x6080604052600436106100705760003560e01c80638f2839701161004e5780638f2839701461015e578063cf7a1d7714610191578063d1f5789414610250578063f851a4401461030657610070565b80633659cfe61461007a5780634f1ef286146100ad5780635c60da1b1461012d575b61007861031b565b005b34801561008657600080fd5b506100786004803603602081101561009d57600080fd5b50356001600160a01b0316610335565b610078600480360360408110156100c357600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ee57600080fd5b82018360208201111561010057600080fd5b8035906020019184600183028401116401000000008311171561012257600080fd5b50909250905061036f565b34801561013957600080fd5b5061014261041c565b604080516001600160a01b039092168252519081900360200190f35b34801561016a57600080fd5b506100786004803603602081101561018157600080fd5b50356001600160a01b0316610459565b610078600480360360608110156101a757600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610513945050505050565b6100786004803603604081101561026657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561029157600080fd5b8201836020820111156102a357600080fd5b803590602001918460018302840111640100000000831117156102c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610543945050505050565b34801561031257600080fd5b50610142610623565b61032361064e565b61033361032e610656565b61067b565b565b61033d61069f565b6001600160a01b0316336001600160a01b031614156103645761035f816106c4565b61036c565b61036c61031b565b50565b61037761069f565b6001600160a01b0316336001600160a01b0316141561040f57610399836106c4565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146103f6576040519150601f19603f3d011682016040523d82523d6000602084013e6103fb565b606091505b505090508061040957600080fd5b50610417565b61041761031b565b505050565b600061042661069f565b6001600160a01b0316336001600160a01b0316141561044e57610447610656565b9050610456565b61045661031b565b90565b61046161069f565b6001600160a01b0316336001600160a01b03161415610364576001600160a01b0381166104bf5760405162461bcd60e51b815260040180806020018281038252603681526020018061085f6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104e861069f565b604080516001600160a01b03928316815291841660208301528051918290030190a161035f81610704565b600061051d610656565b6001600160a01b03161461053057600080fd5b61053a8382610543565b61041782610704565b600061054d610656565b6001600160a01b03161461056057600080fd5b61056982610728565b80511561061f576000826001600160a01b0316826040518082805190602001908083835b602083106105ac5780518252601f19909201916020918201910161058d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b505090508061041757600080fd5b5050565b600061062d61069f565b6001600160a01b0316336001600160a01b0316141561044e5761044761069f565b610333610790565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561069a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106cd81610728565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610731816107f0565b61076c5760405162461bcd60e51b815260040180806020018281038252603b815260200180610895603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b61079861069f565b6001600160a01b0316336001600160a01b031614156107e85760405162461bcd60e51b815260040180806020018281038252603281526020018061082d6032913960400191505060405180910390fd5b610333610333565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061082457508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220fe68a9812581c642698b9d572fd77ba9c99d18900f5df484d2cf6201692c0bbe64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/InitializableImmutableAdminUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/InitializableImmutableAdminUpgradeabilityProxy.json new file mode 100644 index 00000000..86f5a84f --- /dev/null +++ b/eth_defi/abi/aave_v2/InitializableImmutableAdminUpgradeabilityProxy.json @@ -0,0 +1,114 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "InitializableImmutableAdminUpgradeabilityProxy", + "sourceName": "contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033", + "deployedBytecode": "0x60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/InitializableUpgradeabilityProxy.json b/eth_defi/abi/aave_v2/InitializableUpgradeabilityProxy.json new file mode 100644 index 00000000..c9fe1c42 --- /dev/null +++ b/eth_defi/abi/aave_v2/InitializableUpgradeabilityProxy.json @@ -0,0 +1,46 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "InitializableUpgradeabilityProxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610338806100206000396000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f16101da565b6101ff565b565b60006101026101da565b6001600160a01b03161461011557600080fd5b61011e82610223565b8051156101d6576000826001600160a01b0316826040518082805190602001908083835b602083106101615780518252601f199092019160209182019101610142565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50509050806101d457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561021e573d6000f35b3d6000fd5b61022c8161028b565b6102675760405162461bcd60e51b815260040180806020018281038252603b8152602001806102c8603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906102bf57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220c4c0bc96c924f782491c6fb1841f09c277c57ebf7fee1b32afe92e458b9a8da964736f6c634300060c0033", + "deployedBytecode": "0x60806040526004361061001e5760003560e01c8063d1f5789414610028575b6100266100de565b005b6100266004803603604081101561003e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561006957600080fd5b82018360208201111561007b57600080fd5b8035906020019184600183028401116401000000008311171561009d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f8945050505050565b6100e66100f6565b6100f66100f16101da565b6101ff565b565b60006101026101da565b6001600160a01b03161461011557600080fd5b61011e82610223565b8051156101d6576000826001600160a01b0316826040518082805190602001908083835b602083106101615780518252601f199092019160209182019101610142565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b50509050806101d457600080fd5b505b5050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561021e573d6000f35b3d6000fd5b61022c8161028b565b6102675760405162461bcd60e51b815260040180806020018281038252603b8152602001806102c8603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906102bf57508115155b94935050505056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220c4c0bc96c924f782491c6fb1841f09c277c57ebf7fee1b32afe92e458b9a8da964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/LendingPool.json b/eth_defi/abi/aave_v2/LendingPool.json new file mode 100644 index 00000000..43200f82 --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingPool.json @@ -0,0 +1,1170 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingPool", + "sourceName": "contracts/protocol/lendingpool/LendingPool.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowRateMode", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint16", + "name": "referral", + "type": "uint16" + } + ], + "name": "Borrow", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint16", + "name": "referral", + "type": "uint16" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "premium", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "FlashLoan", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "collateralAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "debtAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidatedCollateralAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "LiquidationCall", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "RebalanceStableBorrowRate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "repayer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Repay", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidityIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256" + } + ], + "name": "ReserveDataUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "FLASHLOAN_PREMIUM_TOTAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDINGPOOL_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_NUMBER_RESERVES", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_STABLE_RATE_BORROW_SIZE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "interestRateMode", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "borrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balanceFromBefore", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "balanceToBefore", + "type": "uint256" + } + ], + "name": "finalizeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiverAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "modes", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "flashLoan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAddressesProvider", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getConfiguration", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.ReserveConfigurationMap", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveData", + "outputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.ReserveConfigurationMap", + "name": "configuration", + "type": "tuple" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentLiquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentVariableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "currentStableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "id", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.ReserveData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveNormalizedIncome", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "getReserveNormalizedVariableDebt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserAccountData", + "outputs": [ + { + "internalType": "uint256", + "name": "totalCollateralETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDebtETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "availableBorrowsETH", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ltv", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "healthFactor", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserConfiguration", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "data", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.UserConfigurationMap", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + } + ], + "name": "initReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "collateralAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "debtAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "liquidationCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "rebalanceStableBorrowRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "configuration", + "type": "uint256" + } + ], + "name": "setConfiguration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "val", + "type": "bool" + } + ], + "name": "setPause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "rateStrategyAddress", + "type": "address" + } + ], + "name": "setReserveInterestRateStrategyAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "bool", + "name": "useAsCollateral", + "type": "bool" + } + ], + "name": "setUserUseReserveAsCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + } + ], + "name": "swapBorrowRateMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdraw", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526000805534801561001457600080fd5b506155c880620000256000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c8063ab9c4b5d116100f9578063d15e005311610097578063e82fec2f11610071578063e82fec2f146103c2578063e8eda9df146103ca578063f8119d51146103dd578063fe65acfe146103e5576101c3565b8063d15e005314610387578063d1946dbc1461039a578063d5ed3933146103af576101c3565b8063bf92857c116100d3578063bf92857c14610329578063c44b11f71461034e578063c4d66de814610361578063cd11238214610374576101c3565b8063ab9c4b5d146102f0578063b8d2927614610303578063bedb86fb14610316576101c3565b80635a3b74b9116101665780637a708e92116101405780637a708e92146102af5780638afaff02146102c257806394ba89a2146102ca578063a415bcad146102dd576101c3565b80635a3b74b9146102745780635c975abb1461028757806369328dec1461029c576101c3565b806335ea6a75116101a257806335ea6a751461020e578063386497fd1461022e5780634417a58314610241578063573ade8114610261576101c3565b8062a718a9146101c8578063074b2e43146101dd5780631d2118f9146101fb575b600080fd5b6101db6101d6366004614875565b6103fa565b005b6101e56105d0565b6040516101f291906154c9565b60405180910390f35b6101db6102093660046147cd565b6105d6565b61022161021c366004614795565b61060f565b6040516101f291906152e3565b6101e561023c366004614795565b6106f1565b61025461024f366004614795565b610718565b6040516101f291906152d9565b6101e561026f366004614b14565b61074b565b6101db610282366004614a2a565b610a77565b61028f610c3c565b6040516101f2919061511f565b6101e56102aa366004614a82565b610c45565b6101db6102bd366004614805565b610f6f565b6101e5611051565b6101db6102d8366004614a57565b611056565b6101db6102eb366004614b5d565b6113c3565b6101db6102fe366004614932565b611443565b6101db610311366004614a57565b611b17565b6101db610324366004614b9c565b611b3b565b61033c610337366004614795565b611bb6565b6040516101f29695949392919061551b565b61025461035c366004614795565b611cb2565b6101db61036f366004614795565b611ce5565b6101db6103823660046147cd565b611d8d565b6101e5610395366004614795565b612003565b6103a2612024565b6040516101f291906150d2565b6101db6103bd3660046148ce565b6120c9565b6101e5612312565b6101db6103d8366004614ac3565b612318565b6101e5612545565b6103ed61254b565b6040516101f29190614df1565b61040261255a565b6034546040805163712d917160e01b815290516000926001600160a01b03169163712d9171916004808301926020929190829003018186803b15801561044757600080fd5b505afa15801561045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047f91906147b1565b905060006060826001600160a01b031688888888886040516024016104a8959493929190614e79565b60408051601f198184030181529181526020820180516001600160e01b031662a718a960e01b179052516104dc9190614dd5565b600060405180830381855af49150503d8060008114610517576040519150601f19603f3d011682016040523d82523d6000602084013e61051c565b606091505b50915091508160405180604001604052806002815260200161323360f01b815250906105645760405162461bcd60e51b815260040161055b919061512a565b60405180910390fd5b50600060608280602001905181019061057d9190614bec565b9150915081600014816040516020016105969190614dd5565b604051602081830303815290604052906105c35760405162461bcd60e51b815260040161055b919061512a565b5050505050505050505050565b603b5490565b6105de612598565b6001600160a01b03918216600090815260356020526040902060070180546001600160a01b03191691909216179055565b6106176144e3565b506001600160a01b0381811660009081526035602090815260409182902082516101a08101845281546101808201908152815260018201546001600160801b0380821694830194909452600160801b908190048416948201949094526002820154808416606083015284900483166080820152600382015492831660a08201529290910464ffffffffff1660c08301526004810154831660e0830152600581015483166101008301526006810154831661012083015260070154918216610140820152600160a01b90910460ff166101608201525b919050565b6001600160a01b038116600090815260356020526040812061071290612657565b92915050565b61072061454e565b506001600160a01b031660009081526036602090815260409182902082519182019092529054815290565b600061075561255a565b6001600160a01b0385166000908152603560205260408120908061077985846126d4565b91509150600086600281111561078b57fe5b60405163fa0c214960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063fa0c2149906107cf9087908c9086908c908a908a90600401615488565b60006040518083038186803b1580156107e757600080fd5b505af41580156107fb573d6000803e3d6000fd5b50600092506001915061080b9050565b82600281111561081757fe5b146108225782610824565b835b9050808910156108315750875b61083a856127e9565b600182600281111561084857fe5b14156108b9576005850154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90610882908a908590600401614e36565b600060405180830381600087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b50505050610937565b60068501546001860154604051637a94c56560e11b81526001600160a01b039092169163f5298aca91610904918b918691600160801b9091046001600160801b031690600401614e4f565b600060405180830381600087803b15801561091e57600080fd5b505af1158015610932573d6000803e3d6000fd5b505050505b60048501546001600160a01b0316610953868c838560006128b6565b610967826109618787612c1e565b90612c43565b61099f5760078601546001600160a01b038916600090815260366020526040812061099f929091600160a01b90910460ff1690612c85565b6109b46001600160a01b038c16338385612cf5565b6040516388dd91a160e01b81526001600160a01b038216906388dd91a1906109e29033908690600401614e36565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b50505050336001600160a01b0316886001600160a01b03168c6001600160a01b03167f4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa85604051610a6191906154c9565b60405180910390a4509998505050505050505050565b610a7f61255a565b6001600160a01b03808316600090815260356020818152604080842033855260368352938190206038546034548351631f94a27560e31b81529351969773__$de8c0cf1a7d7c36c802af9a64fb9d86036$__97635fa297e5978a978d978d9792969295603795939493169263fca513a892600480840193919291829003018186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906147b1565b6040518963ffffffff1660e01b8152600401610b68989796959493929190615404565b60006040518083038186803b158015610b8057600080fd5b505af4158015610b94573d6000803e3d6000fd5b505050506007810154336000908152603660205260409020610bc091600160a01b900460ff1684612d53565b8115610c005760405133906001600160a01b038516907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3610c37565b60405133906001600160a01b038516907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505050565b60395460ff1690565b6000610c4f61255a565b6001600160a01b0380851660009081526035602052604080822060048082015492516370a0823160e01b8152919492909216929183916370a0823191610c9791339101614df1565b60206040518083038186803b158015610caf57600080fd5b505afa158015610cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce79190614bd4565b905085600019811415610cf75750805b73__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63d09db04a898385603560366000336001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa158015610da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc691906147b1565b6040518963ffffffff1660e01b8152600401610de9989796959493929190614fa2565b60006040518083038186803b158015610e0157600080fd5b505af4158015610e15573d6000803e3d6000fd5b50505050610e22846127e9565b610e308489856000856128b6565b81811415610e9a576007840154336000908152603660205260408120610e63929091600160a01b90910460ff1690612d53565b60405133906001600160a01b038a16907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b6001840154604051636b81068560e11b81526001600160a01b0385169163d7020d0a91610edb9133918b9187916001600160801b0390911690600401614e05565b600060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050856001600160a01b0316336001600160a01b0316896001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051610f5a91906154c9565b60405180910390a493505050505b9392505050565b610f77612598565b610f8085612dc9565b6040518060400160405280600281526020016106e760f31b81525090610fb95760405162461bcd60e51b815260040161055b919061512a565b506001600160a01b038516600090815260356020526040908190209051630acce25f60e21b815273__$22cd43a9dda9ce44e9b92ba393b88fb9ac$__91632b33897c91611011919088908890889088906004016153d6565b60006040518083038186803b15801561102957600080fd5b505af415801561103d573d6000803e3d6000fd5b5050505061104a85612e02565b5050505050565b600281565b61105e61255a565b6001600160a01b0382166000908152603560205260408120908061108233846126d4565b91509150600084600281111561109457fe5b3360009081526036602052604090819020905163a8695b1d60e01b815291925073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9163a8695b1d916110e591889190889088908890600401615446565b60006040518083038186803b1580156110fd57600080fd5b505af4158015611111573d6000803e3d6000fd5b5050505061111e846127e9565b600181600281111561112c57fe5b141561123c576005840154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906111669033908790600401614e36565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b505050506006840154600185015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916111e491339182918991600160801b90046001600160801b031690600401614e05565b602060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614bb8565b50611352565b60068401546001850154604051637a94c56560e11b81526001600160a01b039092169163f5298aca916112879133918791600160801b9091046001600160801b031690600401614e4f565b600060405180830381600087803b1580156112a157600080fd5b505af11580156112b5573d6000803e3d6000fd5b505050506005840154600385015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916112fe913391829188916001600160801b031690600401614e05565b602060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190614bb8565b505b600484015461137090859088906001600160a01b03166000806128b6565b336001600160a01b0316866001600160a01b03167fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca6876040516113b391906154c9565b60405180910390a3505050505050565b6113cb61255a565b6001600160a01b038086166000818152603560209081526040918290208251610100810184529384523391840191909152848416918301919091526060820187905260808201869052600481015490921660a082015261ffff841660c0820152600160e082015261143b90612f0b565b505050505050565b61144b61255a565b611453614561565b6114c08b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d91829185019084908082843760009201919091525061340492505050565b60608a67ffffffffffffffff811180156114d957600080fd5b50604051908082528060200260200182016040528015611503578160200160208202803683370190505b50905060608b67ffffffffffffffff8111801561151f57600080fd5b50604051908082528060200260200182016040528015611549578160200160208202803683370190505b506001600160a01b038f1684526000604085015290505b60408301518c111561170d57603560008e8e866040015181811061158057fe5b90506020020160208101906115959190614795565b6001600160a01b03166001600160a01b0316815260200190815260200160002060040160009054906101000a90046001600160a01b0316828460400151815181106115dc57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061163361271061162d603b548e8e886040015181811061161857fe5b9050602002013561344290919063ffffffff16565b9061347c565b8184604001518151811061164357fe5b6020026020010181815250508183604001518151811061165f57fe5b60200260200101516001600160a01b0316634efecaa58f8d8d876040015181811061168657fe5b905060200201356040518363ffffffff1660e01b81526004016116aa929190614e36565b602060405180830381600087803b1580156116c457600080fd5b505af11580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190614bd4565b506040830180516001019052611560565b82600001516001600160a01b031663920f5c848e8e8e8e86338d8d6040518963ffffffff1660e01b815260040161174b98979695949392919061500e565b602060405180830381600087803b15801561176557600080fd5b505af1158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d9190614bb8565b604051806040016040528060028152602001611b1b60f11b815250906117d65760405162461bcd60e51b815260040161055b919061512a565b50600060408401525b60408301518c1115611b07578c8c84604001518181106117fb57fe5b90506020020160208101906118109190614795565b6001600160a01b0316606084015260408301518b908b9081811061183057fe5b905060200201358360a00181815250508083604001518151811061185057fe5b60200260200101518360c00181815250508183604001518151811061187157fe5b60209081029190910101516001600160a01b0316608084015260c083015160a084015161189d91612c1e565b60e08401526000898985604001518181106118b457fe5b9050602002013560028111156118c657fe5b60028111156118d157fe5b1415611a035760608301516001600160a01b031660009081526035602052604090206118fc906127e9565b61199c83608001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119749190614bd4565b60c085015160608601516001600160a01b0316600090815260356020526040902091906134be565b6060830151608084015160e08501516001600160a01b03831660009081526035602052604081206119d2949093909290916128b6565b6119fe8e84608001518560e0015186606001516001600160a01b0316612cf5909392919063ffffffff16565b611a92565b611a9260405180610100016040528085606001516001600160a01b03168152602001336001600160a01b03168152602001896001600160a01b031681526020018560a0015181526020018b8b8760400151818110611a5d57fe5b90506020020135815260200185608001516001600160a01b031681526020018661ffff16815260200160001515815250612f0b565b82606001516001600160a01b0316336001600160a01b03168f6001600160a01b03167f631042c832b07452973831137f2d73e395028b44b250dedc5abb0ee766e168ac8660a001518760c0015189604051611aef939291906154d2565b60405180910390a460408301805160010190526117df565b5050505050505050505050505050565b611b1f612598565b6001600160a01b03909116600090815260356020526040902055565b611b43612598565b6039805460ff1916821515179081905560ff1615611b89576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1611bb3565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b600080600080600080611c8f876035603660008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250506037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5257600080fd5b505afa158015611c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8a91906147b1565b61357b565b93995091975090945092509050611ca7868684613a3c565b935091939550919395565b611cba61454e565b506001600160a01b031660009081526035602090815260409182902082519182019092529054815290565b6000611cef613a70565b60015490915060ff1680611d065750611d06613a75565b80611d12575060005481115b611d2e5760405162461bcd60e51b815260040161055b9061520a565b60015460ff16158015611d4d576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b0385161790556109c4603a556009603b556080603c558015610c37576001805460ff19169055505050565b611d9561255a565b6001600160a01b038083166000908152603560205260408082206005810154600682015460048084015494516370a0823160e01b81529396928316959183169490921692909185916370a0823191611def918a9101614df1565b60206040518083038186803b158015611e0757600080fd5b505afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190614bd4565b60405163548cad0960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063548cad0990611e819088908b908990899089906004016153d6565b60006040518083038186803b158015611e9957600080fd5b505af4158015611ead573d6000803e3d6000fd5b50505050611eba856127e9565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac90611ee89089908590600401614e36565b600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b505050600386015460405163b3f1c93d60e01b81526001600160a01b038716925063b3f1c93d91611f59918a91829187916001600160801b031690600401614e05565b602060405180830381600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fab9190614bb8565b50611fba8588846000806128b6565b856001600160a01b0316876001600160a01b03167f9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f530060405160405180910390a350505050505050565b6001600160a01b038116600090815260356020526040812061071290613a7b565b60608060385467ffffffffffffffff8111801561204057600080fd5b5060405190808252806020026020018201604052801561206a578160200160208202803683370190505b50905060005b6038548110156120c35760008181526037602052604090205482516001600160a01b03909116908390839081106120a357fe5b6001600160a01b0390921660209283029190910190910152600101612070565b50905090565b6120d161255a565b6001600160a01b038681166000908152603560209081526040918290206004015482518084019093526002835261363360f01b91830191909152909116331461212d5760405162461bcd60e51b815260040161055b919061512a565b506121e985603560366000896001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e491906147b1565b613ada565b6001600160a01b03868116600090815260356020526040902060070154600160a01b900460ff169085811690871614612309576122268385612c43565b612292576001600160a01b0386166000908152603660205260408120906122509082908490612d53565b866001600160a01b0316886001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a3505b8115801561229f57508315155b15612309576001600160a01b03851660009081526036602052604090206122c881836001612d53565b856001600160a01b0316886001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a3505b50505050505050565b603a5490565b61232061255a565b6001600160a01b038416600090815260356020526040908190209051630eca322b60e01b815273__$de8c0cf1a7d7c36c802af9a64fb9d86036$__90630eca322b90612372908490889060040161547a565b60006040518083038186803b15801561238a57600080fd5b505af415801561239e573d6000803e3d6000fd5b5050505060048101546001600160a01b03166123b9826127e9565b6123c78287838860006128b6565b6123dc6001600160a01b038716338388612cf5565b6001820154604051630ab714fb60e11b81526000916001600160a01b0384169163156e29f69161241e9189918b916001600160801b0390911690600401614e4f565b602060405180830381600087803b15801561243857600080fd5b505af115801561244c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124709190614bb8565b905080156124ea5760078301546001600160a01b03861660009081526036602052604090206124aa91600160a01b900460ff166001612d53565b846001600160a01b0316876001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a35b8361ffff16856001600160a01b0316886001600160a01b03167fde6857219544bb5b7746f48ed30be6386fefc61b2f864cacf559893bf50fd951338a604051612534929190614e36565b60405180910390a450505050505050565b603c5490565b6034546001600160a01b031690565b6039546040805180820190915260028152610d8d60f21b60208201529060ff1615611bb35760405162461bcd60e51b815260040161055b919061512a565b603454604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156125dc57600080fd5b505afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261491906147b1565b6001600160a01b03161460405180604001604052806002815260200161323760f01b81525090611bb35760405162461bcd60e51b815260040161055b919061512a565b600381015460009064ffffffffff600160801b90910481169042168114156126955750506001810154600160801b90046001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03600160801b928390048116926126c692041685613b50565b90613b5d565b949350505050565b60058101546040516370a0823160e01b815260009182916001600160a01b03909116906370a082319061270b908790600401614df1565b60206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b9190614bd4565b60068401546040516370a0823160e01b81526001600160a01b03909116906370a082319061278d908890600401614df1565b60206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190614bd4565b915091505b9250929050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561283057600080fd5b505afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128689190614bd4565b60018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806128a48787868887613bf0565b91509150612309878787858588613d4d565b6128be6145ad565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561290257600080fd5b505afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614c93565b60c083015260408083019190915260018701546006880154825163b1bf962d60e01b815292516129df93600160801b9093046001600160801b0316926001600160a01b039092169163b1bf962d916004808301926020929190829003018186803b1580156129a757600080fd5b505afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c69190614bd4565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d9289928992899289929190612a1a8f613f10565b6040518963ffffffff1660e01b8152600401612a3d989796959493929190614efa565b60606040518083038186803b158015612a5557600080fd5b505afa158015612a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8d9190614cb6565b60a0840152608083015260608201819052604080518082019091526002815261353360f01b6020820152906001600160801b031015612adf5760405162461bcd60e51b815260040161055b919061512a565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b031015612b265760405162461bcd60e51b815260040161055b919061512a565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b031015612b6d5760405162461bcd60e51b815260040161055b919061512a565b506060810151600287018054608084015160038a0180546001600160801b03199081166001600160801b038085169190911790925560a08701519316818616178116600160801b84831681029190911790945560018b01546040516001600160a01b038c16967f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a96612c0e96919594919380831693919004909116906154ec565b60405180910390a2505050505050565b600082820183811015610f685760405162461bcd60e51b815260040161055b9061515d565b6000610f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f1b565b604080518082019091526002815261373760f01b602082015260808310612cbf5760405162461bcd60e51b815260040161055b919061512a565b508160020281612cd0576000612cd3565b60015b60ff16901b826002026001901b19846000015416178360000181905550505050565b612d4d846323b872dd60e01b858585604051602401612d1693929190614ead565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f47565b50505050565b604080518082019091526002815261373760f01b602082015260808310612d8d5760405162461bcd60e51b815260040161055b919061512a565b508160020260010181612da1576000612da4565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906126cc575050151592915050565b603854603c54604080518082019091526002815261363560f01b6020820152908210612e415760405162461bcd60e51b815260040161055b919061512a565b506001600160a01b038216600090815260356020526040812060070154600160a01b900460ff16151580612eaa57506000805260376020527fa0a618d80eda9243166be83cb7421d97e9dab6ddddd3c70ac7a6b4440256e8e7546001600160a01b038481169116145b905080610c3757506001600160a01b03919091166000818152603560209081526040808320600701805460ff60a01b1916600160a01b60ff8816021790558483526037909152902080546001600160a01b0319169091179055600101603855565b80516001600160a01b0390811660009081526035602090815260408083208186015185168452603683528184206034548351631f94a27560e31b81529351929691959491169263fca513a89260048083019392829003018186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa91906147b1565b9050600061304b612fba8561402c565b600a0a61162d8760600151856001600160a01b031663b3596f078a600001516040518263ffffffff1660e01b8152600401612ff59190614df1565b60206040518083038186803b15801561300d57600080fd5b505afa158015613021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130459190614bd4565b90613442565b905073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63721a92f986600001518688604001518960600151868b60800151603a5460358c60376038548e6040518d63ffffffff1660e01b81526004016130b09c9b9a99989796959493929190614f3e565b60006040518083038186803b1580156130c857600080fd5b505af41580156130dc573d6000803e3d6000fd5b505050506130e9846127e9565b6000806001876080015160028111156130fe57fe5b600281111561310957fe5b14156131be576003860154600587015460208901516040808b015160608c0151915163b3f1c93d60e01b81526001600160801b0390951696506001600160a01b039093169363b3f1c93d93613165939290918890600401614ed1565b602060405180830381600087803b15801561317f57600080fd5b505af1158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b79190614bb8565b905061326d565b600686015460208801516040808a015160608b015160018b0154925163b3f1c93d60e01b81526001600160a01b039095169463b3f1c93d946132189490939291600160801b9091046001600160801b031690600401614e05565b602060405180830381600087803b15801561323257600080fd5b505af1158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a9190614bb8565b90505b801561328f57600786015461328f908690600160a01b900460ff166001612c85565b6132be87600001518860a0015160008a60e001516132ae5760006132b4565b8a606001515b8a939291906128b6565b8660e0015115613356578660a001516001600160a01b0316634efecaa5886020015189606001516040518363ffffffff1660e01b8152600401613302929190614e36565b602060405180830381600087803b15801561331c57600080fd5b505af1158015613330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133549190614bd4565b505b8660c0015161ffff1687604001516001600160a01b031688600001516001600160a01b03167fc6a898309e823ee50bac64e45ca8adba6690e99e7841c45d754e2a38e9019d9b8a602001518b606001518c60800151600160028111156133b857fe5b8e6080015160028111156133c857fe5b60028111156133d357fe5b146133f25760028d0154600160801b90046001600160801b03166133f4565b885b6040516125349493929190614fe8565b805182511460405180604001604052806002815260200161373360f01b81525090610c375760405162461bcd60e51b815260040161055b919061512a565b60008261345157506000610712565b8282028284828161345e57fe5b0414610f685760405162461bcd60e51b815260040161055b906151c9565b6000610f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614036565b60006134db6134cc8461406d565b6134d58461406d565b906140bd565b905060006134f16134ea614168565b8390612c1e565b600186015490915061350d9082906001600160801b0316613b5d565b604080518082019091526002815261353160f01b60208201529091506001600160801b038211156135515760405162461bcd60e51b815260040161055b919061512a565b5060019490940180546001600160801b0319166001600160801b0390951694909417909355505050565b600080600080600061358b6145fb565b6135948a614178565b156135b2576000806000806000199550955095509550955050613a2e565b600060e08201525b878160e00151101561398d5760e08101516135d6908b9061417d565b6135df5761397d565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020613616816141ce565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916136689190600401614df1565b60206040518083038186803b15801561368057600080fd5b505afa158015613694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b89190614bd4565b825260c0820151158015906136d8575060e08201516136d8908c906141f9565b156137f6578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016137209190614df1565b60206040518083038186803b15801561373857600080fd5b505afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137709190614bd4565b604083018190526020830151835160009261378f929161162d91613442565b6101208401519091506137a29082612c1e565b61012084015260a08301516137c8906137bc908390613442565b61016085015190612c1e565b61016084015260c08301516137ee906137e2908390613442565b61018085015190612c1e565b610180840152505b60e0820151613806908c90614251565b1561397b578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040161384e9190614df1565b60206040518083038186803b15801561386657600080fd5b505afa15801561387a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389e9190614bd4565b8260600181815250506139488160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016138ed9190614df1565b60206040518083038186803b15801561390557600080fd5b505afa158015613919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393d9190614bd4565b606084015190612c1e565b606083018190526020830151835161397492613968929161162d91613442565b61014084015190612c1e565b6101408301525b505b60e08101805160010190526135ba565b6000816101200151116139a15760006139b6565b6101208101516101608201516139b69161347c565b6101608201526101208101516139cd5760006139e2565b6101208101516101808201516139e29161347c565b61018082018190526101208201516101408301516139ff926142a2565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b600080613a4985846142c6565b905083811015613a5d576000915050610f68565b613a678185612c43565b95945050505050565b600290565b303b1590565b600381015460009064ffffffffff600160801b9091048116904216811415613ab257505060018101546001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03918216916126c6911685614335565b604080516020810190915284548152600090613afc908890889087878761357b565b945050505050670de0b6b3a7640000811015604051806040016040528060018152602001601b60f91b81525090613b465760405162461bcd60e51b815260040161055b919061512a565b5050505050505050565b6000610f68838342614373565b6000821580613b6a575081155b15613b7757506000610712565b816b019d971e4fe8401e740000001981613b8d57fe5b0483111560405180604001604052806002815260200161068760f31b81525090613bca5760405162461bcd60e51b815260040161055b919061512a565b506b033b2e3c9fd0803ce80000006002815b048385020181613be857fe5b049392505050565b600285015460009081906001600160801b031685858215613d1e576000613c178488614335565b9050613c23818a613b5d565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115613c675760405162461bcd60e51b815260040161055b919061512a565b5060018b0180546001600160801b0319166001600160801b0385161790558915613d1c5760028b0154600090613cad90600160801b90046001600160801b031689613b50565b9050613cb9818a613b5d565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115613cfd5760405162461bcd60e51b815260040161055b919061512a565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b613d55614695565b613d5e87613f10565b6101208201819052613d70575061143b565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015613dc057600080fd5b505afa158015613dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df89190614ce3565b64ffffffffff1661014085015260a084015282526020820152613e1b8686613b5d565b6080820152613e2a8684613b5d565b606082015260a0810151610140820151613e4c919064ffffffffff8516614373565b60c082018190526020820151613e6191613b5d565b60408201819052608082015182516060840151613e8693926109619290918391612c1e565b60e08201819052610120820151613e9d91906142c6565b61010082018190521561230957600480880154610100830151604051637df5bd3b60e01b81526001600160a01b0390921692637df5bd3b92613ee2929189910161547a565b600060405180830381600087803b158015613efc57600080fd5b505af11580156105c3573d6000803e3d6000fd5b5460401c61ffff1690565b60008184841115613f3f5760405162461bcd60e51b815260040161055b919061512a565b505050900390565b613f59826001600160a01b0316612dc9565b613f755760405162461bcd60e51b815260040161055b906152a2565b60006060836001600160a01b031683604051613f919190614dd5565b6000604051808303816000865af19150503d8060008114613fce576040519150601f19603f3d011682016040523d82523d6000602084013e613fd3565b606091505b509150915081613ff55760405162461bcd60e51b815260040161055b90615194565b805115612d4d57808060200190518101906140109190614bb8565b612d4d5760405162461bcd60e51b815260040161055b90615258565b5460301c60ff1690565b600081836140575760405162461bcd60e51b815260040161055b919061512a565b50600083858161406357fe5b0495945050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906140b65760405162461bcd60e51b815260040161055b919061512a565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826140f75760405162461bcd60e51b815260040161055b919061512a565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156141455760405162461bcd60e51b815260040161055b919061512a565b5082816b033b2e3c9fd0803ce80000008602018161415f57fe5b04949350505050565b6b033b2e3c9fd0803ce800000090565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906141bc5760405162461bcd60e51b815260040161055b919061512a565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b815250906142385760405162461bcd60e51b815260040161055b919061512a565b5050815160016002830281019190911c16151592915050565b60006080821060405180604001604052806002815260200161373760f01b815250906142905760405162461bcd60e51b815260040161055b919061512a565b50509051600160029092021c16151590565b6000826142b25750600019610f68565b6126cc836142c086856142c6565b90614449565b60008215806142d3575081155b156142e057506000610712565b8161138819816142ec57fe5b0483111560405180604001604052806002815260200161068760f31b815250906143295760405162461bcd60e51b815260040161055b919061512a565b50612710600281613bdc565b6000806143494264ffffffffff8516612c43565b90506126cc614356614168565b6301e133806143658785613442565b8161436c57fe5b0490612c1e565b6000806143878364ffffffffff8616612c43565b90508061439e57614396614168565b915050610f68565b60001981016000600283116143b45760006143b9565b600283035b90506301e13380870460006143ce8280613b5d565b905060006143dc8284613b5d565b9050600060026143f0846130458a8a613442565b816143f757fe5b0490506000600661440e8461304589818d8d613442565b8161441557fe5b04905061443981614433848161442b8a8e613442565b614433614168565b90612c1e565b9c9b505050505050505050505050565b604080518082019091526002815261035360f41b6020820152600090826144835760405162461bcd60e51b815260040161055b919061512a565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156144cd5760405162461bcd60e51b815260040161055b919061512a565b508281670de0b6b3a76400008602018161415f57fe5b6040518061018001604052806144f761454e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff1681525090565b80356107128161556f565b60008083601f840112614712578182fd5b50813567ffffffffffffffff811115614729578182fd5b60208301915083602080830285010111156127e257600080fd5b60008083601f840112614754578182fd5b50813567ffffffffffffffff81111561476b578182fd5b6020830191508360208285010111156127e257600080fd5b803561ffff8116811461071257600080fd5b6000602082840312156147a6578081fd5b8135610f688161556f565b6000602082840312156147c2578081fd5b8151610f688161556f565b600080604083850312156147df578081fd5b82356147ea8161556f565b915060208301356147fa8161556f565b809150509250929050565b600080600080600060a0868803121561481c578081fd5b85356148278161556f565b945060208601356148378161556f565b935060408601356148478161556f565b925060608601356148578161556f565b915060808601356148678161556f565b809150509295509295909350565b600080600080600060a0868803121561488c578081fd5b85356148978161556f565b945060208601356148a78161556f565b935060408601356148b78161556f565b925060608601359150608086013561486781615584565b60008060008060008060c087890312156148e6578081fd5b86356148f18161556f565b955060208701356149018161556f565b945060408701356149118161556f565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080600080600060e08c8e031215614952578485fd5b61495c8d8d6146f6565b9a5067ffffffffffffffff8060208e01351115614977578586fd5b6149878e60208f01358f01614701565b909b50995060408d013581101561499c578586fd5b6149ac8e60408f01358f01614701565b909950975060608d01358110156149c1578586fd5b6149d18e60608f01358f01614701565b90975095506149e38e60808f016146f6565b94508060a08e013511156149f5578384fd5b50614a068d60a08e01358e01614743565b9093509150614a188d60c08e01614783565b90509295989b509295989b9093969950565b60008060408385031215614a3c578081fd5b8235614a478161556f565b915060208301356147fa81615584565b60008060408385031215614a69578182fd5b8235614a748161556f565b946020939093013593505050565b600080600060608486031215614a96578081fd5b8335614aa18161556f565b9250602084013591506040840135614ab88161556f565b809150509250925092565b60008060008060808587031215614ad8578182fd5b8435614ae38161556f565b9350602085013592506040850135614afa8161556f565b9150614b098660608701614783565b905092959194509250565b60008060008060808587031215614b29578182fd5b8435614b348161556f565b935060208501359250604085013591506060850135614b528161556f565b939692955090935050565b600080600080600060a08688031215614b74578283fd5b8535614b7f8161556f565b945060208601359350604086013592506148578760608801614783565b600060208284031215614bad578081fd5b8135610f6881615584565b600060208284031215614bc9578081fd5b8151610f6881615584565b600060208284031215614be5578081fd5b5051919050565b60008060408385031215614bfe578182fd5b82519150602083015167ffffffffffffffff80821115614c1c578283fd5b818501915085601f830112614c2f578283fd5b815181811115614c3d578384fd5b604051601f8201601f191681016020018381118282101715614c5d578586fd5b604052818152838201602001881015614c74578485fd5b614c85826020830160208701615543565b809450505050509250929050565b60008060408385031215614ca5578182fd5b505080516020909101519092909150565b600080600060608486031215614cca578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614cf8578182fd5b845193506020850151925060408501519150606085015164ffffffffff81168114614b52578182fd5b6001600160a01b0316815260200190565b6001600160a01b03169052565b6000815180845260208085019450808401835b83811015614d6e57815187529582019590820190600101614d52565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60038110614dad57fe5b9052565b519052565b6001600160801b03169052565b64ffffffffff169052565b60ff169052565b60008251614de7818460208701615543565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292909316602083015260408201526001600160801b03909116606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03988916815296909716602087015260408601949094526060850192909252608084015260a083015260c082015260e08101919091526101000190565b6001600160a01b039c8d168152602081019b909b52988b1660408b015260608a0197909752608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408301529091166101608201526101800190565b6001600160a01b039889168152602081019790975260408701959095526060860193909352608085019190915260a084015260c083015290911660e08201526101000190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b600060a0820160a08352806150238b836154c9565b90508b9150825b8b81101561505657602083016150498361504483876146f6565b614d21565b909350915060010161502a565b5083810360208501528881526001600160fb1b03891115615075578283fd5b602089029150818a602083013701602081810183815284830390910160408501526150a08189614d3f565b9150506150b06060840187614d32565b82810360808401526150c3818587614d79565b9b9a5050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156151135783516001600160a01b0316835292840192918401916001016150ee565b50909695505050505050565b901515815260200190565b6000602082528251806020840152615149816040850160208701615543565b601f01601f19169190910160400192915050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b9051815260200190565b6000610180820190506152f7828451614db1565b60208301516153096020840182614db6565b50604083015161531c6040840182614db6565b50606083015161532f6060840182614db6565b5060808301516153426080840182614db6565b5060a083015161535560a0840182614db6565b5060c083015161536860c0840182614dc3565b5060e083015161537b60e0840182614d32565b506101008084015161538f82850182614d32565b5050610120808401516153a482850182614d32565b5050610140808401516153b982850182614d32565b5050610160808401516153ce82850182614dce565b505092915050565b9485526001600160a01b03938416602086015291831660408501528216606084015216608082015260a00190565b9788526001600160a01b03968716602089015294151560408801526060870193909352608086019190915260a085015260c08401521660e08201526101000190565b600060a0820190508682528560208301528460408301528360608301526154706080830184614da3565b9695505050505050565b918252602082015260400190565b8681526020810186905260c081016154a36040830187614da3565b6001600160a01b03949094166060820152608081019290925260a0909101529392505050565b90815260200190565b928352602083019190915261ffff16604082015260600190565b948552602085019390935260408401919091526001600160801b03908116606084015216608082015260a00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60005b8381101561555e578181015183820152602001615546565b83811115612d4d5750506000910152565b6001600160a01b0381168114611bb357600080fd5b8015158114611bb357600080fdfea2646970667358221220c4d0c037e646bcf516c04e51880f3913c7c213e7e333d8b88b62d0589d4e1a2764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c35760003560e01c8063ab9c4b5d116100f9578063d15e005311610097578063e82fec2f11610071578063e82fec2f146103c2578063e8eda9df146103ca578063f8119d51146103dd578063fe65acfe146103e5576101c3565b8063d15e005314610387578063d1946dbc1461039a578063d5ed3933146103af576101c3565b8063bf92857c116100d3578063bf92857c14610329578063c44b11f71461034e578063c4d66de814610361578063cd11238214610374576101c3565b8063ab9c4b5d146102f0578063b8d2927614610303578063bedb86fb14610316576101c3565b80635a3b74b9116101665780637a708e92116101405780637a708e92146102af5780638afaff02146102c257806394ba89a2146102ca578063a415bcad146102dd576101c3565b80635a3b74b9146102745780635c975abb1461028757806369328dec1461029c576101c3565b806335ea6a75116101a257806335ea6a751461020e578063386497fd1461022e5780634417a58314610241578063573ade8114610261576101c3565b8062a718a9146101c8578063074b2e43146101dd5780631d2118f9146101fb575b600080fd5b6101db6101d6366004614875565b6103fa565b005b6101e56105d0565b6040516101f291906154c9565b60405180910390f35b6101db6102093660046147cd565b6105d6565b61022161021c366004614795565b61060f565b6040516101f291906152e3565b6101e561023c366004614795565b6106f1565b61025461024f366004614795565b610718565b6040516101f291906152d9565b6101e561026f366004614b14565b61074b565b6101db610282366004614a2a565b610a77565b61028f610c3c565b6040516101f2919061511f565b6101e56102aa366004614a82565b610c45565b6101db6102bd366004614805565b610f6f565b6101e5611051565b6101db6102d8366004614a57565b611056565b6101db6102eb366004614b5d565b6113c3565b6101db6102fe366004614932565b611443565b6101db610311366004614a57565b611b17565b6101db610324366004614b9c565b611b3b565b61033c610337366004614795565b611bb6565b6040516101f29695949392919061551b565b61025461035c366004614795565b611cb2565b6101db61036f366004614795565b611ce5565b6101db6103823660046147cd565b611d8d565b6101e5610395366004614795565b612003565b6103a2612024565b6040516101f291906150d2565b6101db6103bd3660046148ce565b6120c9565b6101e5612312565b6101db6103d8366004614ac3565b612318565b6101e5612545565b6103ed61254b565b6040516101f29190614df1565b61040261255a565b6034546040805163712d917160e01b815290516000926001600160a01b03169163712d9171916004808301926020929190829003018186803b15801561044757600080fd5b505afa15801561045b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047f91906147b1565b905060006060826001600160a01b031688888888886040516024016104a8959493929190614e79565b60408051601f198184030181529181526020820180516001600160e01b031662a718a960e01b179052516104dc9190614dd5565b600060405180830381855af49150503d8060008114610517576040519150601f19603f3d011682016040523d82523d6000602084013e61051c565b606091505b50915091508160405180604001604052806002815260200161323360f01b815250906105645760405162461bcd60e51b815260040161055b919061512a565b60405180910390fd5b50600060608280602001905181019061057d9190614bec565b9150915081600014816040516020016105969190614dd5565b604051602081830303815290604052906105c35760405162461bcd60e51b815260040161055b919061512a565b5050505050505050505050565b603b5490565b6105de612598565b6001600160a01b03918216600090815260356020526040902060070180546001600160a01b03191691909216179055565b6106176144e3565b506001600160a01b0381811660009081526035602090815260409182902082516101a08101845281546101808201908152815260018201546001600160801b0380821694830194909452600160801b908190048416948201949094526002820154808416606083015284900483166080820152600382015492831660a08201529290910464ffffffffff1660c08301526004810154831660e0830152600581015483166101008301526006810154831661012083015260070154918216610140820152600160a01b90910460ff166101608201525b919050565b6001600160a01b038116600090815260356020526040812061071290612657565b92915050565b61072061454e565b506001600160a01b031660009081526036602090815260409182902082519182019092529054815290565b600061075561255a565b6001600160a01b0385166000908152603560205260408120908061077985846126d4565b91509150600086600281111561078b57fe5b60405163fa0c214960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063fa0c2149906107cf9087908c9086908c908a908a90600401615488565b60006040518083038186803b1580156107e757600080fd5b505af41580156107fb573d6000803e3d6000fd5b50600092506001915061080b9050565b82600281111561081757fe5b146108225782610824565b835b9050808910156108315750875b61083a856127e9565b600182600281111561084857fe5b14156108b9576005850154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90610882908a908590600401614e36565b600060405180830381600087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b50505050610937565b60068501546001860154604051637a94c56560e11b81526001600160a01b039092169163f5298aca91610904918b918691600160801b9091046001600160801b031690600401614e4f565b600060405180830381600087803b15801561091e57600080fd5b505af1158015610932573d6000803e3d6000fd5b505050505b60048501546001600160a01b0316610953868c838560006128b6565b610967826109618787612c1e565b90612c43565b61099f5760078601546001600160a01b038916600090815260366020526040812061099f929091600160a01b90910460ff1690612c85565b6109b46001600160a01b038c16338385612cf5565b6040516388dd91a160e01b81526001600160a01b038216906388dd91a1906109e29033908690600401614e36565b600060405180830381600087803b1580156109fc57600080fd5b505af1158015610a10573d6000803e3d6000fd5b50505050336001600160a01b0316886001600160a01b03168c6001600160a01b03167f4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa85604051610a6191906154c9565b60405180910390a4509998505050505050505050565b610a7f61255a565b6001600160a01b03808316600090815260356020818152604080842033855260368352938190206038546034548351631f94a27560e31b81529351969773__$de8c0cf1a7d7c36c802af9a64fb9d86036$__97635fa297e5978a978d978d9792969295603795939493169263fca513a892600480840193919291829003018186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4591906147b1565b6040518963ffffffff1660e01b8152600401610b68989796959493929190615404565b60006040518083038186803b158015610b8057600080fd5b505af4158015610b94573d6000803e3d6000fd5b505050506007810154336000908152603660205260409020610bc091600160a01b900460ff1684612d53565b8115610c005760405133906001600160a01b038516907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3610c37565b60405133906001600160a01b038516907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505050565b60395460ff1690565b6000610c4f61255a565b6001600160a01b0380851660009081526035602052604080822060048082015492516370a0823160e01b8152919492909216929183916370a0823191610c9791339101614df1565b60206040518083038186803b158015610caf57600080fd5b505afa158015610cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce79190614bd4565b905085600019811415610cf75750805b73__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63d09db04a898385603560366000336001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8e57600080fd5b505afa158015610da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc691906147b1565b6040518963ffffffff1660e01b8152600401610de9989796959493929190614fa2565b60006040518083038186803b158015610e0157600080fd5b505af4158015610e15573d6000803e3d6000fd5b50505050610e22846127e9565b610e308489856000856128b6565b81811415610e9a576007840154336000908152603660205260408120610e63929091600160a01b90910460ff1690612d53565b60405133906001600160a01b038a16907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b6001840154604051636b81068560e11b81526001600160a01b0385169163d7020d0a91610edb9133918b9187916001600160801b0390911690600401614e05565b600060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b50505050856001600160a01b0316336001600160a01b0316896001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f784604051610f5a91906154c9565b60405180910390a493505050505b9392505050565b610f77612598565b610f8085612dc9565b6040518060400160405280600281526020016106e760f31b81525090610fb95760405162461bcd60e51b815260040161055b919061512a565b506001600160a01b038516600090815260356020526040908190209051630acce25f60e21b815273__$22cd43a9dda9ce44e9b92ba393b88fb9ac$__91632b33897c91611011919088908890889088906004016153d6565b60006040518083038186803b15801561102957600080fd5b505af415801561103d573d6000803e3d6000fd5b5050505061104a85612e02565b5050505050565b600281565b61105e61255a565b6001600160a01b0382166000908152603560205260408120908061108233846126d4565b91509150600084600281111561109457fe5b3360009081526036602052604090819020905163a8695b1d60e01b815291925073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9163a8695b1d916110e591889190889088908890600401615446565b60006040518083038186803b1580156110fd57600080fd5b505af4158015611111573d6000803e3d6000fd5b5050505061111e846127e9565b600181600281111561112c57fe5b141561123c576005840154604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906111669033908790600401614e36565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b505050506006840154600185015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916111e491339182918991600160801b90046001600160801b031690600401614e05565b602060405180830381600087803b1580156111fe57600080fd5b505af1158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614bb8565b50611352565b60068401546001850154604051637a94c56560e11b81526001600160a01b039092169163f5298aca916112879133918791600160801b9091046001600160801b031690600401614e4f565b600060405180830381600087803b1580156112a157600080fd5b505af11580156112b5573d6000803e3d6000fd5b505050506005840154600385015460405163b3f1c93d60e01b81526001600160a01b039092169163b3f1c93d916112fe913391829188916001600160801b031690600401614e05565b602060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190614bb8565b505b600484015461137090859088906001600160a01b03166000806128b6565b336001600160a01b0316866001600160a01b03167fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca6876040516113b391906154c9565b60405180910390a3505050505050565b6113cb61255a565b6001600160a01b038086166000818152603560209081526040918290208251610100810184529384523391840191909152848416918301919091526060820187905260808201869052600481015490921660a082015261ffff841660c0820152600160e082015261143b90612f0b565b505050505050565b61144b61255a565b611453614561565b6114c08b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d91829185019084908082843760009201919091525061340492505050565b60608a67ffffffffffffffff811180156114d957600080fd5b50604051908082528060200260200182016040528015611503578160200160208202803683370190505b50905060608b67ffffffffffffffff8111801561151f57600080fd5b50604051908082528060200260200182016040528015611549578160200160208202803683370190505b506001600160a01b038f1684526000604085015290505b60408301518c111561170d57603560008e8e866040015181811061158057fe5b90506020020160208101906115959190614795565b6001600160a01b03166001600160a01b0316815260200190815260200160002060040160009054906101000a90046001600160a01b0316828460400151815181106115dc57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061163361271061162d603b548e8e886040015181811061161857fe5b9050602002013561344290919063ffffffff16565b9061347c565b8184604001518151811061164357fe5b6020026020010181815250508183604001518151811061165f57fe5b60200260200101516001600160a01b0316634efecaa58f8d8d876040015181811061168657fe5b905060200201356040518363ffffffff1660e01b81526004016116aa929190614e36565b602060405180830381600087803b1580156116c457600080fd5b505af11580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190614bd4565b506040830180516001019052611560565b82600001516001600160a01b031663920f5c848e8e8e8e86338d8d6040518963ffffffff1660e01b815260040161174b98979695949392919061500e565b602060405180830381600087803b15801561176557600080fd5b505af1158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d9190614bb8565b604051806040016040528060028152602001611b1b60f11b815250906117d65760405162461bcd60e51b815260040161055b919061512a565b50600060408401525b60408301518c1115611b07578c8c84604001518181106117fb57fe5b90506020020160208101906118109190614795565b6001600160a01b0316606084015260408301518b908b9081811061183057fe5b905060200201358360a00181815250508083604001518151811061185057fe5b60200260200101518360c00181815250508183604001518151811061187157fe5b60209081029190910101516001600160a01b0316608084015260c083015160a084015161189d91612c1e565b60e08401526000898985604001518181106118b457fe5b9050602002013560028111156118c657fe5b60028111156118d157fe5b1415611a035760608301516001600160a01b031660009081526035602052604090206118fc906127e9565b61199c83608001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119749190614bd4565b60c085015160608601516001600160a01b0316600090815260356020526040902091906134be565b6060830151608084015160e08501516001600160a01b03831660009081526035602052604081206119d2949093909290916128b6565b6119fe8e84608001518560e0015186606001516001600160a01b0316612cf5909392919063ffffffff16565b611a92565b611a9260405180610100016040528085606001516001600160a01b03168152602001336001600160a01b03168152602001896001600160a01b031681526020018560a0015181526020018b8b8760400151818110611a5d57fe5b90506020020135815260200185608001516001600160a01b031681526020018661ffff16815260200160001515815250612f0b565b82606001516001600160a01b0316336001600160a01b03168f6001600160a01b03167f631042c832b07452973831137f2d73e395028b44b250dedc5abb0ee766e168ac8660a001518760c0015189604051611aef939291906154d2565b60405180910390a460408301805160010190526117df565b5050505050505050505050505050565b611b1f612598565b6001600160a01b03909116600090815260356020526040902055565b611b43612598565b6039805460ff1916821515179081905560ff1615611b89576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1611bb3565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b600080600080600080611c8f876035603660008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060200160405290816000820154815250506037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5257600080fd5b505afa158015611c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8a91906147b1565b61357b565b93995091975090945092509050611ca7868684613a3c565b935091939550919395565b611cba61454e565b506001600160a01b031660009081526035602090815260409182902082519182019092529054815290565b6000611cef613a70565b60015490915060ff1680611d065750611d06613a75565b80611d12575060005481115b611d2e5760405162461bcd60e51b815260040161055b9061520a565b60015460ff16158015611d4d576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b0385161790556109c4603a556009603b556080603c558015610c37576001805460ff19169055505050565b611d9561255a565b6001600160a01b038083166000908152603560205260408082206005810154600682015460048084015494516370a0823160e01b81529396928316959183169490921692909185916370a0823191611def918a9101614df1565b60206040518083038186803b158015611e0757600080fd5b505afa158015611e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3f9190614bd4565b60405163548cad0960e01b815290915073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__9063548cad0990611e819088908b908990899089906004016153d6565b60006040518083038186803b158015611e9957600080fd5b505af4158015611ead573d6000803e3d6000fd5b50505050611eba856127e9565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac90611ee89089908590600401614e36565b600060405180830381600087803b158015611f0257600080fd5b505af1158015611f16573d6000803e3d6000fd5b505050600386015460405163b3f1c93d60e01b81526001600160a01b038716925063b3f1c93d91611f59918a91829187916001600160801b031690600401614e05565b602060405180830381600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fab9190614bb8565b50611fba8588846000806128b6565b856001600160a01b0316876001600160a01b03167f9f439ae0c81e41a04d3fdfe07aed54e6a179fb0db15be7702eb66fa8ef6f530060405160405180910390a350505050505050565b6001600160a01b038116600090815260356020526040812061071290613a7b565b60608060385467ffffffffffffffff8111801561204057600080fd5b5060405190808252806020026020018201604052801561206a578160200160208202803683370190505b50905060005b6038548110156120c35760008181526037602052604090205482516001600160a01b03909116908390839081106120a357fe5b6001600160a01b0390921660209283029190910190910152600101612070565b50905090565b6120d161255a565b6001600160a01b038681166000908152603560209081526040918290206004015482518084019093526002835261363360f01b91830191909152909116331461212d5760405162461bcd60e51b815260040161055b919061512a565b506121e985603560366000896001600160a01b03166001600160a01b031681526020019081526020016000206037603854603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e491906147b1565b613ada565b6001600160a01b03868116600090815260356020526040902060070154600160a01b900460ff169085811690871614612309576122268385612c43565b612292576001600160a01b0386166000908152603660205260408120906122509082908490612d53565b866001600160a01b0316886001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a3505b8115801561229f57508315155b15612309576001600160a01b03851660009081526036602052604090206122c881836001612d53565b856001600160a01b0316886001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a3505b50505050505050565b603a5490565b61232061255a565b6001600160a01b038416600090815260356020526040908190209051630eca322b60e01b815273__$de8c0cf1a7d7c36c802af9a64fb9d86036$__90630eca322b90612372908490889060040161547a565b60006040518083038186803b15801561238a57600080fd5b505af415801561239e573d6000803e3d6000fd5b5050505060048101546001600160a01b03166123b9826127e9565b6123c78287838860006128b6565b6123dc6001600160a01b038716338388612cf5565b6001820154604051630ab714fb60e11b81526000916001600160a01b0384169163156e29f69161241e9189918b916001600160801b0390911690600401614e4f565b602060405180830381600087803b15801561243857600080fd5b505af115801561244c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124709190614bb8565b905080156124ea5760078301546001600160a01b03861660009081526036602052604090206124aa91600160a01b900460ff166001612d53565b846001600160a01b0316876001600160a01b03167e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f260405160405180910390a35b8361ffff16856001600160a01b0316886001600160a01b03167fde6857219544bb5b7746f48ed30be6386fefc61b2f864cacf559893bf50fd951338a604051612534929190614e36565b60405180910390a450505050505050565b603c5490565b6034546001600160a01b031690565b6039546040805180820190915260028152610d8d60f21b60208201529060ff1615611bb35760405162461bcd60e51b815260040161055b919061512a565b603454604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156125dc57600080fd5b505afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261491906147b1565b6001600160a01b03161460405180604001604052806002815260200161323760f01b81525090611bb35760405162461bcd60e51b815260040161055b919061512a565b600381015460009064ffffffffff600160801b90910481169042168114156126955750506001810154600160801b90046001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03600160801b928390048116926126c692041685613b50565b90613b5d565b949350505050565b60058101546040516370a0823160e01b815260009182916001600160a01b03909116906370a082319061270b908790600401614df1565b60206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b9190614bd4565b60068401546040516370a0823160e01b81526001600160a01b03909116906370a082319061278d908890600401614df1565b60206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190614bd4565b915091505b9250929050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561283057600080fd5b505afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128689190614bd4565b60018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806128a48787868887613bf0565b91509150612309878787858588613d4d565b6128be6145ad565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561290257600080fd5b505afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614c93565b60c083015260408083019190915260018701546006880154825163b1bf962d60e01b815292516129df93600160801b9093046001600160801b0316926001600160a01b039092169163b1bf962d916004808301926020929190829003018186803b1580156129a757600080fd5b505afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c69190614bd4565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d9289928992899289929190612a1a8f613f10565b6040518963ffffffff1660e01b8152600401612a3d989796959493929190614efa565b60606040518083038186803b158015612a5557600080fd5b505afa158015612a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8d9190614cb6565b60a0840152608083015260608201819052604080518082019091526002815261353360f01b6020820152906001600160801b031015612adf5760405162461bcd60e51b815260040161055b919061512a565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b031015612b265760405162461bcd60e51b815260040161055b919061512a565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b031015612b6d5760405162461bcd60e51b815260040161055b919061512a565b506060810151600287018054608084015160038a0180546001600160801b03199081166001600160801b038085169190911790925560a08701519316818616178116600160801b84831681029190911790945560018b01546040516001600160a01b038c16967f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a96612c0e96919594919380831693919004909116906154ec565b60405180910390a2505050505050565b600082820183811015610f685760405162461bcd60e51b815260040161055b9061515d565b6000610f6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f1b565b604080518082019091526002815261373760f01b602082015260808310612cbf5760405162461bcd60e51b815260040161055b919061512a565b508160020281612cd0576000612cd3565b60015b60ff16901b826002026001901b19846000015416178360000181905550505050565b612d4d846323b872dd60e01b858585604051602401612d1693929190614ead565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f47565b50505050565b604080518082019091526002815261373760f01b602082015260808310612d8d5760405162461bcd60e51b815260040161055b919061512a565b508160020260010181612da1576000612da4565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906126cc575050151592915050565b603854603c54604080518082019091526002815261363560f01b6020820152908210612e415760405162461bcd60e51b815260040161055b919061512a565b506001600160a01b038216600090815260356020526040812060070154600160a01b900460ff16151580612eaa57506000805260376020527fa0a618d80eda9243166be83cb7421d97e9dab6ddddd3c70ac7a6b4440256e8e7546001600160a01b038481169116145b905080610c3757506001600160a01b03919091166000818152603560209081526040808320600701805460ff60a01b1916600160a01b60ff8816021790558483526037909152902080546001600160a01b0319169091179055600101603855565b80516001600160a01b0390811660009081526035602090815260408083208186015185168452603683528184206034548351631f94a27560e31b81529351929691959491169263fca513a89260048083019392829003018186803b158015612f7257600080fd5b505afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa91906147b1565b9050600061304b612fba8561402c565b600a0a61162d8760600151856001600160a01b031663b3596f078a600001516040518263ffffffff1660e01b8152600401612ff59190614df1565b60206040518083038186803b15801561300d57600080fd5b505afa158015613021573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130459190614bd4565b90613442565b905073__$de8c0cf1a7d7c36c802af9a64fb9d86036$__63721a92f986600001518688604001518960600151868b60800151603a5460358c60376038548e6040518d63ffffffff1660e01b81526004016130b09c9b9a99989796959493929190614f3e565b60006040518083038186803b1580156130c857600080fd5b505af41580156130dc573d6000803e3d6000fd5b505050506130e9846127e9565b6000806001876080015160028111156130fe57fe5b600281111561310957fe5b14156131be576003860154600587015460208901516040808b015160608c0151915163b3f1c93d60e01b81526001600160801b0390951696506001600160a01b039093169363b3f1c93d93613165939290918890600401614ed1565b602060405180830381600087803b15801561317f57600080fd5b505af1158015613193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b79190614bb8565b905061326d565b600686015460208801516040808a015160608b015160018b0154925163b3f1c93d60e01b81526001600160a01b039095169463b3f1c93d946132189490939291600160801b9091046001600160801b031690600401614e05565b602060405180830381600087803b15801561323257600080fd5b505af1158015613246573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326a9190614bb8565b90505b801561328f57600786015461328f908690600160a01b900460ff166001612c85565b6132be87600001518860a0015160008a60e001516132ae5760006132b4565b8a606001515b8a939291906128b6565b8660e0015115613356578660a001516001600160a01b0316634efecaa5886020015189606001516040518363ffffffff1660e01b8152600401613302929190614e36565b602060405180830381600087803b15801561331c57600080fd5b505af1158015613330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133549190614bd4565b505b8660c0015161ffff1687604001516001600160a01b031688600001516001600160a01b03167fc6a898309e823ee50bac64e45ca8adba6690e99e7841c45d754e2a38e9019d9b8a602001518b606001518c60800151600160028111156133b857fe5b8e6080015160028111156133c857fe5b60028111156133d357fe5b146133f25760028d0154600160801b90046001600160801b03166133f4565b885b6040516125349493929190614fe8565b805182511460405180604001604052806002815260200161373360f01b81525090610c375760405162461bcd60e51b815260040161055b919061512a565b60008261345157506000610712565b8282028284828161345e57fe5b0414610f685760405162461bcd60e51b815260040161055b906151c9565b6000610f6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614036565b60006134db6134cc8461406d565b6134d58461406d565b906140bd565b905060006134f16134ea614168565b8390612c1e565b600186015490915061350d9082906001600160801b0316613b5d565b604080518082019091526002815261353160f01b60208201529091506001600160801b038211156135515760405162461bcd60e51b815260040161055b919061512a565b5060019490940180546001600160801b0319166001600160801b0390951694909417909355505050565b600080600080600061358b6145fb565b6135948a614178565b156135b2576000806000806000199550955095509550955050613a2e565b600060e08201525b878160e00151101561398d5760e08101516135d6908b9061417d565b6135df5761397d565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020613616816141ce565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916136689190600401614df1565b60206040518083038186803b15801561368057600080fd5b505afa158015613694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b89190614bd4565b825260c0820151158015906136d8575060e08201516136d8908c906141f9565b156137f6578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016137209190614df1565b60206040518083038186803b15801561373857600080fd5b505afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137709190614bd4565b604083018190526020830151835160009261378f929161162d91613442565b6101208401519091506137a29082612c1e565b61012084015260a08301516137c8906137bc908390613442565b61016085015190612c1e565b61016084015260c08301516137ee906137e2908390613442565b61018085015190612c1e565b610180840152505b60e0820151613806908c90614251565b1561397b578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040161384e9190614df1565b60206040518083038186803b15801561386657600080fd5b505afa15801561387a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389e9190614bd4565b8260600181815250506139488160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016138ed9190614df1565b60206040518083038186803b15801561390557600080fd5b505afa158015613919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393d9190614bd4565b606084015190612c1e565b606083018190526020830151835161397492613968929161162d91613442565b61014084015190612c1e565b6101408301525b505b60e08101805160010190526135ba565b6000816101200151116139a15760006139b6565b6101208101516101608201516139b69161347c565b6101608201526101208101516139cd5760006139e2565b6101208101516101808201516139e29161347c565b61018082018190526101208201516101408301516139ff926142a2565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b600080613a4985846142c6565b905083811015613a5d576000915050610f68565b613a678185612c43565b95945050505050565b600290565b303b1590565b600381015460009064ffffffffff600160801b9091048116904216811415613ab257505060018101546001600160801b03166106ec565b600183015460028401546000916126cc916001600160801b03918216916126c6911685614335565b604080516020810190915284548152600090613afc908890889087878761357b565b945050505050670de0b6b3a7640000811015604051806040016040528060018152602001601b60f91b81525090613b465760405162461bcd60e51b815260040161055b919061512a565b5050505050505050565b6000610f68838342614373565b6000821580613b6a575081155b15613b7757506000610712565b816b019d971e4fe8401e740000001981613b8d57fe5b0483111560405180604001604052806002815260200161068760f31b81525090613bca5760405162461bcd60e51b815260040161055b919061512a565b506b033b2e3c9fd0803ce80000006002815b048385020181613be857fe5b049392505050565b600285015460009081906001600160801b031685858215613d1e576000613c178488614335565b9050613c23818a613b5d565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115613c675760405162461bcd60e51b815260040161055b919061512a565b5060018b0180546001600160801b0319166001600160801b0385161790558915613d1c5760028b0154600090613cad90600160801b90046001600160801b031689613b50565b9050613cb9818a613b5d565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115613cfd5760405162461bcd60e51b815260040161055b919061512a565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b613d55614695565b613d5e87613f10565b6101208201819052613d70575061143b565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015613dc057600080fd5b505afa158015613dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df89190614ce3565b64ffffffffff1661014085015260a084015282526020820152613e1b8686613b5d565b6080820152613e2a8684613b5d565b606082015260a0810151610140820151613e4c919064ffffffffff8516614373565b60c082018190526020820151613e6191613b5d565b60408201819052608082015182516060840151613e8693926109619290918391612c1e565b60e08201819052610120820151613e9d91906142c6565b61010082018190521561230957600480880154610100830151604051637df5bd3b60e01b81526001600160a01b0390921692637df5bd3b92613ee2929189910161547a565b600060405180830381600087803b158015613efc57600080fd5b505af11580156105c3573d6000803e3d6000fd5b5460401c61ffff1690565b60008184841115613f3f5760405162461bcd60e51b815260040161055b919061512a565b505050900390565b613f59826001600160a01b0316612dc9565b613f755760405162461bcd60e51b815260040161055b906152a2565b60006060836001600160a01b031683604051613f919190614dd5565b6000604051808303816000865af19150503d8060008114613fce576040519150601f19603f3d011682016040523d82523d6000602084013e613fd3565b606091505b509150915081613ff55760405162461bcd60e51b815260040161055b90615194565b805115612d4d57808060200190518101906140109190614bb8565b612d4d5760405162461bcd60e51b815260040161055b90615258565b5460301c60ff1690565b600081836140575760405162461bcd60e51b815260040161055b919061512a565b50600083858161406357fe5b0495945050505050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906140b65760405162461bcd60e51b815260040161055b919061512a565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826140f75760405162461bcd60e51b815260040161055b919061512a565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156141455760405162461bcd60e51b815260040161055b919061512a565b5082816b033b2e3c9fd0803ce80000008602018161415f57fe5b04949350505050565b6b033b2e3c9fd0803ce800000090565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906141bc5760405162461bcd60e51b815260040161055b919061512a565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b815250906142385760405162461bcd60e51b815260040161055b919061512a565b5050815160016002830281019190911c16151592915050565b60006080821060405180604001604052806002815260200161373760f01b815250906142905760405162461bcd60e51b815260040161055b919061512a565b50509051600160029092021c16151590565b6000826142b25750600019610f68565b6126cc836142c086856142c6565b90614449565b60008215806142d3575081155b156142e057506000610712565b8161138819816142ec57fe5b0483111560405180604001604052806002815260200161068760f31b815250906143295760405162461bcd60e51b815260040161055b919061512a565b50612710600281613bdc565b6000806143494264ffffffffff8516612c43565b90506126cc614356614168565b6301e133806143658785613442565b8161436c57fe5b0490612c1e565b6000806143878364ffffffffff8616612c43565b90508061439e57614396614168565b915050610f68565b60001981016000600283116143b45760006143b9565b600283035b90506301e13380870460006143ce8280613b5d565b905060006143dc8284613b5d565b9050600060026143f0846130458a8a613442565b816143f757fe5b0490506000600661440e8461304589818d8d613442565b8161441557fe5b04905061443981614433848161442b8a8e613442565b614433614168565b90612c1e565b9c9b505050505050505050505050565b604080518082019091526002815261035360f41b6020820152600090826144835760405162461bcd60e51b815260040161055b919061512a565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156144cd5760405162461bcd60e51b815260040161055b919061512a565b508281670de0b6b3a76400008602018161415f57fe5b6040518061018001604052806144f761454e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff1681525090565b80356107128161556f565b60008083601f840112614712578182fd5b50813567ffffffffffffffff811115614729578182fd5b60208301915083602080830285010111156127e257600080fd5b60008083601f840112614754578182fd5b50813567ffffffffffffffff81111561476b578182fd5b6020830191508360208285010111156127e257600080fd5b803561ffff8116811461071257600080fd5b6000602082840312156147a6578081fd5b8135610f688161556f565b6000602082840312156147c2578081fd5b8151610f688161556f565b600080604083850312156147df578081fd5b82356147ea8161556f565b915060208301356147fa8161556f565b809150509250929050565b600080600080600060a0868803121561481c578081fd5b85356148278161556f565b945060208601356148378161556f565b935060408601356148478161556f565b925060608601356148578161556f565b915060808601356148678161556f565b809150509295509295909350565b600080600080600060a0868803121561488c578081fd5b85356148978161556f565b945060208601356148a78161556f565b935060408601356148b78161556f565b925060608601359150608086013561486781615584565b60008060008060008060c087890312156148e6578081fd5b86356148f18161556f565b955060208701356149018161556f565b945060408701356149118161556f565b959894975094956060810135955060808101359460a0909101359350915050565b600080600080600080600080600080600060e08c8e031215614952578485fd5b61495c8d8d6146f6565b9a5067ffffffffffffffff8060208e01351115614977578586fd5b6149878e60208f01358f01614701565b909b50995060408d013581101561499c578586fd5b6149ac8e60408f01358f01614701565b909950975060608d01358110156149c1578586fd5b6149d18e60608f01358f01614701565b90975095506149e38e60808f016146f6565b94508060a08e013511156149f5578384fd5b50614a068d60a08e01358e01614743565b9093509150614a188d60c08e01614783565b90509295989b509295989b9093969950565b60008060408385031215614a3c578081fd5b8235614a478161556f565b915060208301356147fa81615584565b60008060408385031215614a69578182fd5b8235614a748161556f565b946020939093013593505050565b600080600060608486031215614a96578081fd5b8335614aa18161556f565b9250602084013591506040840135614ab88161556f565b809150509250925092565b60008060008060808587031215614ad8578182fd5b8435614ae38161556f565b9350602085013592506040850135614afa8161556f565b9150614b098660608701614783565b905092959194509250565b60008060008060808587031215614b29578182fd5b8435614b348161556f565b935060208501359250604085013591506060850135614b528161556f565b939692955090935050565b600080600080600060a08688031215614b74578283fd5b8535614b7f8161556f565b945060208601359350604086013592506148578760608801614783565b600060208284031215614bad578081fd5b8135610f6881615584565b600060208284031215614bc9578081fd5b8151610f6881615584565b600060208284031215614be5578081fd5b5051919050565b60008060408385031215614bfe578182fd5b82519150602083015167ffffffffffffffff80821115614c1c578283fd5b818501915085601f830112614c2f578283fd5b815181811115614c3d578384fd5b604051601f8201601f191681016020018381118282101715614c5d578586fd5b604052818152838201602001881015614c74578485fd5b614c85826020830160208701615543565b809450505050509250929050565b60008060408385031215614ca5578182fd5b505080516020909101519092909150565b600080600060608486031215614cca578081fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215614cf8578182fd5b845193506020850151925060408501519150606085015164ffffffffff81168114614b52578182fd5b6001600160a01b0316815260200190565b6001600160a01b03169052565b6000815180845260208085019450808401835b83811015614d6e57815187529582019590820190600101614d52565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60038110614dad57fe5b9052565b519052565b6001600160801b03169052565b64ffffffffff169052565b60ff169052565b60008251614de7818460208701615543565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292909316602083015260408201526001600160801b03909116606082015260800190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091526001600160801b0316604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252901515608082015260a00190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03988916815296909716602087015260408601949094526060850192909252608084015260a083015260c082015260e08101919091526101000190565b6001600160a01b039c8d168152602081019b909b52988b1660408b015260608a0197909752608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408301529091166101608201526101800190565b6001600160a01b039889168152602081019790975260408701959095526060860193909352608085019190915260a084015260c083015290911660e08201526101000190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b600060a0820160a08352806150238b836154c9565b90508b9150825b8b81101561505657602083016150498361504483876146f6565b614d21565b909350915060010161502a565b5083810360208501528881526001600160fb1b03891115615075578283fd5b602089029150818a602083013701602081810183815284830390910160408501526150a08189614d3f565b9150506150b06060840187614d32565b82810360808401526150c3818587614d79565b9b9a5050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156151135783516001600160a01b0316835292840192918401916001016150ee565b50909695505050505050565b901515815260200190565b6000602082528251806020840152615149816040850160208701615543565b601f01601f19169190910160400192915050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b9051815260200190565b6000610180820190506152f7828451614db1565b60208301516153096020840182614db6565b50604083015161531c6040840182614db6565b50606083015161532f6060840182614db6565b5060808301516153426080840182614db6565b5060a083015161535560a0840182614db6565b5060c083015161536860c0840182614dc3565b5060e083015161537b60e0840182614d32565b506101008084015161538f82850182614d32565b5050610120808401516153a482850182614d32565b5050610140808401516153b982850182614d32565b5050610160808401516153ce82850182614dce565b505092915050565b9485526001600160a01b03938416602086015291831660408501528216606084015216608082015260a00190565b9788526001600160a01b03968716602089015294151560408801526060870193909352608086019190915260a085015260c08401521660e08201526101000190565b600060a0820190508682528560208301528460408301528360608301526154706080830184614da3565b9695505050505050565b918252602082015260400190565b8681526020810186905260c081016154a36040830187614da3565b6001600160a01b03949094166060820152608081019290925260a0909101529392505050565b90815260200190565b928352602083019190915261ffff16604082015260600190565b948552602085019390935260408401919091526001600160801b03908116606084015216608082015260a00190565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60005b8381101561555e578181015183820152602001615546565b83811115612d4d5750506000910152565b6001600160a01b0381168114611bb357600080fd5b8015158114611bb357600080fdfea2646970667358221220c4d0c037e646bcf516c04e51880f3913c7c213e7e333d8b88b62d0589d4e1a2764736f6c634300060c0033", + "linkReferences": { + "contracts/protocol/libraries/logic/ReserveLogic.sol": { + "ReserveLogic": [ + { + "length": 20, + "start": 4103 + } + ] + }, + "contracts/protocol/libraries/logic/ValidationLogic.sol": { + "ValidationLogic": [ + { + "length": 20, + "start": 1986 + }, + { + "length": 20, + "start": 2787 + }, + { + "length": 20, + "start": 3358 + }, + { + "length": 20, + "start": 4315 + }, + { + "length": 20, + "start": 7798 + }, + { + "length": 20, + "start": 9069 + }, + { + "length": 20, + "start": 12404 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/protocol/libraries/logic/ReserveLogic.sol": { + "ReserveLogic": [ + { + "length": 20, + "start": 4066 + } + ] + }, + "contracts/protocol/libraries/logic/ValidationLogic.sol": { + "ValidationLogic": [ + { + "length": 20, + "start": 1949 + }, + { + "length": 20, + "start": 2750 + }, + { + "length": 20, + "start": 3321 + }, + { + "length": 20, + "start": 4278 + }, + { + "length": 20, + "start": 7761 + }, + { + "length": 20, + "start": 9032 + }, + { + "length": 20, + "start": 12367 + } + ] + } + } +} diff --git a/eth_defi/abi/aave_v2/LendingPoolAddressesProvider.json b/eth_defi/abi/aave_v2/LendingPoolAddressesProvider.json new file mode 100644 index 00000000..6a44b680 --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingPoolAddressesProvider.json @@ -0,0 +1,485 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingPoolAddressesProvider", + "sourceName": "contracts/protocol/configuration/LendingPoolAddressesProvider.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "marketId", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "hasProxy", + "type": "bool" + } + ], + "name": "AddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ConfigurationAdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "EmergencyAdminUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingPoolCollateralManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingPoolConfiguratorUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingPoolUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "LendingRateOracleUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "newMarketId", + "type": "string" + } + ], + "name": "MarketIdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "PriceOracleUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "ProxyCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getEmergencyAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingPool", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingPoolCollateralManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingPoolConfigurator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getLendingRateOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMarketId", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPriceOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "setAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "implementationAddress", + "type": "address" + } + ], + "name": "setAddressAsProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "emergencyAdmin", + "type": "address" + } + ], + "name": "setEmergencyAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setLendingPoolCollateralManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "configurator", + "type": "address" + } + ], + "name": "setLendingPoolConfiguratorImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "setLendingPoolImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingRateOracle", + "type": "address" + } + ], + "name": "setLendingRateOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "marketId", + "type": "string" + } + ], + "name": "setMarketId", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "setPoolAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "priceOracle", + "type": "address" + } + ], + "name": "setPriceOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001dca38038062001dca833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b506040525050506000620000ff6200015b60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000154816200015f565b50620002b0565b3390565b80516200017490600190602084019062000214565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001d6578181015183820152602001620001bc565b50505050905090810190601f168015620002045780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025757805160ff191683800117855562000287565b8280016001018555821562000287579182015b82811115620002875782518255916020019190600101906200026a565b506200029592915062000299565b5090565b5b808211156200029557600081556001016200029a565b611b0a80620002c06000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063c12542df1161007c578063c12542df14610347578063ca446dd91461036d578063ddcaa9ea14610399578063f2fde38b146103a1578063f67b1847146103c7578063fca513a81461046d57610142565b8063715018a614610301578063820d12741461030957806385c858b11461032f5780638da5cb5b14610337578063aecda3781461033f57610142565b8063398e55531161010a578063398e5553146101de578063530e784f14610204578063568ef4701461022a5780635aef021f146102a75780635dcc528c146102cd578063712d9171146102f957610142565b80630261bf8b1461014757806321f8a7211461016b578063283d62ad1461018857806335da3394146101b05780633618abba146101d6575b600080fd5b61014f610475565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b5035610494565b6101ae6004803603602081101561019e57600080fd5b50356001600160a01b03166104af565b005b6101ae600480360360208110156101c657600080fd5b50356001600160a01b0316610587565b61014f610664565b6101ae600480360360208110156101f457600080fd5b50356001600160a01b0316610685565b6101ae6004803603602081101561021a57600080fd5b50356001600160a01b0316610765565b61023261083f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae600480360360208110156102bd57600080fd5b50356001600160a01b03166108d4565b6101ae600480360360408110156102e357600080fd5b50803590602001356001600160a01b031661097c565b61014f610a25565b6101ae610a45565b6101ae6004803603602081101561031f57600080fd5b50356001600160a01b0316610ae7565b61014f610bc8565b61014f610bef565b61014f610bfe565b6101ae6004803603602081101561035d57600080fd5b50356001600160a01b0316610c16565b6101ae6004803603604081101561038357600080fd5b50803590602001356001600160a01b0316610ccb565b61014f610d8c565b6101ae600480360360208110156103b757600080fd5b50356001600160a01b0316610da9565b6101ae600480360360208110156103dd57600080fd5b8101906020810181356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ea1945050505050565b61014f610f05565b600061048f6b13115391125391d7d413d3d360a21b610494565b905090565b6000908152600260205260409020546001600160a01b031690565b6104b7610f1f565b6000546001600160a01b03908116911614610507576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b61058f610f1f565b6000546001600160a01b039081169116146105df576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b600061048f724c454e44494e475f524154455f4f5241434c4560681b610494565b61068d610f1f565b6000546001600160a01b039081169116146106dd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b61076d610f1f565b6000546001600160a01b039081169116146107bd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ca5780601f1061089f576101008083540402835291602001916108ca565b820191906000526020600020905b8154815290600101906020018083116108ad57829003601f168201915b5050505050905090565b6108dc610f1f565b6000546001600160a01b0390811691161461092c576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109456b13115391125391d7d413d3d360a21b82610f23565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610984610f1f565b6000546001600160a01b039081169116146109d4576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109de8282610f23565b604080518381526001602082015281516001600160a01b038416927ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff31928290030190a25050565b600061048f7121a7a62620aa22a920a62fa6a0a720a3a2a960711b610494565b610a4d610f1f565b6000546001600160a01b03908116911614610a9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610aef610f1f565b6000546001600160a01b03908116911614610b3f576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b724c454e44494e475f524154455f4f5241434c4560681b600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b600061048f782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b610494565b6000546001600160a01b031690565b600061048f692827a7a62fa0a226a4a760b11b610494565b610c1e610f1f565b6000546001600160a01b03908116911614610c6e576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610c94782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b82610f23565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b610cd3610f1f565b6000546001600160a01b03908116911614610d23576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600082815260026020908152604080832080546001600160a01b0319166001600160a01b03861690811790915581518681529283019390935280517ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319281900390910190a25050565b600061048f6e22a6a2a923a2a721acafa0a226a4a760891b610494565b610db1610f1f565b6000546001600160a01b03908116911614610e01576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6001600160a01b038116610e465760405162461bcd60e51b8152600401808060200182810382526026815260200180611a8f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ea9610f1f565b6000546001600160a01b03908116911614610ef9576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610f02816111cb565b50565b600061048f6b50524943455f4f5241434c4560a01b610494565b3390565b6000828152600260209081526040918290205482513060248083019190915284518083039091018152604490910190935290820180516001600160e01b031663189acdbd60e31b1790526001600160a01b0316908190816110f25730604051610f8b9061127b565b6001600160a01b03909116815260405190819003602001906000f080158015610fb8573d6000803e3d6000fd5b509150816001600160a01b031663d1f5789485836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561102757818101518382015260200161100f565b50505050905090810190601f1680156110545780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155825189815292519093507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e2311424389281900390910190a26111c4565b816001600160a01b0316634f1ef28685836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115e578181015183820152602001611146565b50505050905090810190601f16801561118b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156111ab57600080fd5b505af11580156111bf573d6000803e3d6000fd5b505050505b5050505050565b80516111de906001906020840190611288565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578181015183820152602001611226565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6107738061131c83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112c957805160ff19168380011785556112f6565b828001600101855582156112f6579182015b828111156112f65782518255916020019190600101906112db565b50611302929150611306565b5090565b5b80821115611302576000815560010161130756fe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220f13a46c313fb355d6a9419920c6e2fd982efdc1f9b41ed61f3e408eb17ac382764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063c12542df1161007c578063c12542df14610347578063ca446dd91461036d578063ddcaa9ea14610399578063f2fde38b146103a1578063f67b1847146103c7578063fca513a81461046d57610142565b8063715018a614610301578063820d12741461030957806385c858b11461032f5780638da5cb5b14610337578063aecda3781461033f57610142565b8063398e55531161010a578063398e5553146101de578063530e784f14610204578063568ef4701461022a5780635aef021f146102a75780635dcc528c146102cd578063712d9171146102f957610142565b80630261bf8b1461014757806321f8a7211461016b578063283d62ad1461018857806335da3394146101b05780633618abba146101d6575b600080fd5b61014f610475565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b5035610494565b6101ae6004803603602081101561019e57600080fd5b50356001600160a01b03166104af565b005b6101ae600480360360208110156101c657600080fd5b50356001600160a01b0316610587565b61014f610664565b6101ae600480360360208110156101f457600080fd5b50356001600160a01b0316610685565b6101ae6004803603602081101561021a57600080fd5b50356001600160a01b0316610765565b61023261083f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae600480360360208110156102bd57600080fd5b50356001600160a01b03166108d4565b6101ae600480360360408110156102e357600080fd5b50803590602001356001600160a01b031661097c565b61014f610a25565b6101ae610a45565b6101ae6004803603602081101561031f57600080fd5b50356001600160a01b0316610ae7565b61014f610bc8565b61014f610bef565b61014f610bfe565b6101ae6004803603602081101561035d57600080fd5b50356001600160a01b0316610c16565b6101ae6004803603604081101561038357600080fd5b50803590602001356001600160a01b0316610ccb565b61014f610d8c565b6101ae600480360360208110156103b757600080fd5b50356001600160a01b0316610da9565b6101ae600480360360208110156103dd57600080fd5b8101906020810181356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ea1945050505050565b61014f610f05565b600061048f6b13115391125391d7d413d3d360a21b610494565b905090565b6000908152600260205260409020546001600160a01b031690565b6104b7610f1f565b6000546001600160a01b03908116911614610507576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b61058f610f1f565b6000546001600160a01b039081169116146105df576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b600061048f724c454e44494e475f524154455f4f5241434c4560681b610494565b61068d610f1f565b6000546001600160a01b039081169116146106dd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b61076d610f1f565b6000546001600160a01b039081169116146107bd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ca5780601f1061089f576101008083540402835291602001916108ca565b820191906000526020600020905b8154815290600101906020018083116108ad57829003601f168201915b5050505050905090565b6108dc610f1f565b6000546001600160a01b0390811691161461092c576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109456b13115391125391d7d413d3d360a21b82610f23565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610984610f1f565b6000546001600160a01b039081169116146109d4576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109de8282610f23565b604080518381526001602082015281516001600160a01b038416927ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff31928290030190a25050565b600061048f7121a7a62620aa22a920a62fa6a0a720a3a2a960711b610494565b610a4d610f1f565b6000546001600160a01b03908116911614610a9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610aef610f1f565b6000546001600160a01b03908116911614610b3f576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b724c454e44494e475f524154455f4f5241434c4560681b600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b600061048f782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b610494565b6000546001600160a01b031690565b600061048f692827a7a62fa0a226a4a760b11b610494565b610c1e610f1f565b6000546001600160a01b03908116911614610c6e576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610c94782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b82610f23565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b610cd3610f1f565b6000546001600160a01b03908116911614610d23576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600082815260026020908152604080832080546001600160a01b0319166001600160a01b03861690811790915581518681529283019390935280517ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319281900390910190a25050565b600061048f6e22a6a2a923a2a721acafa0a226a4a760891b610494565b610db1610f1f565b6000546001600160a01b03908116911614610e01576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6001600160a01b038116610e465760405162461bcd60e51b8152600401808060200182810382526026815260200180611a8f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ea9610f1f565b6000546001600160a01b03908116911614610ef9576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610f02816111cb565b50565b600061048f6b50524943455f4f5241434c4560a01b610494565b3390565b6000828152600260209081526040918290205482513060248083019190915284518083039091018152604490910190935290820180516001600160e01b031663189acdbd60e31b1790526001600160a01b0316908190816110f25730604051610f8b9061127b565b6001600160a01b03909116815260405190819003602001906000f080158015610fb8573d6000803e3d6000fd5b509150816001600160a01b031663d1f5789485836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561102757818101518382015260200161100f565b50505050905090810190601f1680156110545780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155825189815292519093507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e2311424389281900390910190a26111c4565b816001600160a01b0316634f1ef28685836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115e578181015183820152602001611146565b50505050905090810190601f16801561118b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156111ab57600080fd5b505af11580156111bf573d6000803e3d6000fd5b505050505b5050505050565b80516111de906001906020840190611288565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578181015183820152602001611226565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6107738061131c83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112c957805160ff19168380011785556112f6565b828001600101855582156112f6579182015b828111156112f65782518255916020019190600101906112db565b50611302929150611306565b5090565b5b80821115611302576000815560010161130756fe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220f13a46c313fb355d6a9419920c6e2fd982efdc1f9b41ed61f3e408eb17ac382764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/LendingPoolAddressesProviderRegistry.json b/eth_defi/abi/aave_v2/LendingPoolAddressesProviderRegistry.json new file mode 100644 index 00000000..295ea6c0 --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingPoolAddressesProviderRegistry.json @@ -0,0 +1,152 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingPoolAddressesProviderRegistry", + "sourceName": "contracts/protocol/configuration/LendingPoolAddressesProviderRegistry.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "AddressesProviderRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "AddressesProviderUnregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addressesProvider", + "type": "address" + } + ], + "name": "getAddressesProviderIdByAddress", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAddressesProvidersList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "registerAddressesProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + } + ], + "name": "unregisterAddressesProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6108698061007d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d0267be71461012e578063d258191e14610166578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b2610322565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a861046b565b61011261050d565b604080516001600160a01b039092168252519081900360200190f35b6101546004803603602081101561014457600080fd5b50356001600160a01b031661051c565b60408051918252519081900360200190f35b6100a86004803603604081101561017c57600080fd5b506001600160a01b038135169060200135610537565b6100a8600480360360208110156101a857600080fd5b50356001600160a01b0316610651565b6101c0610749565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600060016000836001600160a01b03166001600160a01b03168152602001908152602001600020541160405180604001604052806002815260200161343160f01b815250906102dd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102a257818101518382015260200161028a565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b606080600280548060200260200160405190810160405280929190818152602001828054801561037b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161035d575b5050505050905060008151905060608167ffffffffffffffff811180156103a157600080fd5b506040519080825280602002602001820160405280156103cb578160200160208202803683370190505b50905060005b82811015610463576000600160008684815181106103eb57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054111561045b5783818151811061042657fe5b602002602001015182828151811061043a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016103d1565b509250505090565b610473610749565b6000546001600160a01b039081169116146104c3576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b031660009081526001602052604090205490565b61053f610749565b6000546001600160a01b0390811691161461058f576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6040805180820190915260028152611b9960f11b6020820152816105f45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102a257818101518382015260200161028a565b506001600160a01b03821660009081526001602052604090208190556106198261074d565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b610659610749565b6000546001600160a01b039081169116146106a9576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6001600160a01b0381166106ee5760405162461bcd60e51b81526004018080602001828103825260268152602001806107ee6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60025460005b8181101561079c57826001600160a01b03166002828154811061077257fe5b6000918252602090912001546001600160a01b031614156107945750506107ea565b600101610753565b5050600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122028449229e270c38757cefd266a37ac596d145eb7cb558ecc94f768be6eafe61f64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461010a578063d0267be71461012e578063d258191e14610166578063f2fde38b146101925761007d565b80630de2670714610082578063365ccbbf146100aa578063715018a614610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101b8565b005b6100b2610322565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100ee5781810151838201526020016100d6565b505050509050019250505060405180910390f35b6100a861046b565b61011261050d565b604080516001600160a01b039092168252519081900360200190f35b6101546004803603602081101561014457600080fd5b50356001600160a01b031661051c565b60408051918252519081900360200190f35b6100a86004803603604081101561017c57600080fd5b506001600160a01b038135169060200135610537565b6100a8600480360360208110156101a857600080fd5b50356001600160a01b0316610651565b6101c0610749565b6000546001600160a01b03908116911614610210576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600060016000836001600160a01b03166001600160a01b03168152602001908152602001600020541160405180604001604052806002815260200161343160f01b815250906102dd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102a257818101518382015260200161028a565b50505050905090810190601f1680156102cf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506001600160a01b038116600081815260016020526040808220829055517f851e5971c053e6b76e3a1e0b8ffa81430df738007fad86e195c409a757faccd29190a250565b606080600280548060200260200160405190810160405280929190818152602001828054801561037b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161035d575b5050505050905060008151905060608167ffffffffffffffff811180156103a157600080fd5b506040519080825280602002602001820160405280156103cb578160200160208202803683370190505b50905060005b82811015610463576000600160008684815181106103eb57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054111561045b5783818151811061042657fe5b602002602001015182828151811061043a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016103d1565b509250505090565b610473610749565b6000546001600160a01b039081169116146104c3576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b031660009081526001602052604090205490565b61053f610749565b6000546001600160a01b0390811691161461058f576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6040805180820190915260028152611b9960f11b6020820152816105f45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102a257818101518382015260200161028a565b506001600160a01b03821660009081526001602052604090208190556106198261074d565b6040516001600160a01b038316907f2db38786c10176b033a1608361716b0ca992e3af55dc05b6dc710969790beeda90600090a25050565b610659610749565b6000546001600160a01b039081169116146106a9576040805162461bcd60e51b81526020600482018190526024820152600080516020610814833981519152604482015290519081900360640190fd5b6001600160a01b0381166106ee5760405162461bcd60e51b81526004018080602001828103825260268152602001806107ee6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b60025460005b8181101561079c57826001600160a01b03166002828154811061077257fe5b6000918252602090912001546001600160a01b031614156107945750506107ea565b600101610753565b5050600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383161790555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122028449229e270c38757cefd266a37ac596d145eb7cb558ecc94f768be6eafe61f64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/LendingPoolCollateralManager.json b/eth_defi/abi/aave_v2/LendingPoolCollateralManager.json new file mode 100644 index 00000000..0c8fd0ad --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingPoolCollateralManager.json @@ -0,0 +1,142 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingPoolCollateralManager", + "sourceName": "contracts/protocol/lendingpool/LendingPoolCollateralManager.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "collateral", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "principal", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidatedCollateralAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "LiquidationCall", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "ReserveUsedAsCollateralEnabled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "collateralAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "debtAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "debtToCover", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "receiveAToken", + "type": "bool" + } + ], + "name": "liquidationCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526000805534801561001457600080fd5b506129ef806100246000396000f3fe608060405234801561001057600080fd5b506004361061002a5760003560e01c8062a718a91461002f575b600080fd5b610073600480360360a081101561004557600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013515156100f2565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6001600160a01b0380861660009081526035602090815260408083208885168452818420948816845260369092528220919260609261012f61274e565b6040805160208082018352845482526038546034548451631f94a27560e31b815294516101c1958f95603595909460379490936001600160a01b039091169263fca513a8926004808301939192829003018186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d60208110156101ba57600080fd5b5051610971565b610140860152506101d892508b9150859050610e37565b60408301819052602083018290526101408301516101fd928792879287929091610f3a565b6102008301526101e08201819052600090600981111561021957fe5b600981111561022457fe5b1461024257806101e001518161020001519550955050505050610967565b6004808501546001600160a01b039081166101808401819052604080516370a0823160e01b8152928d169383019390935291516370a0823191602480820192602092909190829003018186803b15801561029b57600080fd5b505afa1580156102af573d6000803e3d6000fd5b505050506040513d60208110156102c557600080fd5b50518152604081015160208201516102ea91611388916102e491611077565b906110da565b6060820181905288116102fd5787610303565b80606001515b60808201819052815161031e91869186918f918f91906111c4565b6101208301819052610100830191909152608082015111156103465761012081015160808201525b866104085760008b6001600160a01b03166370a082318361018001516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561039f57600080fd5b505afa1580156103b3573d6000803e3d6000fd5b505050506040513d60208110156103c957600080fd5b505161010083015190915081101561040657600560405180604001604052806002815260200161343560f01b815250965096505050505050610967565b505b6104118361143d565b80608001518160400151106104b45760068301546080820151600185015460408051637a94c56560e11b81526001600160a01b038e811660048301526024820194909452600160801b9092046001600160801b0316604483015251919092169163f5298aca91606480830192600092919082900301818387803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b505050506105d8565b60408101511561054d57600683015460408281015160018601548251637a94c56560e11b81526001600160a01b038e811660048301526024820193909352600160801b9091046001600160801b03166044820152915192169163f5298aca9160648082019260009290919082900301818387803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050505b6005830154604082015160808301516001600160a01b0390921691639dc29fac918c9161057991611507565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b505050505b600483015460808201516105fb9185918d916001600160a01b0316906000611549565b8615610777578061018001516001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561065357600080fd5b505afa158015610667573d6000803e3d6000fd5b505050506040513d602081101561067d57600080fd5b50516101608201526101808101516101008201516040805163f866c31960e01b81526001600160a01b038d8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106ea57600080fd5b505af11580156106fe573d6000803e3d6000fd5b505050508061016001516000141561077257336000908152603660205260409020600785015461073b908290600160a01b900460ff16600161197c565b60405133906001600160a01b038e16907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3505b61082f565b6107808461143d565b61018081015161010082015161079d9186918e9190600090611549565b610180810151610100820151600186015460408051636b81068560e11b81526001600160a01b038e8116600483015233602483015260448201949094526001600160801b03909216606483015251919092169163d7020d0a91608480830192600092919082900301818387803b15801561081657600080fd5b505af115801561082a573d6000803e3d6000fd5b505050505b8051610100820151141561089a576007840154610859908390600160a01b900460ff16600061197c565b886001600160a01b03168b6001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a35b600483015460808201516108c0916001600160a01b038d81169233929190911690611a20565b886001600160a01b03168a6001600160a01b03168c6001600160a01b03167fe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e0052868460800151856101000151338d60405180858152602001848152602001836001600160a01b03168152602001821515815260200194505050505060405180910390a46000604051806040016040528060028152602001611a1b60f11b81525095509550505050505b9550959350505050565b60008060008060006109816127e8565b61098a8a611a80565b156109a8576000806000806000199550955095509550955050610e29565b600060e08201525b878160e001511015610d885760e08101516109cc908b90611a85565b6109d557610d78565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020610a0c81611b04565b506080860181905260c08601929092525060a0840191909152600a0a6020808401919091526101e08301516040805163b3596f0760e01b81526001600160a01b0392831660048201529051918b169263b3596f0792602480840193829003018186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d6020811015610aa557600080fd5b5051825260c082015115801590610ac7575060e0820151610ac7908c90611b2f565b15610be8578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610b3057600080fd5b505afa158015610b44573d6000803e3d6000fd5b505050506040513d6020811015610b5a57600080fd5b50516040830181905260208301518351600092610b819291610b7b91611bb5565b90611c0e565b610120840151909150610b949082611077565b61012084015260a0830151610bba90610bae908390611bb5565b61016085015190611077565b61016084015260c0830151610be090610bd4908390611bb5565b61018085015190611077565b610180840152505b60e0820151610bf8908c90611c50565b15610d76578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d6020811015610c8b57600080fd5b8101908080519060200190929190505050826060018181525050610d438160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d6020811015610d3657600080fd5b5051606084015190611077565b6060830181905260208301518351610d6f92610d639291610b7b91611bb5565b61014084015190611077565b6101408301525b505b60e08101805160010190526109b0565b600081610120015111610d9c576000610db1565b610120810151610160820151610db191611c0e565b610160820152610120810151610dc8576000610ddd565b610120810151610180820151610ddd91611c0e565b6101808201819052610120820151610140830151610dfa92611ccf565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b6005810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610e8857600080fd5b505afa158015610e9c573d6000803e3d6000fd5b505050506040513d6020811015610eb257600080fd5b50516006840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b5051909590945092505050565b60006060610f4788611cfd565b1580610f595750610f5787611cfd565b155b15610f805750506040805180820190915260018152601960f91b602082015260069061106c565b670de0b6b3a76400008510610fb25750506040805180820190915260028152611a1960f11b602082015260049061106c565b600080610fbe8a611d0d565b118015610fed57506007890154604080516020810190915288548152610fed91600160a01b900460ff16611b2f565b90508061101757505060408051808201909152600280825261343360f01b6020830152915061106c565b84158015611023575083155b1561104c5750506040805180820190915260028152610d0d60f21b60208201526003915061106c565b50506040805180820190915260028152611a1b60f11b6020820152600091505b965096945050505050565b6000828201838110156110d1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008215806110e7575081155b156110f4575060006110d4565b81611388198161110057fe5b0483111560405180604001604052806002815260200161068760f31b815250906111a85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561116d578181015183820152602001611155565b50505050905090810190601f16801561119a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127106002815b0483850201816111bc57fe5b049392505050565b6000806000806000603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d602081101561124457600080fd5b50519050611250612882565b816001600160a01b031663b3596f078b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d60208110156112c757600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b038b8116600483015291519184169163b3596f0791602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b505160608201526113548c611b04565b5060c085015260208401525061136b90508b611d18565b60a0820181905260408201516113b8916113889190600a0a611bb5565b610b7b83602001516102e48560c00151600a0a6113b28e8860600151611bb590919063ffffffff16565b90611bb5565b608082018190528710156114215786935061141a81602001516114146113f28460c00151600a0a8560600151611bb590919063ffffffff16565b610b7b8560a00151600a0a6113b28a8860400151611bb590919063ffffffff16565b90611d22565b925061142c565b806080015193508792505b50919a909950975050505050505050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561148457600080fd5b505afa158015611498573d6000803e3d6000fd5b505050506040513d60208110156114ae57600080fd5b505160018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806114ec8787868887611e15565b915091506114fe878787858588611fce565b50505050505050565b60006110d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121b7565b6115516128bf565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561159557600080fd5b505afa1580156115a9573d6000803e3d6000fd5b505050506040513d60408110156115bf57600080fd5b50805160209182015160c084015260408084019190915260018801546006890154825163b1bf962d60e01b8152925161166394600160801b9093046001600160801b0316936001600160a01b039092169263b1bf962d9260048082019391829003018186803b15801561163157600080fd5b505afa158015611645573d6000803e3d6000fd5b505050506040513d602081101561165b57600080fd5b505190612211565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d928992899289928992919061169e8f6122c2565b6040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060606040518083038186803b15801561171557600080fd5b505afa158015611729573d6000803e3d6000fd5b505050506040513d606081101561173f57600080fd5b50805160208083015160409384015160a086015260808501526060840182905282518084019093526002835261353360f01b908301526001600160801b0310156117ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b03101561183f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b0310156118b45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060608181015160028801805460808086015160038c0180546001600160801b03199081166001600160801b038085169190911790925560a0808a015191909516828816178216600160801b82841681029190911790965560018e01546040805198895260208901949094528784019190915280821697870197909752939095049092169183019190915291516001600160a01b038816927f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a928290030190a2505050505050565b604080518082019091526002815261373760f01b6020820152608083106119e45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5081600202600101816119f85760006119fb565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a7a9085906122cd565b50505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b81525090611af25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b81525090611b9c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5050815160016002830281019190911c16151592915050565b600082611bc4575060006110d4565b82820282848281611bd157fe5b04146110d15760405162461bcd60e51b815260040180806020018281038252602181526020018061296f6021913960400191505060405180910390fd5b60006110d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612485565b60006080821060405180604001604052806002815260200161373760f01b81525090611cbd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600160029092021c16151590565b600082611cdf5750600019611cf6565b611cf383611ced86856110da565b906124ea565b90505b9392505050565b5467010000000000000016151590565b5460101c61ffff1690565b5460301c60ff1690565b604080518082019091526002815261035360f41b602082015260009082611d8a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490612710821904851115611dfc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50828161271086020181611e0c57fe5b04949350505050565b600285015460009081906001600160801b031685858215611f9f576000611e3c84886125e0565b9050611e48818a612211565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115611eba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060018b0180546001600160801b0319166001600160801b0385161790558915611f9d5760028b0154600090611f0090600160801b90046001600160801b031689612626565b9050611f0c818a612211565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115611f7e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b611fd661290d565b611fdf876122c2565b6101208201819052611ff157506121af565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b15801561204157600080fd5b505afa158015612055573d6000803e3d6000fd5b505050506040513d608081101561206b57600080fd5b508051602080830151604084015160609094015164ffffffffff1661014086015260a0850193909352918352908201526120a58686612211565b60808201526120b48684612211565b606082015260a08101516101408201516120d6919064ffffffffff851661262f565b60c0820181905260208201516120eb91612211565b6040820181905260808201518251606084015161211693926121109290918391611077565b90611507565b60e0820181905261012082015161212d91906110da565b6101008201819052156114fe5760048088015461010083015160408051637df5bd3b60e01b81529384019190915260248301879052516001600160a01b0390911691637df5bd3b91604480830192600092919082900301818387803b15801561219557600080fd5b505af11580156121a9573d6000803e3d6000fd5b50505050505b505050505050565b600081848411156122095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505050900390565b600082158061221e575081155b1561222b575060006110d4565b816b019d971e4fe8401e74000000198161224157fe5b0483111560405180604001604052806002815260200161068760f31b815250906122ac5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506b033b2e3c9fd0803ce80000006002816111b0565b5460401c61ffff1690565b6122df826001600160a01b0316612705565b612330576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061236e5780518252601f19909201916020918201910161234f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123d0576040519150601f19603f3d011682016040523d82523d6000602084013e6123d5565b606091505b50915091508161242c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a7a5780806020019051602081101561244857600080fd5b5051611a7a5760405162461bcd60e51b815260040180806020018281038252602a815260200180612990602a913960400191505060405180910390fd5b600081836124d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060008385816124e057fe5b0495945050505050565b604080518082019091526002815261035360f41b6020820152600090826125525760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156125ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b508281670de0b6b3a764000086020181611e0c57fe5b6000806125f44264ffffffffff8516611507565b905061261e61260161273e565b6301e133806126108785611bb5565b8161261757fe5b0490611077565b949350505050565b60006110d18383425b6000806126438364ffffffffff8616611507565b90508061265a5761265261273e565b915050611cf6565b6000198101600060028311612670576000612675565b600283035b90506301e133808704600061268a8280612211565b905060006126988284612211565b9050600060026126ac846113b28a8a611bb5565b816126b357fe5b049050600060066126ca846113b289818d8d611bb5565b816126d157fe5b0490506126f5816126ef84816126e78a8e611bb5565b6126ef61273e565b90611077565b9c9b505050505050505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061261e575050151592915050565b6b033b2e3c9fd0803ce800000090565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600015158152602001600060028111156127d457fe5b815260200160008152602001606081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a6917930f400cbd9d4acee0275b6f05aeb05720b406dda669229665efceb5ca364736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002a5760003560e01c8062a718a91461002f575b600080fd5b610073600480360360a081101561004557600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013515156100f2565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6001600160a01b0380861660009081526035602090815260408083208885168452818420948816845260369092528220919260609261012f61274e565b6040805160208082018352845482526038546034548451631f94a27560e31b815294516101c1958f95603595909460379490936001600160a01b039091169263fca513a8926004808301939192829003018186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d60208110156101ba57600080fd5b5051610971565b610140860152506101d892508b9150859050610e37565b60408301819052602083018290526101408301516101fd928792879287929091610f3a565b6102008301526101e08201819052600090600981111561021957fe5b600981111561022457fe5b1461024257806101e001518161020001519550955050505050610967565b6004808501546001600160a01b039081166101808401819052604080516370a0823160e01b8152928d169383019390935291516370a0823191602480820192602092909190829003018186803b15801561029b57600080fd5b505afa1580156102af573d6000803e3d6000fd5b505050506040513d60208110156102c557600080fd5b50518152604081015160208201516102ea91611388916102e491611077565b906110da565b6060820181905288116102fd5787610303565b80606001515b60808201819052815161031e91869186918f918f91906111c4565b6101208301819052610100830191909152608082015111156103465761012081015160808201525b866104085760008b6001600160a01b03166370a082318361018001516040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561039f57600080fd5b505afa1580156103b3573d6000803e3d6000fd5b505050506040513d60208110156103c957600080fd5b505161010083015190915081101561040657600560405180604001604052806002815260200161343560f01b815250965096505050505050610967565b505b6104118361143d565b80608001518160400151106104b45760068301546080820151600185015460408051637a94c56560e11b81526001600160a01b038e811660048301526024820194909452600160801b9092046001600160801b0316604483015251919092169163f5298aca91606480830192600092919082900301818387803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b505050506105d8565b60408101511561054d57600683015460408281015160018601548251637a94c56560e11b81526001600160a01b038e811660048301526024820193909352600160801b9091046001600160801b03166044820152915192169163f5298aca9160648082019260009290919082900301818387803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050505b6005830154604082015160808301516001600160a01b0390921691639dc29fac918c9161057991611507565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b505050505b600483015460808201516105fb9185918d916001600160a01b0316906000611549565b8615610777578061018001516001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561065357600080fd5b505afa158015610667573d6000803e3d6000fd5b505050506040513d602081101561067d57600080fd5b50516101608201526101808101516101008201516040805163f866c31960e01b81526001600160a01b038d8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106ea57600080fd5b505af11580156106fe573d6000803e3d6000fd5b505050508061016001516000141561077257336000908152603660205260409020600785015461073b908290600160a01b900460ff16600161197c565b60405133906001600160a01b038e16907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3505b61082f565b6107808461143d565b61018081015161010082015161079d9186918e9190600090611549565b610180810151610100820151600186015460408051636b81068560e11b81526001600160a01b038e8116600483015233602483015260448201949094526001600160801b03909216606483015251919092169163d7020d0a91608480830192600092919082900301818387803b15801561081657600080fd5b505af115801561082a573d6000803e3d6000fd5b505050505b8051610100820151141561089a576007840154610859908390600160a01b900460ff16600061197c565b886001600160a01b03168b6001600160a01b03167f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd60405160405180910390a35b600483015460808201516108c0916001600160a01b038d81169233929190911690611a20565b886001600160a01b03168a6001600160a01b03168c6001600160a01b03167fe413a321e8681d831f4dbccbca790d2952b56f977908e45be37335533e0052868460800151856101000151338d60405180858152602001848152602001836001600160a01b03168152602001821515815260200194505050505060405180910390a46000604051806040016040528060028152602001611a1b60f11b81525095509550505050505b9550959350505050565b60008060008060006109816127e8565b61098a8a611a80565b156109a8576000806000806000199550955095509550955050610e29565b600060e08201525b878160e001511015610d885760e08101516109cc908b90611a85565b6109d557610d78565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d90529020610a0c81611b04565b506080860181905260c08601929092525060a0840191909152600a0a6020808401919091526101e08301516040805163b3596f0760e01b81526001600160a01b0392831660048201529051918b169263b3596f0792602480840193829003018186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d6020811015610aa557600080fd5b5051825260c082015115801590610ac7575060e0820151610ac7908c90611b2f565b15610be8578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610b3057600080fd5b505afa158015610b44573d6000803e3d6000fd5b505050506040513d6020811015610b5a57600080fd5b50516040830181905260208301518351600092610b819291610b7b91611bb5565b90611c0e565b610120840151909150610b949082611077565b61012084015260a0830151610bba90610bae908390611bb5565b61016085015190611077565b61016084015260c0830151610be090610bd4908390611bb5565b61018085015190611077565b610180840152505b60e0820151610bf8908c90611c50565b15610d76578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c6157600080fd5b505afa158015610c75573d6000803e3d6000fd5b505050506040513d6020811015610c8b57600080fd5b8101908080519060200190929190505050826060018181525050610d438160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d0c57600080fd5b505afa158015610d20573d6000803e3d6000fd5b505050506040513d6020811015610d3657600080fd5b5051606084015190611077565b6060830181905260208301518351610d6f92610d639291610b7b91611bb5565b61014084015190611077565b6101408301525b505b60e08101805160010190526109b0565b600081610120015111610d9c576000610db1565b610120810151610160820151610db191611c0e565b610160820152610120810151610dc8576000610ddd565b610120810151610180820151610ddd91611c0e565b6101808201819052610120820151610140830151610dfa92611ccf565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b6005810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610e8857600080fd5b505afa158015610e9c573d6000803e3d6000fd5b505050506040513d6020811015610eb257600080fd5b50516006840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b5051909590945092505050565b60006060610f4788611cfd565b1580610f595750610f5787611cfd565b155b15610f805750506040805180820190915260018152601960f91b602082015260069061106c565b670de0b6b3a76400008510610fb25750506040805180820190915260028152611a1960f11b602082015260049061106c565b600080610fbe8a611d0d565b118015610fed57506007890154604080516020810190915288548152610fed91600160a01b900460ff16611b2f565b90508061101757505060408051808201909152600280825261343360f01b6020830152915061106c565b84158015611023575083155b1561104c5750506040805180820190915260028152610d0d60f21b60208201526003915061106c565b50506040805180820190915260028152611a1b60f11b6020820152600091505b965096945050505050565b6000828201838110156110d1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60008215806110e7575081155b156110f4575060006110d4565b81611388198161110057fe5b0483111560405180604001604052806002815260200161068760f31b815250906111a85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561116d578181015183820152602001611155565b50505050905090810190601f16801561119a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506127106002815b0483850201816111bc57fe5b049392505050565b6000806000806000603460009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561121a57600080fd5b505afa15801561122e573d6000803e3d6000fd5b505050506040513d602081101561124457600080fd5b50519050611250612882565b816001600160a01b031663b3596f078b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561129d57600080fd5b505afa1580156112b1573d6000803e3d6000fd5b505050506040513d60208110156112c757600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b038b8116600483015291519184169163b3596f0791602480820192602092909190829003018186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d602081101561134457600080fd5b505160608201526113548c611b04565b5060c085015260208401525061136b90508b611d18565b60a0820181905260408201516113b8916113889190600a0a611bb5565b610b7b83602001516102e48560c00151600a0a6113b28e8860600151611bb590919063ffffffff16565b90611bb5565b608082018190528710156114215786935061141a81602001516114146113f28460c00151600a0a8560600151611bb590919063ffffffff16565b610b7b8560a00151600a0a6113b28a8860400151611bb590919063ffffffff16565b90611d22565b925061142c565b806080015193508792505b50919a909950975050505050505050565b60068101546040805163b1bf962d60e01b815290516000926001600160a01b03169163b1bf962d916004808301926020929190829003018186803b15801561148457600080fd5b505afa158015611498573d6000803e3d6000fd5b505050506040513d60208110156114ae57600080fd5b505160018301546003840154919250600160801b8082046001600160801b03908116939216910464ffffffffff166000806114ec8787868887611e15565b915091506114fe878787858588611fce565b50505050505050565b60006110d183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121b7565b6115516128bf565b60058601546001600160a01b031680825260408051637b98f4df60e11b8152815163f731e9be92600480840193919291829003018186803b15801561159557600080fd5b505afa1580156115a9573d6000803e3d6000fd5b505050506040513d60408110156115bf57600080fd5b50805160209182015160c084015260408084019190915260018801546006890154825163b1bf962d60e01b8152925161166394600160801b9093046001600160801b0316936001600160a01b039092169263b1bf962d9260048082019391829003018186803b15801561163157600080fd5b505afa158015611645573d6000803e3d6000fd5b505050506040513d602081101561165b57600080fd5b505190612211565b60e082018190526007870154604083015160c08401516001600160a01b03909216926329db497d928992899289928992919061169e8f6122c2565b6040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b031681526020018781526020018681526020018581526020018481526020018381526020018281526020019850505050505050505060606040518083038186803b15801561171557600080fd5b505afa158015611729573d6000803e3d6000fd5b505050506040513d606081101561173f57600080fd5b50805160208083015160409384015160a086015260808501526060840182905282518084019093526002835261353360f01b908301526001600160801b0310156117ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506080810151604080518082019091526002815261353560f01b6020820152906001600160801b03101561183f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060a08101516040805180820190915260028152610d4d60f21b6020820152906001600160801b0310156118b45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060608181015160028801805460808086015160038c0180546001600160801b03199081166001600160801b038085169190911790925560a0808a015191909516828816178216600160801b82841681029190911790965560018e01546040805198895260208901949094528784019190915280821697870197909752939095049092169183019190915291516001600160a01b038816927f804c9b842b2748a22bb64b345453a3de7ca54a6ca45ce00d415894979e22897a928290030190a2505050505050565b604080518082019091526002815261373760f01b6020820152608083106119e45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5081600202600101816119f85760006119fb565b60015b60ff16901b826002026001016001901b19846000015416178360000181905550505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611a7a9085906122cd565b50505050565b511590565b60006080821060405180604001604052806002815260200161373760f01b81525090611af25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60006080821060405180604001604052806002815260200161373760f01b81525090611b9c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5050815160016002830281019190911c16151592915050565b600082611bc4575060006110d4565b82820282848281611bd157fe5b04146110d15760405162461bcd60e51b815260040180806020018281038252602181526020018061296f6021913960400191505060405180910390fd5b60006110d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612485565b60006080821060405180604001604052806002815260200161373760f01b81525090611cbd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50509051600160029092021c16151590565b600082611cdf5750600019611cf6565b611cf383611ced86856110da565b906124ea565b90505b9392505050565b5467010000000000000016151590565b5460101c61ffff1690565b5460301c60ff1690565b604080518082019091526002815261035360f41b602082015260009082611d8a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490612710821904851115611dfc5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b50828161271086020181611e0c57fe5b04949350505050565b600285015460009081906001600160801b031685858215611f9f576000611e3c84886125e0565b9050611e48818a612211565b604080518082019091526002815261353160f01b60208201529093506001600160801b03841115611eba5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060018b0180546001600160801b0319166001600160801b0385161790558915611f9d5760028b0154600090611f0090600160801b90046001600160801b031689612626565b9050611f0c818a612211565b6040805180820190915260028152611a9960f11b60208201529093506001600160801b03841115611f7e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505060018b0180546001600160801b03808516600160801b0291161790555b505b600399909901805464ffffffffff60801b1916600160801b4264ffffffffff1602179055989650505050505050565b611fd661290d565b611fdf876122c2565b6101208201819052611ff157506121af565b8660050160009054906101000a90046001600160a01b03166001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b15801561204157600080fd5b505afa158015612055573d6000803e3d6000fd5b505050506040513d608081101561206b57600080fd5b508051602080830151604084015160609094015164ffffffffff1661014086015260a0850193909352918352908201526120a58686612211565b60808201526120b48684612211565b606082015260a08101516101408201516120d6919064ffffffffff851661262f565b60c0820181905260208201516120eb91612211565b6040820181905260808201518251606084015161211693926121109290918391611077565b90611507565b60e0820181905261012082015161212d91906110da565b6101008201819052156114fe5760048088015461010083015160408051637df5bd3b60e01b81529384019190915260248301879052516001600160a01b0390911691637df5bd3b91604480830192600092919082900301818387803b15801561219557600080fd5b505af11580156121a9573d6000803e3d6000fd5b50505050505b505050505050565b600081848411156122095760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b505050900390565b600082158061221e575081155b1561222b575060006110d4565b816b019d971e4fe8401e74000000198161224157fe5b0483111560405180604001604052806002815260200161068760f31b815250906122ac5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b506b033b2e3c9fd0803ce80000006002816111b0565b5460401c61ffff1690565b6122df826001600160a01b0316612705565b612330576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061236e5780518252601f19909201916020918201910161234f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123d0576040519150601f19603f3d011682016040523d82523d6000602084013e6123d5565b606091505b50915091508161242c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611a7a5780806020019051602081101561244857600080fd5b5051611a7a5760405162461bcd60e51b815260040180806020018281038252602a815260200180612990602a913960400191505060405180910390fd5b600081836124d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060008385816124e057fe5b0495945050505050565b604080518082019091526002815261035360f41b6020820152600090826125525760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a76400008219048511156125ca5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561116d578181015183820152602001611155565b508281670de0b6b3a764000086020181611e0c57fe5b6000806125f44264ffffffffff8516611507565b905061261e61260161273e565b6301e133806126108785611bb5565b8161261757fe5b0490611077565b949350505050565b60006110d18383425b6000806126438364ffffffffff8616611507565b90508061265a5761265261273e565b915050611cf6565b6000198101600060028311612670576000612675565b600283035b90506301e133808704600061268a8280612211565b905060006126988284612211565b9050600060026126ac846113b28a8a611bb5565b816126b357fe5b049050600060066126ca846113b289818d8d611bb5565b816126d157fe5b0490506126f5816126ef84816126e78a8e611bb5565b6126ef61273e565b90611077565b9c9b505050505050505050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061261e575050151592915050565b6b033b2e3c9fd0803ce800000090565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600015158152602001600060028111156127d457fe5b815260200160008152602001606081525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610100016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff168152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a6917930f400cbd9d4acee0275b6f05aeb05720b406dda669229665efceb5ca364736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/LendingPoolConfigurator.json b/eth_defi/abi/aave_v2/LendingPoolConfigurator.json new file mode 100644 index 00000000..84d7030b --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingPoolConfigurator.json @@ -0,0 +1,755 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingPoolConfigurator", + "sourceName": "contracts/protocol/lendingpool/LendingPoolConfigurator.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ATokenUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BorrowingDisabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "stableRateEnabled", + "type": "bool" + } + ], + "name": "BorrowingEnabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ltv", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidationThreshold", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidationBonus", + "type": "uint256" + } + ], + "name": "CollateralConfigurationChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveActivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "ReserveDecimalsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "factor", + "type": "uint256" + } + ], + "name": "ReserveFactorChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveFrozen", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "stableDebtToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "variableDebtToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + } + ], + "name": "ReserveInitialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "strategy", + "type": "address" + } + ], + "name": "ReserveInterestRateStrategyChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "ReserveUnfrozen", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "StableDebtTokenUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "StableRateDisabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "StableRateEnabledOnReserve", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "proxy", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "VariableDebtTokenUpgraded", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "activateReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "aTokenImpl", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenImpl", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenImpl", + "type": "address" + }, + { + "internalType": "uint8", + "name": "underlyingAssetDecimals", + "type": "uint8" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "string", + "name": "underlyingAssetName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "internalType": "string", + "name": "variableDebtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "variableDebtTokenSymbol", + "type": "string" + }, + { + "internalType": "string", + "name": "stableDebtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "stableDebtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct ILendingPoolConfigurator.InitReserveInput[]", + "name": "input", + "type": "tuple[]" + } + ], + "name": "batchInitReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "ltv", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "liquidationBonus", + "type": "uint256" + } + ], + "name": "configureReserveAsCollateral", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "deactivateReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "disableBorrowingOnReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "disableReserveStableRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + } + ], + "name": "enableBorrowingOnReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "enableReserveStableRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "freezeReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "val", + "type": "bool" + } + ], + "name": "setPoolPause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + } + ], + "name": "setReserveFactor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "rateStrategyAddress", + "type": "address" + } + ], + "name": "setReserveInterestRateStrategyAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "unfreezeReserve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct ILendingPoolConfigurator.UpdateATokenInput", + "name": "input", + "type": "tuple" + } + ], + "name": "updateAToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct ILendingPoolConfigurator.UpdateDebtTokenInput", + "name": "input", + "type": "tuple" + } + ], + "name": "updateStableDebtToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "internalType": "struct ILendingPoolConfigurator.UpdateDebtTokenInput", + "name": "input", + "type": "tuple" + } + ], + "name": "updateVariableDebtToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526000805534801561001457600080fd5b50613e13806100246000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063ad4e6432116100a2578063c4d66de811610071578063c4d66de8146101f6578063cef84c5114610209578063eede87c11461021c578063ef1f93731461022f578063f53a2515146102425761010b565b8063ad4e6432146101aa578063b75d6f34146101bd578063bb01c37c146101d0578063bf344183146101e35761010b565b80637641f3d9116100de5780637641f3d91461015e5780637aca76eb146101715780637c4e560b14610184578063a8dc0f45146101975761010b565b80631d2118f9146101105780633e72a454146101255780634b4e6753146101385780637626cde31461014b575b600080fd5b61012361011e366004612f40565b610255565b005b610123610133366004612f01565b6103c7565b610123610146366004612fa9565b6105c2565b6101236101593660046131eb565b6107c1565b61012361016c36600461307d565b610ae5565b61012361017f366004612f01565b610c0a565b610123610192366004612fd4565b610dfc565b6101236101a5366004612f01565b611125565b6101236101b83660046131eb565b611317565b6101236101cb366004612f01565b6115c4565b6101236101de3660046131b3565b6117b6565b6101236101f1366004612f01565b611a75565b610123610204366004612f01565b611c67565b61012361021736600461300e565b611d99565b61012361022a366004612f78565b611ea5565b61012361023d366004612f01565b6120a2565b610123610250366004612f01565b612294565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561029957600080fd5b505afa1580156102ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b8152509061031d5760405162461bcd60e51b8152600401610314919061351a565b60405180910390fd5b50603554604051631d2118f960e01b81526001600160a01b0390911690631d2118f99061035090859085906004016132e0565b600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b50505050816001600160a01b03167f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a5826040516103bb91906132cc565b60405180910390a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906104865760405162461bcd60e51b8152600401610314919061351a565b5061049081612486565b610498612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906104c89085906004016132cc565b60206040518083038186803b1580156104e057600080fd5b505afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610518919061309d565b90506105258160006125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916105589186919060040161337b565b600060405180830381600087803b15801561057257600080fd5b505af1158015610586573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561060657600080fd5b505afa15801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906106815760405162461bcd60e51b8152600401610314919061351a565b5061068a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906106ba9086906004016132cc565b60206040518083038186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a919061309d565b90506107168183612615565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916107499187919060040161337b565b600060405180830381600087803b15801561076357600080fd5b505af1158015610777573d6000803e3d6000fd5b50505050826001600160a01b03167f2694ccb0b585b6a54b8d8b4a47aa874b05c257b43d34e98aee50838be00d3405836040516107b4919061357b565b60405180910390a2505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083d9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906108805760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b0316610895612e22565b6001600160a01b0382166335ea6a756108b16020860186612f01565b6040518263ffffffff1660e01b81526004016108cd91906132cc565b6101806040518083038186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906130b8565b905060006109b26001600160a01b03841663c44b11f76109416020880188612f01565b6040518263ffffffff1660e01b815260040161095d91906132cc565b60206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad919061309d565b61266c565b50935060609250636111764560e11b91508590506109d36020880188612f01565b6109e36040890160208a01612f01565b856109f160408b018b6135e6565b6109fe60608d018d6135e6565b610a0b60a08f018f61359a565b604051602401610a249a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610100840151909150610a7990610a7360a0880160808901612f01565b83612697565b610a8960a0860160808701612f01565b6101008401516001600160a01b039182169116610aa96020880188612f01565b6001600160a01b03167f7a943a5b6c214bf7726c069a878b1e2a8e7371981d516048b84e03743e67bc2860405160405180910390a45050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea916004808301926020929190829003018186803b158015610b2957600080fd5b505afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190612f24565b6001600160a01b031614604051806040016040528060028152602001611b9b60f11b81525090610ba45760405162461bcd60e51b8152600401610314919061351a565b5060355460405163bedb86fb60e01b81526001600160a01b039091169063bedb86fb90610bd5908490600401613394565b600060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b5050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610cc95760405162461bcd60e51b8152600401610314919061351a565b50610cd2612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610d029085906004016132cc565b60206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d52919061309d565b9050610d5f8160016126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691610d929186919060040161337b565b600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506040516001600160a01b03851692507f85dc710add8a0914461a7dc5a63f6fc529a7700f8c6089a3faf5e93256ccf12a9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610e4057600080fd5b505afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610ebb5760405162461bcd60e51b8152600401610314919061351a565b50610ec4612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610ef49088906004016132cc565b60206040518083038186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f44919061309d565b90508284111560405180604001604052806002815260200161373560f01b81525090610f835760405162461bcd60e51b8152600401610314919061351a565b50821561101457604080518082019091526002815261373560f01b60208201526127108311610fc55760405162461bcd60e51b8152600401610314919061351a565b50612710610fd3848461272d565b111560405180604001604052806002815260200161373560f01b8152509061100e5760405162461bcd60e51b8152600401610314919061351a565b50611056565b604080518082019091526002815261373560f01b6020820152821561104c5760405162461bcd60e51b8152600401610314919061351a565b5061105685612486565b61106081856127a4565b61106a81846127ed565b611074818361283e565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916110a79189919060040161337b565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b50505050846001600160a01b03167f637febbda9275aea2e85c0ff690444c8d87eb2e8339bbede9715abcc89cb099585858560405161111693929190613584565b60405180910390a25050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906111e45760405162461bcd60e51b8152600401610314919061351a565b506111ed612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061121d9085906004016132cc565b60206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d919061309d565b905061127a816000612891565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916112ad9186919060040161337b565b600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561135b57600080fd5b505afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113939190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906113d65760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b03166113eb612e22565b6001600160a01b0382166335ea6a756114076020860186612f01565b6040518263ffffffff1660e01b815260040161142391906132cc565b6101806040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147491906130b8565b905060006114976001600160a01b03841663c44b11f76109416020880188612f01565b50935060609250636111764560e11b91508590506114b86020880188612f01565b6114c86040890160208a01612f01565b856114d660408b018b6135e6565b6114e360608d018d6135e6565b6114f060a08f018f61359a565b6040516024016115099a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261012084015190915061155890610a7360a0880160808901612f01565b61156860a0860160808701612f01565b6101208401516001600160a01b0391821691166115886020880188612f01565b6001600160a01b03167f9439658a562a5c46b1173589df89cf001483d685bad28aedaff4a88656292d8160405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906116835760405162461bcd60e51b8152600401610314919061351a565b5061168c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906116bc9085906004016132cc565b60206040518083038186803b1580156116d457600080fd5b505afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c919061309d565b90506117198160016125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161174c9186919060040161337b565b600060405180830381600087803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156117fa57600080fd5b505afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118329190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906118755760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031661188a612e22565b6001600160a01b0382166335ea6a756118a66020860186612f01565b6040518263ffffffff1660e01b81526004016118c291906132cc565b6101806040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191391906130b8565b905060006119366001600160a01b03841663c44b11f76109416020880188612f01565b5093506060925063183fb41360e01b915085905061195a6040880160208901612f01565b6119676020890189612f01565b61197760608a0160408b01612f01565b8661198560608c018c6135e6565b61199260808e018e6135e6565b8e8060c001906119a2919061359a565b6040516024016119bc9b9a9998979695949392919061339f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260e0840151909150611a0a90610a7360c0880160a08901612f01565b611a1a60c0860160a08701612f01565b60e08401516001600160a01b039182169116611a396020880188612f01565b6001600160a01b03167fa76f65411ec66a7fb6bc467432eb14767900449ae4469fa295e4441fe5e1cb7360405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611b345760405162461bcd60e51b8152600401610314919061351a565b50611b3d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611b6d9085906004016132cc565b60206040518083038186803b158015611b8557600080fd5b505afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd919061309d565b9050611bca8160016128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611bfd9186919060040161337b565b600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b6000611c716128ed565b60015490915060ff1680611c885750611c886128f2565b80611c94575060005481115b611cb05760405162461bcd60e51b81526004016103149061352d565b60015460ff16158015611ccf576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03858116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d639190612f24565b603580546001600160a01b0319166001600160a01b03929092169190911790558015611d94576001805460ff191690555b505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611e585760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031660005b82811015611e9f57611e9782858584818110611e8057fe5b9050602002810190611e9291906135fc565b6128f8565b600101611e68565b50505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ee957600080fd5b505afa158015611efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f219190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611f645760405162461bcd60e51b8152600401610314919061351a565b50611f6d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611f9d9086906004016132cc565b60206040518083038186803b158015611fb557600080fd5b505afa158015611fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fed919061309d565b9050611ffa816001612891565b61200481836128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916120379187919060040161337b565b600060405180830381600087803b15801561205157600080fd5b505af1158015612065573d6000803e3d6000fd5b50505050826001600160a01b03167fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b508836040516107b49190613394565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906121615760405162461bcd60e51b8152600401610314919061351a565b5061216a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061219a9085906004016132cc565b60206040518083038186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea919061309d565b90506121f78160006126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161222a9186919060040161337b565b600060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b50506040516001600160a01b03851692507f838ecdc4709a31a26db48b0c853212cedde3f725f07030079d793fb0719647609150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906123535760405162461bcd60e51b8152600401610314919061351a565b5061235c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061238c9085906004016132cc565b60206040518083038186803b1580156123a457600080fd5b505afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc919061309d565b90506123e98160006128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161241c9186919060040161337b565b600060405180830381600087803b15801561243657600080fd5b505af115801561244a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b61248e612e22565b6035546040516335ea6a7560e01b81526001600160a01b03909116906335ea6a75906124be9085906004016132cc565b6101806040518083038186803b1580156124d757600080fd5b505afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250f91906130b8565b90506000826001600160a01b03166370a082318360e001516040518263ffffffff1660e01b815260040161254391906132cc565b60206040518083038186803b15801561255b57600080fd5b505afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125939190613223565b9050801580156125ae575060608201516001600160801b0316155b604051806040016040528060028152602001610ccd60f21b81525090611e9f5760405162461bcd60e51b8152600401610314919061351a565b6038816125f55760006125f8565b60015b8351670100000000000000191660ff9190911690911b1790915250565b604080518082019091526002815261373160f01b602082015261ffff8211156126515760405162461bcd60e51b8152600401610314919061351a565b50815169ffff0000000000000000191660409190911b179052565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60405163278f794360e11b815283906001600160a01b03821690634f1ef286906126c7908690869060040161334f565b600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b5050505050505050565b60398161270d576000612710565b60015b8351670200000000000000191660ff9190911690911b1790915250565b600082158061273a575081155b156127475750600061279e565b81611388198161275357fe5b0483111560405180604001604052806002815260200161068760f31b815250906127905760405162461bcd60e51b8152600401610314919061351a565b505061271061138882840201045b92915050565b604080518082019091526002815261363760f01b602082015261ffff8211156127e05760405162461bcd60e51b8152600401610314919061351a565b50815161ffff1916179052565b60408051808201909152600281526106c760f31b602082015261ffff8211156128295760405162461bcd60e51b8152600401610314919061351a565b50815163ffff0000191660109190911b179052565b604080518082019091526002815261363960f01b602082015261ffff82111561287a5760405162461bcd60e51b8152600401610314919061351a565b50815165ffff00000000191660209190911b179052565b603a8161289f5760006128a2565b60015b8351670400000000000000191660ff9190911690911b1790915250565b603b816128cd5760006128d0565b60015b8351670800000000000000191660ff9190911690911b1790915250565b600190565b303b1590565b60006129cf61290a6020840184612f01565b63183fb41360e01b8561292360e0870160c08801612f01565b61293360c0880160a08901612f01565b612944610100890160e08a01612f01565b61295460808a0160608b0161323b565b6129626101208b018b6135e6565b6129706101408d018d6135e6565b61297e6101e08f018f61359a565b6040516024016129989b9a99989796959493929190613420565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612d1a565b90506000612a636129e66040850160208601612f01565b636111764560e11b866129ff60c0880160a08901612f01565b612a10610100890160e08a01612f01565b612a2060808a0160608b0161323b565b612a2e6101a08b018b6135e6565b612a3c6101c08d018d6135e6565b612a4a6101e08f018f61359a565b6040516024016129989a999897969594939291906134dc565b90506000612ae1612a7a6060860160408701612f01565b636111764560e11b87612a9360c0890160a08a01612f01565b612aa46101008a0160e08b01612f01565b612ab460808b0160608c0161323b565b612ac26101608c018c6135e6565b612ad06101808e018e6135e6565b8e806101e00190612a4a919061359a565b90506001600160a01b038516637a708e92612b0260c0870160a08801612f01565b858585612b1560a08b0160808c01612f01565b6040518663ffffffff1660e01b8152600401612b3595949392919061331d565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50505050612b6f612e0f565b6001600160a01b03861663c44b11f7612b8e60c0880160a08901612f01565b6040518263ffffffff1660e01b8152600401612baa91906132cc565b60206040518083038186803b158015612bc257600080fd5b505afa158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa919061309d565b9050612c19612c0f608087016060880161323b565b829060ff16612dbc565b612c248160016125e7565b612c2f8160006126ff565b6001600160a01b03861663b8d29276612c4e60c0880160a08901612f01565b83516040516001600160e01b031960e085901b168152612c7292919060040161337b565b600060405180830381600087803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b5050506001600160a01b0385169050612cbf60c0870160a08801612f01565b6001600160a01b03167f3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f8585612cfb60a08b0160808c01612f01565b604051612d0a939291906132fa565b60405180910390a3505050505050565b60008030604051612d2a90612e8d565b612d3491906132cc565b604051809103906000f080158015612d50573d6000803e3d6000fd5b5060405163347d5e2560e21b81529091506001600160a01b0382169063d1f5789490612d82908790879060040161334f565b600060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b50929695505050505050565b604080518082019091526002815261037360f41b602082015260ff821115612df75760405162461bcd60e51b8152600401610314919061351a565b50815166ff000000000000191660309190911b179052565b6040518060200160405280600081525090565b604051806101800160405280612e36612e0f565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6107738061366b83390190565b805161279e81613643565b600060208284031215612eb6578081fd5b612ec0602061361c565b9151825250919050565b80516001600160801b038116811461279e57600080fd5b805164ffffffffff8116811461279e57600080fd5b805161279e8161365b565b600060208284031215612f12578081fd5b8135612f1d81613643565b9392505050565b600060208284031215612f35578081fd5b8151612f1d81613643565b60008060408385031215612f52578081fd5b8235612f5d81613643565b91506020830135612f6d81613643565b809150509250929050565b60008060408385031215612f8a578182fd5b8235612f9581613643565b915060208301358015158114612f6d578182fd5b60008060408385031215612fbb578182fd5b8235612fc681613643565b946020939093013593505050565b60008060008060808587031215612fe9578182fd5b8435612ff481613643565b966020860135965060408601359560600135945092505050565b60008060208385031215613020578182fd5b823567ffffffffffffffff80821115613037578384fd5b818501915085601f83011261304a578384fd5b813581811115613058578485fd5b866020808302850101111561306b578485fd5b60209290920196919550909350505050565b60006020828403121561308e578081fd5b81358015158114612f1d578182fd5b6000602082840312156130ae578081fd5b612f1d8383612ea5565b60006101808083850312156130cb578182fd5b6130d48161361c565b90506130e08484612ea5565b81526130ef8460208501612eca565b60208201526131018460408501612eca565b60408201526131138460608501612eca565b60608201526131258460808501612eca565b60808201526131378460a08501612eca565b60a08201526131498460c08501612ee1565b60c082015261315b8460e08501612e9a565b60e082015261010061316f85828601612e9a565b9082015261012061318285858301612e9a565b9082015261014061319585858301612e9a565b908201526101606131a885858301612ef6565b908201529392505050565b6000602082840312156131c4578081fd5b813567ffffffffffffffff8111156131da578182fd5b820160e08185031215612f1d578182fd5b6000602082840312156131fc578081fd5b813567ffffffffffffffff811115613212578182fd5b820160c08185031215612f1d578182fd5b600060208284031215613234578081fd5b5051919050565b60006020828403121561324c578081fd5b8135612f1d8161365b565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452815b818110156132a65760208185018101518683018201520161328a565b818111156132b75782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b6001600160a01b038316815260406020820181905260009061337390830184613281565b949350505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b038c811682528b811660208301528a81166040830152891660608201526080810188905261010060a082018190526000906133e4838201898b613257565b905082810360c08401526133f9818789613257565b905082810360e084015261340e818587613257565b9e9d5050505050505050505050505050565b6001600160a01b038c811682528b811660208301528a811660408301528916606082015260ff8816608082015261010060a082018190526000906133e4838201898b613257565b6001600160a01b038b811682528a81166020830152891660408201526060810188905260e0608082018190526000906134a3908301888a613257565b82810360a08401526134b6818789613257565b905082810360c08401526134cb818587613257565b9d9c50505050505050505050505050565b6001600160a01b038b811682528a811660208301528916604082015260ff8816606082015260e0608082018190526000906134a3908301888a613257565b600060208252612f1d6020830184613281565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b6000808335601e198436030181126135b0578283fd5b83018035915067ffffffffffffffff8211156135ca578283fd5b6020019150368190038213156135df57600080fd5b9250929050565b6000808335601e198436030181126135b0578182fd5b600082356101fe19833603018112613612578182fd5b9190910192915050565b60405181810167ffffffffffffffff8111828210171561363b57600080fd5b604052919050565b6001600160a01b038116811461365857600080fd5b50565b60ff8116811461365857600080fdfe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033a264697066735822122038bfd56901d234f4389bdd4aeed96b0c5e3e74eb3ca86fcbe4a22b8a6896e6f864736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063ad4e6432116100a2578063c4d66de811610071578063c4d66de8146101f6578063cef84c5114610209578063eede87c11461021c578063ef1f93731461022f578063f53a2515146102425761010b565b8063ad4e6432146101aa578063b75d6f34146101bd578063bb01c37c146101d0578063bf344183146101e35761010b565b80637641f3d9116100de5780637641f3d91461015e5780637aca76eb146101715780637c4e560b14610184578063a8dc0f45146101975761010b565b80631d2118f9146101105780633e72a454146101255780634b4e6753146101385780637626cde31461014b575b600080fd5b61012361011e366004612f40565b610255565b005b610123610133366004612f01565b6103c7565b610123610146366004612fa9565b6105c2565b6101236101593660046131eb565b6107c1565b61012361016c36600461307d565b610ae5565b61012361017f366004612f01565b610c0a565b610123610192366004612fd4565b610dfc565b6101236101a5366004612f01565b611125565b6101236101b83660046131eb565b611317565b6101236101cb366004612f01565b6115c4565b6101236101de3660046131b3565b6117b6565b6101236101f1366004612f01565b611a75565b610123610204366004612f01565b611c67565b61012361021736600461300e565b611d99565b61012361022a366004612f78565b611ea5565b61012361023d366004612f01565b6120a2565b610123610250366004612f01565b612294565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561029957600080fd5b505afa1580156102ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b8152509061031d5760405162461bcd60e51b8152600401610314919061351a565b60405180910390fd5b50603554604051631d2118f960e01b81526001600160a01b0390911690631d2118f99061035090859085906004016132e0565b600060405180830381600087803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b50505050816001600160a01b03167f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a5826040516103bb91906132cc565b60405180910390a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906104865760405162461bcd60e51b8152600401610314919061351a565b5061049081612486565b610498612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906104c89085906004016132cc565b60206040518083038186803b1580156104e057600080fd5b505afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610518919061309d565b90506105258160006125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916105589186919060040161337b565b600060405180830381600087803b15801561057257600080fd5b505af1158015610586573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561060657600080fd5b505afa15801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906106815760405162461bcd60e51b8152600401610314919061351a565b5061068a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906106ba9086906004016132cc565b60206040518083038186803b1580156106d257600080fd5b505afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a919061309d565b90506107168183612615565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916107499187919060040161337b565b600060405180830381600087803b15801561076357600080fd5b505af1158015610777573d6000803e3d6000fd5b50505050826001600160a01b03167f2694ccb0b585b6a54b8d8b4a47aa874b05c257b43d34e98aee50838be00d3405836040516107b4919061357b565b60405180910390a2505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561080557600080fd5b505afa158015610819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083d9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906108805760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b0316610895612e22565b6001600160a01b0382166335ea6a756108b16020860186612f01565b6040518263ffffffff1660e01b81526004016108cd91906132cc565b6101806040518083038186803b1580156108e657600080fd5b505afa1580156108fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906130b8565b905060006109b26001600160a01b03841663c44b11f76109416020880188612f01565b6040518263ffffffff1660e01b815260040161095d91906132cc565b60206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad919061309d565b61266c565b50935060609250636111764560e11b91508590506109d36020880188612f01565b6109e36040890160208a01612f01565b856109f160408b018b6135e6565b6109fe60608d018d6135e6565b610a0b60a08f018f61359a565b604051602401610a249a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610100840151909150610a7990610a7360a0880160808901612f01565b83612697565b610a8960a0860160808701612f01565b6101008401516001600160a01b039182169116610aa96020880188612f01565b6001600160a01b03167f7a943a5b6c214bf7726c069a878b1e2a8e7371981d516048b84e03743e67bc2860405160405180910390a45050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea916004808301926020929190829003018186803b158015610b2957600080fd5b505afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190612f24565b6001600160a01b031614604051806040016040528060028152602001611b9b60f11b81525090610ba45760405162461bcd60e51b8152600401610314919061351a565b5060355460405163bedb86fb60e01b81526001600160a01b039091169063bedb86fb90610bd5908490600401613394565b600060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b5050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610cc95760405162461bcd60e51b8152600401610314919061351a565b50610cd2612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610d029085906004016132cc565b60206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d52919061309d565b9050610d5f8160016126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691610d929186919060040161337b565b600060405180830381600087803b158015610dac57600080fd5b505af1158015610dc0573d6000803e3d6000fd5b50506040516001600160a01b03851692507f85dc710add8a0914461a7dc5a63f6fc529a7700f8c6089a3faf5e93256ccf12a9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015610e4057600080fd5b505afa158015610e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e789190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090610ebb5760405162461bcd60e51b8152600401610314919061351a565b50610ec4612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790610ef49088906004016132cc565b60206040518083038186803b158015610f0c57600080fd5b505afa158015610f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f44919061309d565b90508284111560405180604001604052806002815260200161373560f01b81525090610f835760405162461bcd60e51b8152600401610314919061351a565b50821561101457604080518082019091526002815261373560f01b60208201526127108311610fc55760405162461bcd60e51b8152600401610314919061351a565b50612710610fd3848461272d565b111560405180604001604052806002815260200161373560f01b8152509061100e5760405162461bcd60e51b8152600401610314919061351a565b50611056565b604080518082019091526002815261373560f01b6020820152821561104c5760405162461bcd60e51b8152600401610314919061351a565b5061105685612486565b61106081856127a4565b61106a81846127ed565b611074818361283e565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916110a79189919060040161337b565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b50505050846001600160a01b03167f637febbda9275aea2e85c0ff690444c8d87eb2e8339bbede9715abcc89cb099585858560405161111693929190613584565b60405180910390a25050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906111e45760405162461bcd60e51b8152600401610314919061351a565b506111ed612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061121d9085906004016132cc565b60206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d919061309d565b905061127a816000612891565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916112ad9186919060040161337b565b600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561135b57600080fd5b505afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113939190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906113d65760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b03166113eb612e22565b6001600160a01b0382166335ea6a756114076020860186612f01565b6040518263ffffffff1660e01b815260040161142391906132cc565b6101806040518083038186803b15801561143c57600080fd5b505afa158015611450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147491906130b8565b905060006114976001600160a01b03841663c44b11f76109416020880188612f01565b50935060609250636111764560e11b91508590506114b86020880188612f01565b6114c86040890160208a01612f01565b856114d660408b018b6135e6565b6114e360608d018d6135e6565b6114f060a08f018f61359a565b6040516024016115099a99989796959493929190613467565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261012084015190915061155890610a7360a0880160808901612f01565b61156860a0860160808701612f01565b6101208401516001600160a01b0391821691166115886020880188612f01565b6001600160a01b03167f9439658a562a5c46b1173589df89cf001483d685bad28aedaff4a88656292d8160405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b15801561160857600080fd5b505afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906116835760405162461bcd60e51b8152600401610314919061351a565b5061168c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f7906116bc9085906004016132cc565b60206040518083038186803b1580156116d457600080fd5b505afa1580156116e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170c919061309d565b90506117198160016125e7565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161174c9186919060040161337b565b600060405180830381600087803b15801561176657600080fd5b505af115801561177a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156117fa57600080fd5b505afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118329190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906118755760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031661188a612e22565b6001600160a01b0382166335ea6a756118a66020860186612f01565b6040518263ffffffff1660e01b81526004016118c291906132cc565b6101806040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191391906130b8565b905060006119366001600160a01b03841663c44b11f76109416020880188612f01565b5093506060925063183fb41360e01b915085905061195a6040880160208901612f01565b6119676020890189612f01565b61197760608a0160408b01612f01565b8661198560608c018c6135e6565b61199260808e018e6135e6565b8e8060c001906119a2919061359a565b6040516024016119bc9b9a9998979695949392919061339f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915260e0840151909150611a0a90610a7360c0880160a08901612f01565b611a1a60c0860160a08701612f01565b60e08401516001600160a01b039182169116611a396020880188612f01565b6001600160a01b03167fa76f65411ec66a7fb6bc467432eb14767900449ae4469fa295e4441fe5e1cb7360405160405180910390a45050505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ab957600080fd5b505afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611b345760405162461bcd60e51b8152600401610314919061351a565b50611b3d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611b6d9085906004016132cc565b60206040518083038186803b158015611b8557600080fd5b505afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd919061309d565b9050611bca8160016128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611bfd9186919060040161337b565b600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b6000611c716128ed565b60015490915060ff1680611c885750611c886128f2565b80611c94575060005481115b611cb05760405162461bcd60e51b81526004016103149061352d565b60015460ff16158015611ccf576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03858116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d639190612f24565b603580546001600160a01b0319166001600160a01b03929092169190911790558015611d94576001805460ff191690555b505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ddd57600080fd5b505afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611e585760405162461bcd60e51b8152600401610314919061351a565b506035546001600160a01b031660005b82811015611e9f57611e9782858584818110611e8057fe5b9050602002810190611e9291906135fc565b6128f8565b600101611e68565b50505050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b158015611ee957600080fd5b505afa158015611efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f219190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b81525090611f645760405162461bcd60e51b8152600401610314919061351a565b50611f6d612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f790611f9d9086906004016132cc565b60206040518083038186803b158015611fb557600080fd5b505afa158015611fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fed919061309d565b9050611ffa816001612891565b61200481836128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916120379187919060040161337b565b600060405180830381600087803b15801561205157600080fd5b505af1158015612065573d6000803e3d6000fd5b50505050826001600160a01b03167fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b508836040516107b49190613394565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906121615760405162461bcd60e51b8152600401610314919061351a565b5061216a612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061219a9085906004016132cc565b60206040518083038186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea919061309d565b90506121f78160006126ff565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161222a9186919060040161337b565b600060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b50506040516001600160a01b03851692507f838ecdc4709a31a26db48b0c853212cedde3f725f07030079d793fb0719647609150600090a25050565b603454604080516315d9b46f60e31b8152905133926001600160a01b03169163aecda378916004808301926020929190829003018186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612f24565b6001600160a01b03161460405180604001604052806002815260200161333360f01b815250906123535760405162461bcd60e51b8152600401610314919061351a565b5061235c612e0f565b60355460405163c44b11f760e01b81526001600160a01b039091169063c44b11f79061238c9085906004016132cc565b60206040518083038186803b1580156123a457600080fd5b505afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc919061309d565b90506123e98160006128bf565b6035548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161241c9186919060040161337b565b600060405180830381600087803b15801561243657600080fd5b505af115801561244a573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b61248e612e22565b6035546040516335ea6a7560e01b81526001600160a01b03909116906335ea6a75906124be9085906004016132cc565b6101806040518083038186803b1580156124d757600080fd5b505afa1580156124eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250f91906130b8565b90506000826001600160a01b03166370a082318360e001516040518263ffffffff1660e01b815260040161254391906132cc565b60206040518083038186803b15801561255b57600080fd5b505afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125939190613223565b9050801580156125ae575060608201516001600160801b0316155b604051806040016040528060028152602001610ccd60f21b81525090611e9f5760405162461bcd60e51b8152600401610314919061351a565b6038816125f55760006125f8565b60015b8351670100000000000000191660ff9190911690911b1790915250565b604080518082019091526002815261373160f01b602082015261ffff8211156126515760405162461bcd60e51b8152600401610314919061351a565b50815169ffff0000000000000000191660409190911b179052565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60405163278f794360e11b815283906001600160a01b03821690634f1ef286906126c7908690869060040161334f565b600060405180830381600087803b1580156126e157600080fd5b505af11580156126f5573d6000803e3d6000fd5b5050505050505050565b60398161270d576000612710565b60015b8351670200000000000000191660ff9190911690911b1790915250565b600082158061273a575081155b156127475750600061279e565b81611388198161275357fe5b0483111560405180604001604052806002815260200161068760f31b815250906127905760405162461bcd60e51b8152600401610314919061351a565b505061271061138882840201045b92915050565b604080518082019091526002815261363760f01b602082015261ffff8211156127e05760405162461bcd60e51b8152600401610314919061351a565b50815161ffff1916179052565b60408051808201909152600281526106c760f31b602082015261ffff8211156128295760405162461bcd60e51b8152600401610314919061351a565b50815163ffff0000191660109190911b179052565b604080518082019091526002815261363960f01b602082015261ffff82111561287a5760405162461bcd60e51b8152600401610314919061351a565b50815165ffff00000000191660209190911b179052565b603a8161289f5760006128a2565b60015b8351670400000000000000191660ff9190911690911b1790915250565b603b816128cd5760006128d0565b60015b8351670800000000000000191660ff9190911690911b1790915250565b600190565b303b1590565b60006129cf61290a6020840184612f01565b63183fb41360e01b8561292360e0870160c08801612f01565b61293360c0880160a08901612f01565b612944610100890160e08a01612f01565b61295460808a0160608b0161323b565b6129626101208b018b6135e6565b6129706101408d018d6135e6565b61297e6101e08f018f61359a565b6040516024016129989b9a99989796959493929190613420565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612d1a565b90506000612a636129e66040850160208601612f01565b636111764560e11b866129ff60c0880160a08901612f01565b612a10610100890160e08a01612f01565b612a2060808a0160608b0161323b565b612a2e6101a08b018b6135e6565b612a3c6101c08d018d6135e6565b612a4a6101e08f018f61359a565b6040516024016129989a999897969594939291906134dc565b90506000612ae1612a7a6060860160408701612f01565b636111764560e11b87612a9360c0890160a08a01612f01565b612aa46101008a0160e08b01612f01565b612ab460808b0160608c0161323b565b612ac26101608c018c6135e6565b612ad06101808e018e6135e6565b8e806101e00190612a4a919061359a565b90506001600160a01b038516637a708e92612b0260c0870160a08801612f01565b858585612b1560a08b0160808c01612f01565b6040518663ffffffff1660e01b8152600401612b3595949392919061331d565b600060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b50505050612b6f612e0f565b6001600160a01b03861663c44b11f7612b8e60c0880160a08901612f01565b6040518263ffffffff1660e01b8152600401612baa91906132cc565b60206040518083038186803b158015612bc257600080fd5b505afa158015612bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfa919061309d565b9050612c19612c0f608087016060880161323b565b829060ff16612dbc565b612c248160016125e7565b612c2f8160006126ff565b6001600160a01b03861663b8d29276612c4e60c0880160a08901612f01565b83516040516001600160e01b031960e085901b168152612c7292919060040161337b565b600060405180830381600087803b158015612c8c57600080fd5b505af1158015612ca0573d6000803e3d6000fd5b5050506001600160a01b0385169050612cbf60c0870160a08801612f01565b6001600160a01b03167f3a0ca721fc364424566385a1aa271ed508cc2c0949c2272575fb3013a163a45f8585612cfb60a08b0160808c01612f01565b604051612d0a939291906132fa565b60405180910390a3505050505050565b60008030604051612d2a90612e8d565b612d3491906132cc565b604051809103906000f080158015612d50573d6000803e3d6000fd5b5060405163347d5e2560e21b81529091506001600160a01b0382169063d1f5789490612d82908790879060040161334f565b600060405180830381600087803b158015612d9c57600080fd5b505af1158015612db0573d6000803e3d6000fd5b50929695505050505050565b604080518082019091526002815261037360f41b602082015260ff821115612df75760405162461bcd60e51b8152600401610314919061351a565b50815166ff000000000000191660309190911b179052565b6040518060200160405280600081525090565b604051806101800160405280612e36612e0f565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6107738061366b83390190565b805161279e81613643565b600060208284031215612eb6578081fd5b612ec0602061361c565b9151825250919050565b80516001600160801b038116811461279e57600080fd5b805164ffffffffff8116811461279e57600080fd5b805161279e8161365b565b600060208284031215612f12578081fd5b8135612f1d81613643565b9392505050565b600060208284031215612f35578081fd5b8151612f1d81613643565b60008060408385031215612f52578081fd5b8235612f5d81613643565b91506020830135612f6d81613643565b809150509250929050565b60008060408385031215612f8a578182fd5b8235612f9581613643565b915060208301358015158114612f6d578182fd5b60008060408385031215612fbb578182fd5b8235612fc681613643565b946020939093013593505050565b60008060008060808587031215612fe9578182fd5b8435612ff481613643565b966020860135965060408601359560600135945092505050565b60008060208385031215613020578182fd5b823567ffffffffffffffff80821115613037578384fd5b818501915085601f83011261304a578384fd5b813581811115613058578485fd5b866020808302850101111561306b578485fd5b60209290920196919550909350505050565b60006020828403121561308e578081fd5b81358015158114612f1d578182fd5b6000602082840312156130ae578081fd5b612f1d8383612ea5565b60006101808083850312156130cb578182fd5b6130d48161361c565b90506130e08484612ea5565b81526130ef8460208501612eca565b60208201526131018460408501612eca565b60408201526131138460608501612eca565b60608201526131258460808501612eca565b60808201526131378460a08501612eca565b60a08201526131498460c08501612ee1565b60c082015261315b8460e08501612e9a565b60e082015261010061316f85828601612e9a565b9082015261012061318285858301612e9a565b9082015261014061319585858301612e9a565b908201526101606131a885858301612ef6565b908201529392505050565b6000602082840312156131c4578081fd5b813567ffffffffffffffff8111156131da578182fd5b820160e08185031215612f1d578182fd5b6000602082840312156131fc578081fd5b813567ffffffffffffffff811115613212578182fd5b820160c08185031215612f1d578182fd5b600060208284031215613234578081fd5b5051919050565b60006020828403121561324c578081fd5b8135612f1d8161365b565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452815b818110156132a65760208185018101518683018201520161328a565b818111156132b75782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0395861681529385166020850152918416604084015283166060830152909116608082015260a00190565b6001600160a01b038316815260406020820181905260009061337390830184613281565b949350505050565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6001600160a01b038c811682528b811660208301528a81166040830152891660608201526080810188905261010060a082018190526000906133e4838201898b613257565b905082810360c08401526133f9818789613257565b905082810360e084015261340e818587613257565b9e9d5050505050505050505050505050565b6001600160a01b038c811682528b811660208301528a811660408301528916606082015260ff8816608082015261010060a082018190526000906133e4838201898b613257565b6001600160a01b038b811682528a81166020830152891660408201526060810188905260e0608082018190526000906134a3908301888a613257565b82810360a08401526134b6818789613257565b905082810360c08401526134cb818587613257565b9d9c50505050505050505050505050565b6001600160a01b038b811682528a811660208301528916604082015260ff8816606082015260e0608082018190526000906134a3908301888a613257565b600060208252612f1d6020830184613281565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b6000808335601e198436030181126135b0578283fd5b83018035915067ffffffffffffffff8211156135ca578283fd5b6020019150368190038213156135df57600080fd5b9250929050565b6000808335601e198436030181126135b0578182fd5b600082356101fe19833603018112613612578182fd5b9190910192915050565b60405181810167ffffffffffffffff8111828210171561363b57600080fd5b604052919050565b6001600160a01b038116811461365857600080fd5b50565b60ff8116811461365857600080fdfe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212203801682b75a74ce25ca5dbe58739c5b62298b707b9119c9413881c56f29bcfa864736f6c634300060c0033a264697066735822122038bfd56901d234f4389bdd4aeed96b0c5e3e74eb3ca86fcbe4a22b8a6896e6f864736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/LendingPoolStorage.json b/eth_defi/abi/aave_v2/LendingPoolStorage.json new file mode 100644 index 00000000..932a87c3 --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingPoolStorage.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingPoolStorage", + "sourceName": "contracts/protocol/lendingpool/LendingPoolStorage.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212200524db279e490ff211679beb6db950eb46c19feaded066c6681b0d8561b7995364736f6c634300060c0033", + "deployedBytecode": "0x6080604052600080fdfea26469706673582212200524db279e490ff211679beb6db950eb46c19feaded066c6681b0d8561b7995364736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/LendingRateOracle.json b/eth_defi/abi/aave_v2/LendingRateOracle.json new file mode 100644 index 00000000..48f01687 --- /dev/null +++ b/eth_defi/abi/aave_v2/LendingRateOracle.json @@ -0,0 +1,137 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LendingRateOracle", + "sourceName": "contracts/mocks/oracle/LendingRateOracle.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + } + ], + "name": "getMarketBorrowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + } + ], + "name": "getMarketLiquidityRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + } + ], + "name": "setMarketBorrowRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rate", + "type": "uint256" + } + ], + "name": "setMarketLiquidityRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6104d38061007d6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212201d7f473788a285376533f5b96c895378fdff2a709aa8154545daaf976c8f1f9f64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80639f86a0ee1161005b5780639f86a0ee146100dc578063bb85c0bb14610108578063f2fde38b14610140578063fbe5ba1e146101665761007d565b8063715018a61461008257806372eb293d1461008c5780638da5cb5b146100b8575b600080fd5b61008a61018c565b005b61008a600480360360408110156100a257600080fd5b506001600160a01b03813516906020013561022e565b6100c06102a2565b604080516001600160a01b039092168252519081900360200190f35b61008a600480360360408110156100f257600080fd5b506001600160a01b0381351690602001356102b1565b61012e6004803603602081101561011e57600080fd5b50356001600160a01b0316610325565b60408051918252519081900360200190f35b61008a6004803603602081101561015657600080fd5b50356001600160a01b0316610340565b61012e6004803603602081101561017c57600080fd5b50356001600160a01b0316610438565b610194610453565b6000546001600160a01b039081169116146101e4576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610236610453565b6000546001600160a01b03908116911614610286576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546001600160a01b031690565b6102b9610453565b6000546001600160a01b03908116911614610309576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526001602052604090205490565b610348610453565b6000546001600160a01b03908116911614610398576040805162461bcd60e51b8152602060048201819052602482015260008051602061047e833981519152604482015290519081900360640190fd5b6001600160a01b0381166103dd5760405162461bcd60e51b81526004018080602001828103825260268152602001806104586026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526002602052604090205490565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212201d7f473788a285376533f5b96c895378fdff2a709aa8154545daaf976c8f1f9f64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MathUtils.json b/eth_defi/abi/aave_v2/MathUtils.json new file mode 100644 index 00000000..7e2df104 --- /dev/null +++ b/eth_defi/abi/aave_v2/MathUtils.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MathUtils", + "sourceName": "contracts/protocol/libraries/math/MathUtils.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bd95f86785acf0a5a7b3d7de5022d66faa865b34d41001742ee3cc7d5199969964736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bd95f86785acf0a5a7b3d7de5022d66faa865b34d41001742ee3cc7d5199969964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MintableDelegationERC20.json b/eth_defi/abi/aave_v2/MintableDelegationERC20.json new file mode 100644 index 00000000..7fddde4c --- /dev/null +++ b/eth_defi/abi/aave_v2/MintableDelegationERC20.json @@ -0,0 +1,347 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MintableDelegationERC20", + "sourceName": "contracts/mocks/tokens/MintableDelegationERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "delegateeAddress", + "type": "address" + } + ], + "name": "delegate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "delegatee", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000e9538038062000e95833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200020d565b508051620001d39060049060208401906200020d565b50506005805460ff1916601217905550620001ee81620001f7565b505050620002a9565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025057805160ff191683800117855562000280565b8280016001018555821562000280579182015b828111156200028057825182559160200191906001019062000263565b506200028e92915062000292565b5090565b5b808211156200028e576000815560010162000293565b610bdc80620002b96000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635c19a95c1161008c578063a0712d6811610066578063a0712d68146102c0578063a457c2d7146102dd578063a9059cbb14610309578063dd62ed3e14610335576100ea565b80635c19a95c1461026a57806370a082311461029257806395d89b41146102b8576100ea565b80631e31d053116100c85780631e31d053146101c657806323b872dd146101ea578063313ce56714610220578063395093511461023e576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101ac575b600080fd5b6100f7610363565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986004803603604081101561018257600080fd5b506001600160a01b0381351690602001356103f9565b604080519115158252519081900360200190f35b6101b4610416565b60408051918252519081900360200190f35b6101ce61041c565b604080516001600160a01b039092168252519081900360200190f35b6101986004803603606081101561020057600080fd5b506001600160a01b03813581169160208101359091169060400135610430565b6102286104b7565b6040805160ff9092168252519081900360200190f35b6101986004803603604081101561025457600080fd5b506001600160a01b0381351690602001356104c0565b6102906004803603602081101561028057600080fd5b50356001600160a01b031661050e565b005b6101b4600480360360208110156102a857600080fd5b50356001600160a01b0316610536565b6100f7610551565b610198600480360360208110156102d657600080fd5b50356105b2565b610198600480360360408110156102f357600080fd5b506001600160a01b0381351690602001356105c6565b6101986004803603604081101561031f57600080fd5b506001600160a01b03813516906020013561062e565b6101b46004803603604081101561034b57600080fd5b506001600160a01b0381358116916020013516610642565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b820191906000526020600020905b8154815290600101906020018083116103d257829003601f168201915b5050505050905090565b600061040d61040661066d565b8484610671565b50600192915050565b60025490565b60055461010090046001600160a01b031681565b600061043d84848461075d565b6104ad8461044961066d565b6104a885604051806060016040528060288152602001610b11602891396001600160a01b038a1660009081526001602052604081209061048761066d565b6001600160a01b0316815260208101919091526040016000205491906108b8565b610671565b5060019392505050565b60055460ff1690565b600061040d6104cd61066d565b846104a885600160006104de61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061094f565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b60006105be33836109b0565b506001919050565b600061040d6105d361066d565b846104a885604051806060016040528060258152602001610b8260259139600160006105fd61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906108b8565b600061040d61063b61066d565b848461075d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166106b65760405162461bcd60e51b8152600401808060200182810382526024815260200180610b5e6024913960400191505060405180910390fd5b6001600160a01b0382166106fb5760405162461bcd60e51b8152600401808060200182810382526022815260200180610ac96022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166107a25760405162461bcd60e51b8152600401808060200182810382526025815260200180610b396025913960400191505060405180910390fd5b6001600160a01b0382166107e75760405162461bcd60e51b8152600401808060200182810382526023815260200180610aa66023913960400191505060405180910390fd5b6107f2838383610aa0565b61082f81604051806060016040528060268152602001610aeb602691396001600160a01b03861660009081526020819052604090205491906108b8565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461085e908261094f565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156109475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561090c5781810151838201526020016108f4565b50505050905090810190601f1680156109395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156109a9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610a0b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610a1760008383610aa0565b600254610a24908261094f565b6002556001600160a01b038216600090815260208190526040902054610a4a908261094f565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122004fbaeb3cc09f4256c3ce4d08e767d79d9d60a4281bca4ef367a62b68fc60da664736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80635c19a95c1161008c578063a0712d6811610066578063a0712d68146102c0578063a457c2d7146102dd578063a9059cbb14610309578063dd62ed3e14610335576100ea565b80635c19a95c1461026a57806370a082311461029257806395d89b41146102b8576100ea565b80631e31d053116100c85780631e31d053146101c657806323b872dd146101ea578063313ce56714610220578063395093511461023e576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101ac575b600080fd5b6100f7610363565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986004803603604081101561018257600080fd5b506001600160a01b0381351690602001356103f9565b604080519115158252519081900360200190f35b6101b4610416565b60408051918252519081900360200190f35b6101ce61041c565b604080516001600160a01b039092168252519081900360200190f35b6101986004803603606081101561020057600080fd5b506001600160a01b03813581169160208101359091169060400135610430565b6102286104b7565b6040805160ff9092168252519081900360200190f35b6101986004803603604081101561025457600080fd5b506001600160a01b0381351690602001356104c0565b6102906004803603602081101561028057600080fd5b50356001600160a01b031661050e565b005b6101b4600480360360208110156102a857600080fd5b50356001600160a01b0316610536565b6100f7610551565b610198600480360360208110156102d657600080fd5b50356105b2565b610198600480360360408110156102f357600080fd5b506001600160a01b0381351690602001356105c6565b6101986004803603604081101561031f57600080fd5b506001600160a01b03813516906020013561062e565b6101b46004803603604081101561034b57600080fd5b506001600160a01b0381358116916020013516610642565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b820191906000526020600020905b8154815290600101906020018083116103d257829003601f168201915b5050505050905090565b600061040d61040661066d565b8484610671565b50600192915050565b60025490565b60055461010090046001600160a01b031681565b600061043d84848461075d565b6104ad8461044961066d565b6104a885604051806060016040528060288152602001610b11602891396001600160a01b038a1660009081526001602052604081209061048761066d565b6001600160a01b0316815260208101919091526040016000205491906108b8565b610671565b5060019392505050565b60055460ff1690565b600061040d6104cd61066d565b846104a885600160006104de61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061094f565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103ef5780601f106103c4576101008083540402835291602001916103ef565b60006105be33836109b0565b506001919050565b600061040d6105d361066d565b846104a885604051806060016040528060258152602001610b8260259139600160006105fd61066d565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906108b8565b600061040d61063b61066d565b848461075d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166106b65760405162461bcd60e51b8152600401808060200182810382526024815260200180610b5e6024913960400191505060405180910390fd5b6001600160a01b0382166106fb5760405162461bcd60e51b8152600401808060200182810382526022815260200180610ac96022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166107a25760405162461bcd60e51b8152600401808060200182810382526025815260200180610b396025913960400191505060405180910390fd5b6001600160a01b0382166107e75760405162461bcd60e51b8152600401808060200182810382526023815260200180610aa66023913960400191505060405180910390fd5b6107f2838383610aa0565b61082f81604051806060016040528060268152602001610aeb602691396001600160a01b03861660009081526020819052604090205491906108b8565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461085e908261094f565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156109475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561090c5781810151838201526020016108f4565b50505050905090810190601f1680156109395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156109a9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610a0b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610a1760008383610aa0565b600254610a24908261094f565b6002556001600160a01b038216600090815260208190526040902054610a4a908261094f565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122004fbaeb3cc09f4256c3ce4d08e767d79d9d60a4281bca4ef367a62b68fc60da664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MintableERC20.json b/eth_defi/abi/aave_v2/MintableERC20.json new file mode 100644 index 00000000..f20b697c --- /dev/null +++ b/eth_defi/abi/aave_v2/MintableERC20.json @@ -0,0 +1,321 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MintableERC20", + "sourceName": "contracts/mocks/tokens/MintableERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000dde38038062000dde833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001bd916003918501906200020d565b508051620001d39060049060208401906200020d565b50506005805460ff1916601217905550620001ee81620001f7565b505050620002a9565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025057805160ff191683800117855562000280565b8280016001018555821562000280579182015b828111156200028057825182559160200191906001019062000263565b506200028e92915062000292565b5090565b5b808211156200028e576000815560010162000293565b610b2580620002b96000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610421565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b03813516906020013561042a565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610478565b6100c1610493565b6101626004803603602081101561025457600080fd5b50356104f4565b6101626004803603604081101561027157600080fd5b506001600160a01b03813516906020013561050f565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610577565b61017e600480360360408110156102c957600080fd5b506001600160a01b038135811691602001351661058b565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105b6565b84846105ba565b50600192915050565b60025490565b60006103a78484846106a6565b610417846103b36105b6565b61041285604051806060016040528060288152602001610a5a602891396001600160a01b038a166000908152600160205260408120906103f16105b6565b6001600160a01b031681526020810191909152604001600020549190610801565b6105ba565b5060019392505050565b60055460ff1690565b600061038b6104376105b6565b8461041285600160006104486105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610898565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b60006105076105016105b6565b836108f9565b506001919050565b600061038b61051c6105b6565b8461041285604051806060016040528060258152602001610acb60259139600160006105466105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610801565b600061038b6105846105b6565b84846106a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aa76024913960400191505060405180910390fd5b6001600160a01b0382166106445760405162461bcd60e51b8152600401808060200182810382526022815260200180610a126022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106eb5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a826025913960400191505060405180910390fd5b6001600160a01b0382166107305760405162461bcd60e51b81526004018080602001828103825260238152602001806109ef6023913960400191505060405180910390fd5b61073b8383836109e9565b61077881604051806060016040528060268152602001610a34602691396001600160a01b0386166000908152602081905260409020549190610801565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107a79082610898565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085557818101518382015260200161083d565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108f2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610954576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610960600083836109e9565b60025461096d9082610898565b6002556001600160a01b0382166000908152602081905260409020546109939082610898565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e5664852459c92e02fd75c2f1affb39fdca48732351c788ba07cd0778be0a0e664736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461021057806395d89b4114610236578063a0712d681461023e578063a457c2d71461025b578063a9059cbb14610287578063dd62ed3e146102b3576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102e1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610377565b604080519115158252519081900360200190f35b61017e610394565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561039a565b6101ce610421565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b03813516906020013561042a565b61017e6004803603602081101561022657600080fd5b50356001600160a01b0316610478565b6100c1610493565b6101626004803603602081101561025457600080fd5b50356104f4565b6101626004803603604081101561027157600080fd5b506001600160a01b03813516906020013561050f565b6101626004803603604081101561029d57600080fd5b506001600160a01b038135169060200135610577565b61017e600480360360408110156102c957600080fd5b506001600160a01b038135811691602001351661058b565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b820191906000526020600020905b81548152906001019060200180831161035057829003601f168201915b5050505050905090565b600061038b6103846105b6565b84846105ba565b50600192915050565b60025490565b60006103a78484846106a6565b610417846103b36105b6565b61041285604051806060016040528060288152602001610a5a602891396001600160a01b038a166000908152600160205260408120906103f16105b6565b6001600160a01b031681526020810191909152604001600020549190610801565b6105ba565b5060019392505050565b60055460ff1690565b600061038b6104376105b6565b8461041285600160006104486105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610898565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561036d5780601f106103425761010080835404028352916020019161036d565b60006105076105016105b6565b836108f9565b506001919050565b600061038b61051c6105b6565b8461041285604051806060016040528060258152602001610acb60259139600160006105466105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610801565b600061038b6105846105b6565b84846106a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aa76024913960400191505060405180910390fd5b6001600160a01b0382166106445760405162461bcd60e51b8152600401808060200182810382526022815260200180610a126022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106eb5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a826025913960400191505060405180910390fd5b6001600160a01b0382166107305760405162461bcd60e51b81526004018080602001828103825260238152602001806109ef6023913960400191505060405180910390fd5b61073b8383836109e9565b61077881604051806060016040528060268152602001610a34602691396001600160a01b0386166000908152602081905260409020549190610801565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107a79082610898565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085557818101518382015260200161083d565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108f2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610954576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610960600083836109e9565b60025461096d9082610898565b6002556001600160a01b0382166000908152602081905260409020546109939082610898565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e5664852459c92e02fd75c2f1affb39fdca48732351c788ba07cd0778be0a0e664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockAToken.json b/eth_defi/abi/aave_v2/MockAToken.json new file mode 100644 index 00000000..aaa8848a --- /dev/null +++ b/eth_defi/abi/aave_v2/MockAToken.json @@ -0,0 +1,833 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockAToken", + "sourceName": "contracts/mocks/upgradeability/MockAToken.sol", + "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" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "BalanceTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "ATOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EIP712_REVISION", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RESERVE_TREASURY_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "_nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "receiverOfUnderlying", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "handleRepayment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "aTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "aTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "aTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mintToTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferOnLiquidation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferUnderlyingTo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b61282280620001406000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600290565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fc5df1e9bfbf2ee55b1e241e1e8381285f29ddffa3023d2f4299736d42d6865764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637535d2461161010f578063ae167335116100a2578063d505accf11610071578063d505accf146106aa578063d7020d0a146106fb578063dd62ed3e14610737578063f866c31914610765576101e5565b8063ae1673351461066c578063b16a19de14610674578063b1bf962d1461067c578063b9844d8d14610684576101e5565b806388dd91a1116100de57806388dd91a1146105e057806395d89b411461060c578063a457c2d714610614578063a9059cbb14610640576101e5565b80637535d2461461058957806375d26413146105ad57806378160376146105b55780637df5bd3b146105bd576101e5565b80631da24f3e116101875780633644e515116101565780633644e51514610503578063395093511461050b5780634efecaa51461053757806370a0823114610563576101e5565b80631da24f3e1461048157806323b872dd146104a757806330adf81f146104dd578063313ce567146104e5576101e5565b80630bd7ad3b116101c35780630bd7ad3b146102e6578063156e29f61461030057806318160ddd14610332578063183fb4131461033a576101e5565b806306fdde03146101ea578063095ea7b3146102675780630afbcdc9146102a7575b600080fd5b6101f261079b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610832565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b0316610850565b6040805192835260208301919091528051918290030190f35b6102ee61086d565b60408051918252519081900360200190f35b6102936004803603606081101561031657600080fd5b506001600160a01b038135169060208101359060400135610872565b6102ee610a40565b61047f600480360361010081101561035157600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a082013564010000000081111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111640100000000831117156103d057600080fd5b9193909290916020810190356401000000008111156103ee57600080fd5b82018360208201111561040057600080fd5b8035906020019184600183028401116401000000008311171561042257600080fd5b91939092909160208101903564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184600183028401116401000000008311171561047457600080fd5b509092509050610aea565b005b6102ee6004803603602081101561049757600080fd5b50356001600160a01b0316610e67565b610293600480360360608110156104bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e72565b6102ee610f32565b6104ed610f56565b6040805160ff9092168252519081900360200190f35b6102ee610f5f565b6102936004803603604081101561052157600080fd5b506001600160a01b038135169060200135610f65565b6102ee6004803603604081101561054d57600080fd5b506001600160a01b038135169060200135610fb3565b6102ee6004803603602081101561057957600080fd5b50356001600160a01b0316611059565b6105916110e8565b604080516001600160a01b039092168252519081900360200190f35b6105916110f7565b6101f2611106565b61047f600480360360408110156105d357600080fd5b5080359060200135611123565b61047f600480360360408110156105f657600080fd5b506001600160a01b03813516906020013561124a565b6101f26112d4565b6102936004803603604081101561062a57600080fd5b506001600160a01b038135169060200135611335565b6102936004803603604081101561065657600080fd5b506001600160a01b03813516906020013561139d565b6105916113fa565b610591611409565b6102ee611418565b6102ee6004803603602081101561069a57600080fd5b50356001600160a01b0316611422565b61047f600480360360e08110156106c057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611434565b61047f6004803603608081101561071157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561167b565b6102ee6004803603604081101561074d57600080fd5b506001600160a01b0381358116916020013516611820565b61047f6004803603606081101561077b57600080fd5b506001600160a01b0381358116916020810135909116906040013561184b565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b820191906000526020600020905b81548152906001019060200180831161080a57829003601f168201915b505050505090505b90565b600061084661083f61191c565b8484611920565b5060015b92915050565b60008061085c83611a0c565b610864611a27565b91509150915091565b600181565b603c546000906001600160a01b031661088961191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906109375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108fc5781810151838201526020016108e4565b50505050905090810190601f1680156109295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061094385611a0c565b905060006109518585611a2d565b6040805180820190915260028152611a9b60f11b6020820152909150816109b95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506109c48682611b34565b6040805186815290516001600160a01b038816916000916000805160206127148339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a4b611a27565b905080610a5c57600091505061082f565b603c54603e546040805163d15e005360e01b81526001600160a01b0392831660048201529051610ae493929092169163d15e005391602480820192602092909190829003018186803b158015610ab157600080fd5b505afa158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b50518290611c85565b91505090565b6000610af4611d43565b60015490915060ff1680610b0b5750610b0b611d48565b80610b17575060005481115b610b525760405162461bcd60e51b815260040180806020018281038252602e8152602001806126e6602e913960400191505060405180910390fd5b60015460ff16158015610b71576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603b81905550610c6989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d4e92505050565b610ca887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d6192505050565b610cb18a611d74565b8d603c60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603f60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e58576001805460ff191690555b50505050505050505050505050565b600061084a82611a0c565b6000610e7f848484611d8a565b610eef84610e8b61191c565b610eea856040518060600160405280602881526020016126be602891396001600160a01b038a16600090815260356020526040812090610ec961191c565b6001600160a01b031681526020810191909152604001600020549190611d97565b611920565b826001600160a01b0316846001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603b5481565b6000610846610f7261191c565b84610eea8560356000610f8361191c565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611df1565b603c546000906001600160a01b0316610fca61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061103b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50603e54611053906001600160a01b03168484611e52565b50919050565b603c54603e546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361084a93169163d15e0053916024808301926020929190829003018186803b1580156110ad57600080fd5b505afa1580156110c1573d6000803e3d6000fd5b505050506040513d60208110156110d757600080fd5b50516110e284611a0c565b90611c85565b603c546001600160a01b031690565b6000611101611ea4565b905090565b604051806040016040528060018152602001603160f81b81525081565b603c546001600160a01b031661113761191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111a85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50816111b357611246565b603d546001600160a01b03166111d2816111cd8585611a2d565b611b34565b6040805184815290516001600160a01b038316916000916000805160206127148339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b603c546001600160a01b031661125e61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906112cf5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108275780601f106107fc57610100808354040283529160200191610827565b600061084661134261191c565b84610eea856040518060600160405280602581526020016127c8602591396035600061136c61191c565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611d97565b60006113b16113aa61191c565b8484611d8a565b826001600160a01b03166113c361191c565b6001600160a01b0316600080516020612714833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603e546001600160a01b031690565b6000611101611a27565b603a6020526000908152604090205481565b6001600160a01b03871661147f576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114c9576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603a6020908152604080832054603b5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa1580156115de573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611641576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61164c826001611df1565b6001600160a01b038a166000908152603a6020526040902055611670898989611920565b505050505050505050565b603c546001600160a01b031661168f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906117005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50600061170d8383611a2d565b60408051808201909152600281526106a760f31b6020820152909150816117755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506117808582611eb3565b603e54611797906001600160a01b03168585611e52565b6040805184815290516000916001600160a01b038816916000805160206127148339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603c546001600160a01b031661185f61191c565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906118d05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b506118de8383836000611f57565b816001600160a01b0316836001600160a01b0316600080516020612714833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b0383166119655760405162461bcd60e51b815260040180806020018281038252602481526020018061277a6024913960400191505060405180910390fd5b6001600160a01b0382166119aa5760405162461bcd60e51b81526004018080602001828103825260228152602001806126766022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611a955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611b115760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b5082816b033b2e3c9fd0803ce800000086020181611b2b57fe5b04949350505050565b6001600160a01b038216611b8f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611b9b600083836112cf565b603654611ba88183611df1565b6036556001600160a01b038316600090815260346020526040902054611bce8184611df1565b6001600160a01b038516600090815260346020526040812091909155611bf2611ea4565b6001600160a01b031614611c7f57611c08611ea4565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050505b50505050565b6000821580611c92575081155b15611c9f5750600061084a565b816b019d971e4fe8401e740000001981611cb557fe5b0483111560405180604001604052806002815260200161068760f31b81525090611d205760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600290565b303b1590565b805161124690603790602084019061259d565b805161124690603890602084019061259d565b6039805460ff191660ff92909216919091179055565b6112cf8383836001611f57565b60008184841115611de95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156108fc5781810151838201526020016108e4565b505050900390565b600082820183811015611e4b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112cf908490612100565b603f546001600160a01b031690565b6001600160a01b038216611ef85760405162461bcd60e51b81526004018080602001828103825260218152602001806127346021913960400191505060405180910390fd5b611f04826000836112cf565b603654611f1181836122b8565b6036556001600160a01b0383166000908152603460209081526040918290205482516060810190935260228084529092611bce9286929061265490830139839190611d97565b603e54603c546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919390921691600091839163d15e0053916024808301926020929190829003018186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d6020811015611fd957600080fd5b505190506000611fec826110e28a611a0c565b90506000611ffd836110e28a611a0c565b9050612013898961200e8a87611a2d565b6122fa565b85156120a2576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561208957600080fd5b505af115801561209d573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b612112826001600160a01b0316612561565b612163576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121a15780518252601f199092019160209182019101612182565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612203576040519150601f19603f3d011682016040523d82523d6000602084013e612208565b606091505b50915091508161225f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611c7f5780806020019051602081101561227b57600080fd5b5051611c7f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061279e602a913960400191505060405180910390fd5b6000611e4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d97565b6001600160a01b03831661233f5760405162461bcd60e51b81526004018080602001828103825260258152602001806127556025913960400191505060405180910390fd5b6001600160a01b0382166123845760405162461bcd60e51b81526004018080602001828103825260238152602001806126316023913960400191505060405180910390fd5b61238f8383836112cf565b600060346000856001600160a01b03166001600160a01b031681526020019081526020016000205490506123de8260405180606001604052806026815260200161269860269139839190611d97565b6001600160a01b03808616600090815260346020526040808220939093559085168152205461240d8184611df1565b6001600160a01b038516600090815260346020526040812091909155612431611ea4565b6001600160a01b03161461255a5760365461244a611ea4565b6001600160a01b03166331873e2e8783866040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612558576124e1611ea4565b6001600160a01b03166331873e2e8683856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561253f57600080fd5b505af1158015612553573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061259557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125de57805160ff191683800117855561260b565b8280016001018555821561260b579182015b8281111561260b5782518255916020019190600101906125f0565b5061261792915061261b565b5090565b5b80821115612617576000815560010161261c56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fc5df1e9bfbf2ee55b1e241e1e8381285f29ddffa3023d2f4299736d42d6865764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockAggregator.json b/eth_defi/abi/aave_v2/MockAggregator.json new file mode 100644 index 00000000..0aff4905 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockAggregator.json @@ -0,0 +1,73 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockAggregator", + "sourceName": "contracts/mocks/oracle/CLAggregators/MockAggregator.sol", + "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": "getTokenType", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestAnswer", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516101153803806101158339818101604052602081101561003357600080fd5b5051600081815560408051428152905183917f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f919081900360200190a35060968061007f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806350d25bcd146037578063fcab181914604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005490565b60019056fea2646970667358221220922d25506926536ff0bf113d3b739683a1d3964e7197056d62de2ace11dc9d6c64736f6c634300060c0033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806350d25bcd146037578063fcab181914604f575b600080fd5b603d6055565b60408051918252519081900360200190f35b603d605b565b60005490565b60019056fea2646970667358221220922d25506926536ff0bf113d3b739683a1d3964e7197056d62de2ace11dc9d6c64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockFlashLoanReceiver.json b/eth_defi/abi/aave_v2/MockFlashLoanReceiver.json new file mode 100644 index 00000000..9e5ff063 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockFlashLoanReceiver.json @@ -0,0 +1,202 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockFlashLoanReceiver", + "sourceName": "contracts/mocks/flashloan/MockFlashLoanReceiver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_premiums", + "type": "uint256[]" + } + ], + "name": "ExecutedWithFail", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "_assets", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_premiums", + "type": "uint256[]" + } + ], + "name": "ExecutedWithSuccess", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "amountToApprove", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountToApprove", + "type": "uint256" + } + ], + "name": "setAmountToApprove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "fail", + "type": "bool" + } + ], + "name": "setFailExecutionTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setSimulateEOA", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "simulateEOA", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b50604051610a8c380380610a8c8339818101604052602081101561003357600080fd5b50516001600160601b0319606082901b1660805260408051630261bf8b60e01b8152905182916001600160a01b03831691630261bf8b91600480820192602092909190829003018186803b15801561008a57600080fd5b505afa15801561009e573d6000803e3d6000fd5b505050506040513d60208110156100b457600080fd5b5051606081811b6001600160601b03191660a052608051901c92506001600160a01b031690506109906100fc6000398061070852806108b952508061038952506109906000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4dcfc771161005b578063b4dcfc7714610329578063bb271c4d14610331578063bf443f851461034b578063e9a6a25b1461036857610088565b80630542975c1461008d578063388f70f1146100b15780634444f331146100d2578063920f5c84146100ee575b600080fd5b610095610387565b604080516001600160a01b039092168252519081900360200190f35b6100d0600480360360208110156100c757600080fd5b503515156103ab565b005b6100da6103c9565b604080519115158252519081900360200190f35b6100da600480360360a081101561010457600080fd5b810190602081018135600160201b81111561011e57600080fd5b82018360208201111561013057600080fd5b803590602001918460208302840111600160201b8311171561015157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111600160201b831117156101d357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460208302840111600160201b8311171561025557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102b557600080fd5b8201836020820111156102c757600080fd5b803590602001918460018302840111600160201b831117156102e857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103d2945050505050565b6100956108b7565b6103396108db565b60408051918252519081900360200190f35b6100d06004803603602081101561036157600080fd5b50356108e1565b6100d06004803603602081101561037e57600080fd5b503515156108e6565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054911515600160a01b0260ff60a01b19909216919091179055565b60025460ff1690565b60008054600160a01b900460ff16156104f3577f9972b212e52913783072b960dd41527ae8b6e609d017b64039758dda0ce4127886868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610451578181015183820152602001610439565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610490578181015183820152602001610478565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156104cf5781810151838201526020016104b7565b50505050905001965050505050505060405180910390a15060025460ff16156108ae565b60005b86518110156107a857600087828151811061050d57fe5b6020026020010151905087828151811061052357fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505187518890849081106105b157fe5b6020026020010151111561060c576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b6000600154600014156106575761065287848151811061062857fe5b602002602001015189858151811061063c57fe5b60200260200101516108f990919063ffffffff16565b61065b565b6001545b9050816001600160a01b031663a0712d6888858151811061067857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b505050506040513d60208110156106e057600080fd5b505088518990849081106106f057fe5b60200260200101516001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5050600190920191506104f69050565b507fbd6b6bfac59612765a81cc4fdee74ab4859671fa14a562056f9eea438735a78a86868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156108155781810151838201526020016107fd565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561085457818101518382015260200161083c565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561089357818101518382015260200161087b565b50505050905001965050505050505060405180910390a15060015b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015490565b600155565b6002805460ff1916911515919091179055565b600082820183811015610953576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea26469706673582212208b5ed508569a0c9bd5d16553e946e87eded3cada450cefde6d7bfcb18a666c5c64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063b4dcfc771161005b578063b4dcfc7714610329578063bb271c4d14610331578063bf443f851461034b578063e9a6a25b1461036857610088565b80630542975c1461008d578063388f70f1146100b15780634444f331146100d2578063920f5c84146100ee575b600080fd5b610095610387565b604080516001600160a01b039092168252519081900360200190f35b6100d0600480360360208110156100c757600080fd5b503515156103ab565b005b6100da6103c9565b604080519115158252519081900360200190f35b6100da600480360360a081101561010457600080fd5b810190602081018135600160201b81111561011e57600080fd5b82018360208201111561013057600080fd5b803590602001918460208302840111600160201b8311171561015157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111600160201b831117156101d357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561022257600080fd5b82018360208201111561023457600080fd5b803590602001918460208302840111600160201b8311171561025557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102b557600080fd5b8201836020820111156102c757600080fd5b803590602001918460018302840111600160201b831117156102e857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103d2945050505050565b6100956108b7565b6103396108db565b60408051918252519081900360200190f35b6100d06004803603602081101561036157600080fd5b50356108e1565b6100d06004803603602081101561037e57600080fd5b503515156108e6565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054911515600160a01b0260ff60a01b19909216919091179055565b60025460ff1690565b60008054600160a01b900460ff16156104f3577f9972b212e52913783072b960dd41527ae8b6e609d017b64039758dda0ce4127886868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610451578181015183820152602001610439565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610490578181015183820152602001610478565b50505050905001848103825285818151815260200191508051906020019060200280838360005b838110156104cf5781810151838201526020016104b7565b50505050905001965050505050505060405180910390a15060025460ff16156108ae565b60005b86518110156107a857600087828151811061050d57fe5b6020026020010151905087828151811061052357fe5b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505187518890849081106105b157fe5b6020026020010151111561060c576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b6000600154600014156106575761065287848151811061062857fe5b602002602001015189858151811061063c57fe5b60200260200101516108f990919063ffffffff16565b61065b565b6001545b9050816001600160a01b031663a0712d6888858151811061067857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b505050506040513d60208110156106e057600080fd5b505088518990849081106106f057fe5b60200260200101516001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5050600190920191506104f69050565b507fbd6b6bfac59612765a81cc4fdee74ab4859671fa14a562056f9eea438735a78a86868660405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156108155781810151838201526020016107fd565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561085457818101518382015260200161083c565b50505050905001848103825285818151815260200191508051906020019060200280838360005b8381101561089357818101518382015260200161087b565b50505050905001965050505050505060405180910390a15060015b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015490565b600155565b6002805460ff1916911515919091179055565b600082820183811015610953576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fea26469706673582212208b5ed508569a0c9bd5d16553e946e87eded3cada450cefde6d7bfcb18a666c5c64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockParaSwapAugustus.json b/eth_defi/abi/aave_v2/MockParaSwapAugustus.json new file mode 100644 index 00000000..8c00e753 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockParaSwapAugustus.json @@ -0,0 +1,96 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockParaSwapAugustus", + "sourceName": "contracts/mocks/swap/MockParaSwapAugustus.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromToken", + "type": "address" + }, + { + "internalType": "address", + "name": "toToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "fromAmountMin", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fromAmountMax", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "expectSwap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenTransferProxy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromToken", + "type": "address" + }, + { + "internalType": "address", + "name": "toToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "toAmount", + "type": "uint256" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161001d9061004f565b604051809103906000f080158015610039573d6000803e3d6000fd5b5060601b6001600160601b03191660805261005c565b6104ca8061069683390190565b60805160601c61061961007d6000398060ec528061020252506106196000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063b166d5f014610046578063d2c4b5981461005b578063fe02915614610079575b600080fd5b6100596100543660046103e5565b610099565b005b6100636100ea565b604051610070919061045c565b60405180910390f35b61008c6100873660046103a2565b61010e565b60405161007091906105c2565b60008054600160ff199091168117610100600160a81b0319166101006001600160a01b03988916021790915580546001600160a01b0319169490951693909317909355600255600391909155600455565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000805460ff1661013a5760405162461bcd60e51b81526004016101319061053a565b60405180910390fd5b6000546001600160a01b03868116610100909204161461016c5760405162461bcd60e51b815260040161013190610593565b6001546001600160a01b038581169116146101995760405162461bcd60e51b815260040161013190610566565b60025483101580156101ad57506003548311155b6101c95760405162461bcd60e51b815260040161013190610503565b8160045410156101eb5760405162461bcd60e51b8152600401610131906104b3565b604051630aed65f560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906315dacbea9061023d908890339030908990600401610489565b600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b50506004805460405163140e25ad60e31b81526001600160a01b038916945063a0712d68935061029b92016105c2565b602060405180830381600087803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ed9190610435565b506004805460405163a9059cbb60e01b81526001600160a01b0387169263a9059cbb9261031c92339201610470565b602060405180830381600087803b15801561033657600080fd5b505af115801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036e9190610435565b50506000805460ff19169055600454949350505050565b80356001600160a01b038116811461039c57600080fd5b92915050565b600080600080608085870312156103b7578384fd5b6103c18686610385565b93506103d08660208701610385565b93969395505050506040820135916060013590565b600080600080600060a086880312156103fc578081fd5b8535610407816105cb565b94506020860135610417816105cb565b94979496505050506040830135926060810135926080909101359150565b600060208284031215610446578081fd5b81518015158114610455578182fd5b9392505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60208082526030908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201526f1cdcc81d1a185b88195e1c1958dd195960821b606082015260800190565b60208082526018908201527f46726f6d20616d6f756e74206f7574206f662072616e67650000000000000000604082015260600190565b60208082526012908201527104e6f7420657870656374696e6720737761760741b604082015260600190565b6020808252601390820152722ab732bc3832b1ba32b2103a37903a37b5b2b760691b604082015260600190565b6020808252601590820152742ab732bc3832b1ba32b210333937b6903a37b5b2b760591b604082015260600190565b90815260200190565b6001600160a01b03811681146105e057600080fd5b5056fea264697066735822122007678918f6892d60d6f6551ed51311ff6c0d59ee6e74e266994f62d82657c65b64736f6c634300060c0033608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b61044d8061007d6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806315dacbea14610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008c575b600080fd5b61006461005f3660046102dc565b61009f565b005b610064610166565b6100766101e5565b604051610083919061034c565b60405180910390f35b61006461009a3660046102ae565b6101f4565b6100a76102aa565b6000546001600160a01b039081169116146100dd5760405162461bcd60e51b81526004016100d4906103ca565b60405180910390fd5b6040516323b872dd60e01b81526001600160a01b038516906323b872dd9061010d90869086908690600401610360565b602060405180830381600087803b15801561012757600080fd5b505af115801561013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015f919061032c565b5050505050565b61016e6102aa565b6000546001600160a01b0390811691161461019b5760405162461bcd60e51b81526004016100d4906103ca565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6101fc6102aa565b6000546001600160a01b039081169116146102295760405162461bcd60e51b81526004016100d4906103ca565b6001600160a01b03811661024f5760405162461bcd60e51b81526004016100d490610384565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000602082840312156102bf578081fd5b81356001600160a01b03811681146102d5578182fd5b9392505050565b600080600080608085870312156102f1578283fd5b84356102fc816103ff565b9350602085013561030c816103ff565b9250604085013561031c816103ff565b9396929550929360600135925050565b60006020828403121561033d578081fd5b815180151581146102d5578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b038116811461041457600080fd5b5056fea2646970667358221220814aabf77f0632c9dd933bd2c21d8f89d75c1744d42e3c039d596fe7ea6dfde764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063b166d5f014610046578063d2c4b5981461005b578063fe02915614610079575b600080fd5b6100596100543660046103e5565b610099565b005b6100636100ea565b604051610070919061045c565b60405180910390f35b61008c6100873660046103a2565b61010e565b60405161007091906105c2565b60008054600160ff199091168117610100600160a81b0319166101006001600160a01b03988916021790915580546001600160a01b0319169490951693909317909355600255600391909155600455565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000805460ff1661013a5760405162461bcd60e51b81526004016101319061053a565b60405180910390fd5b6000546001600160a01b03868116610100909204161461016c5760405162461bcd60e51b815260040161013190610593565b6001546001600160a01b038581169116146101995760405162461bcd60e51b815260040161013190610566565b60025483101580156101ad57506003548311155b6101c95760405162461bcd60e51b815260040161013190610503565b8160045410156101eb5760405162461bcd60e51b8152600401610131906104b3565b604051630aed65f560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906315dacbea9061023d908890339030908990600401610489565b600060405180830381600087803b15801561025757600080fd5b505af115801561026b573d6000803e3d6000fd5b50506004805460405163140e25ad60e31b81526001600160a01b038916945063a0712d68935061029b92016105c2565b602060405180830381600087803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ed9190610435565b506004805460405163a9059cbb60e01b81526001600160a01b0387169263a9059cbb9261031c92339201610470565b602060405180830381600087803b15801561033657600080fd5b505af115801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036e9190610435565b50506000805460ff19169055600454949350505050565b80356001600160a01b038116811461039c57600080fd5b92915050565b600080600080608085870312156103b7578384fd5b6103c18686610385565b93506103d08660208701610385565b93969395505050506040820135916060013590565b600080600080600060a086880312156103fc578081fd5b8535610407816105cb565b94506020860135610417816105cb565b94979496505050506040830135926060810135926080909101359150565b600060208284031215610446578081fd5b81518015158114610455578182fd5b9392505050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60208082526030908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201526f1cdcc81d1a185b88195e1c1958dd195960821b606082015260800190565b60208082526018908201527f46726f6d20616d6f756e74206f7574206f662072616e67650000000000000000604082015260600190565b60208082526012908201527104e6f7420657870656374696e6720737761760741b604082015260600190565b6020808252601390820152722ab732bc3832b1ba32b2103a37903a37b5b2b760691b604082015260600190565b6020808252601590820152742ab732bc3832b1ba32b210333937b6903a37b5b2b760591b604082015260600190565b90815260200190565b6001600160a01b03811681146105e057600080fd5b5056fea264697066735822122007678918f6892d60d6f6551ed51311ff6c0d59ee6e74e266994f62d82657c65b64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockParaSwapAugustusRegistry.json b/eth_defi/abi/aave_v2/MockParaSwapAugustusRegistry.json new file mode 100644 index 00000000..76b9e929 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockParaSwapAugustusRegistry.json @@ -0,0 +1,41 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockParaSwapAugustusRegistry", + "sourceName": "contracts/mocks/swap/MockParaSwapAugustusRegistry.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "augustus", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "augustus", + "type": "address" + } + ], + "name": "isValidAugustus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161017b38038061017b83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c60ef61008c600039806052525060ef6000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063fb04e17b14602d575b600080fd5b603c60383660046082565b6050565b6040516047919060ae565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b6000602082840312156092578081fd5b81356001600160a01b038116811460a7578182fd5b9392505050565b90151581526020019056fea2646970667358221220f8912de3b74b6bb8aa154f835ce71bb63e20059996f63ad8d00a95c0e5e8a5b764736f6c634300060c0033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063fb04e17b14602d575b600080fd5b603c60383660046082565b6050565b6040516047919060ae565b60405180910390f35b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b6000602082840312156092578081fd5b81356001600160a01b038116811460a7578182fd5b9392505050565b90151581526020019056fea2646970667358221220f8912de3b74b6bb8aa154f835ce71bb63e20059996f63ad8d00a95c0e5e8a5b764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockParaSwapTokenTransferProxy.json b/eth_defi/abi/aave_v2/MockParaSwapTokenTransferProxy.json new file mode 100644 index 00000000..e5e98123 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockParaSwapTokenTransferProxy.json @@ -0,0 +1,91 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockParaSwapTokenTransferProxy", + "sourceName": "contracts/mocks/swap/MockParaSwapTokenTransferProxy.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b61044d8061007d6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806315dacbea14610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008c575b600080fd5b61006461005f3660046102dc565b61009f565b005b610064610166565b6100766101e5565b604051610083919061034c565b60405180910390f35b61006461009a3660046102ae565b6101f4565b6100a76102aa565b6000546001600160a01b039081169116146100dd5760405162461bcd60e51b81526004016100d4906103ca565b60405180910390fd5b6040516323b872dd60e01b81526001600160a01b038516906323b872dd9061010d90869086908690600401610360565b602060405180830381600087803b15801561012757600080fd5b505af115801561013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015f919061032c565b5050505050565b61016e6102aa565b6000546001600160a01b0390811691161461019b5760405162461bcd60e51b81526004016100d4906103ca565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6101fc6102aa565b6000546001600160a01b039081169116146102295760405162461bcd60e51b81526004016100d4906103ca565b6001600160a01b03811661024f5760405162461bcd60e51b81526004016100d490610384565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000602082840312156102bf578081fd5b81356001600160a01b03811681146102d5578182fd5b9392505050565b600080600080608085870312156102f1578283fd5b84356102fc816103ff565b9350602085013561030c816103ff565b9250604085013561031c816103ff565b9396929550929360600135925050565b60006020828403121561033d578081fd5b815180151581146102d5578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b038116811461041457600080fd5b5056fea2646970667358221220814aabf77f0632c9dd933bd2c21d8f89d75c1744d42e3c039d596fe7ea6dfde764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806315dacbea14610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008c575b600080fd5b61006461005f3660046102dc565b61009f565b005b610064610166565b6100766101e5565b604051610083919061034c565b60405180910390f35b61006461009a3660046102ae565b6101f4565b6100a76102aa565b6000546001600160a01b039081169116146100dd5760405162461bcd60e51b81526004016100d4906103ca565b60405180910390fd5b6040516323b872dd60e01b81526001600160a01b038516906323b872dd9061010d90869086908690600401610360565b602060405180830381600087803b15801561012757600080fd5b505af115801561013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015f919061032c565b5050505050565b61016e6102aa565b6000546001600160a01b0390811691161461019b5760405162461bcd60e51b81526004016100d4906103ca565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6101fc6102aa565b6000546001600160a01b039081169116146102295760405162461bcd60e51b81526004016100d4906103ca565b6001600160a01b03811661024f5760405162461bcd60e51b81526004016100d490610384565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000602082840312156102bf578081fd5b81356001600160a01b03811681146102d5578182fd5b9392505050565b600080600080608085870312156102f1578283fd5b84356102fc816103ff565b9350602085013561030c816103ff565b9250604085013561031c816103ff565b9396929550929360600135925050565b60006020828403121561033d578081fd5b815180151581146102d5578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b038116811461041457600080fd5b5056fea2646970667358221220814aabf77f0632c9dd933bd2c21d8f89d75c1744d42e3c039d596fe7ea6dfde764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockStableDebtToken.json b/eth_defi/abi/aave_v2/MockStableDebtToken.json new file mode 100644 index 00000000..defc188f --- /dev/null +++ b/eth_defi/abi/aave_v2/MockStableDebtToken.json @@ -0,0 +1,777 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockStableDebtToken", + "sourceName": "contracts/mocks/upgradeability/MockStableDebtToken.sol", + "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": "fromUser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowAllowanceDelegated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "avgStableRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalSupply", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "avgStableRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalSupply", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "DEBT_TOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveDelegation", + "outputs": [], + "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": "address", + "name": "fromUser", + "type": "address" + }, + { + "internalType": "address", + "name": "toUser", + "type": "address" + } + ], + "name": "borrowAllowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAverageStableRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupplyData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalSupplyAndAvgRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalSupplyLastUpdated", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserLastUpdated", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserStableRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "principalBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212208fb1f28be199c7fb7ed2d3d42cc21fd5aebb0919a3c8ad08a1cacdbdac4ee83164736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212208fb1f28be199c7fb7ed2d3d42cc21fd5aebb0919a3c8ad08a1cacdbdac4ee83164736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockUniswapV2Router02.json b/eth_defi/abi/aave_v2/MockUniswapV2Router02.json new file mode 100644 index 00000000..59eeb761 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockUniswapV2Router02.json @@ -0,0 +1,242 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockUniswapV2Router02", + "sourceName": "contracts/mocks/swap/MockUniswapV2Router02.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + } + ], + "name": "setAmountIn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "name": "setAmountOut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setAmountToReturn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reserve", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setAmountToSwap", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setDefaultMockValue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "swapExactTokensForTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "path", + "type": "address[]" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "swapTokensForExactTokens", + "outputs": [ + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610ddd806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638803dbee116100665780638803dbee146102505780639da23949146102d9578063d06ca61f14610315578063ee92b8591461038a578063fcaf206c146103a757610093565b80631f00ca741461009857806338ed17391461015d5780635186725f146101e65780635fdcafc814610214575b600080fd5b61010d600480360360408110156100ae57600080fd5b81359190810190604081016020820135600160201b8111156100cf57600080fd5b8201836020820111156100e157600080fd5b803590602001918460208302840111600160201b8311171561010257600080fd5b5090925090506103d3565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610149578181015183820152602001610131565b505050509050019250505060405180910390f35b61010d600480360360a081101561017357600080fd5b813591602081013591810190606081016040820135600160201b81111561019957600080fd5b8201836020820111156101ab57600080fd5b803590602001918460208302840111600160201b831117156101cc57600080fd5b91935091506001600160a01b038135169060200135610588565b610212600480360360408110156101fc57600080fd5b506001600160a01b038135169060200135610890565b005b6102126004803603608081101561022a57600080fd5b508035906001600160a01b036020820135811691604081013590911690606001356108ac565b61010d600480360360a081101561026657600080fd5b813591602081013591810190606081016040820135600160201b81111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460208302840111600160201b831117156102bf57600080fd5b91935091506001600160a01b0381351690602001356108e0565b610212600480360360808110156102ef57600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610bb0565b61010d6004803603604081101561032b57600080fd5b81359190810190604081016020820135600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460208302840111600160201b8311171561037f57600080fd5b509092509050610be4565b610212600480360360208110156103a057600080fd5b5035610d86565b610212600480360360408110156103bd57600080fd5b506001600160a01b038135169060200135610d8b565b6060808267ffffffffffffffff811180156103ed57600080fd5b50604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000600260008686600081811061042d57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008686600181811061046c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600087815260200190815260200160002054116104bb5760045461054e565b60026000858560008181106104cc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008585600181811061050b57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160008151811061055b57fe5b602002602001018181525050848160018151811061057557fe5b6020908102919091010152949350505050565b60608484600081811061059757fe5b604080516323b872dd60e01b8152336004820152306024820152604481018c90529051602092830294909401356001600160a01b0316936323b872dd9350606480830193928290030181600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d602081101561061c57600080fd5b5085905084600181811061062c57fe5b905060200201356001600160a01b03166001600160a01b031663a0712d686000808888600081811061065a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b508590508460018181106106fb57fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb846000808989600081811061072a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b505050506040513d60208110156107cb57600080fd5b5084905067ffffffffffffffff811180156107e557600080fd5b5060405190808252806020026020018201604052801561080f578160200160208202803683370190505b509050868160008151811061082057fe5b6020026020010181815250506000808686600081811061083c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020548160018151811061087a57fe5b6020026020010181815250509695505050505050565b6001600160a01b03909116600090815260208190526040902055565b6001600160a01b03928316600090815260036020908152604080832094909516825292835283812094815293909152912055565b6060848460008181106108ef57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd3330600160008a8a600081811061092057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b508590508460018181106109e157fe5b905060200201356001600160a01b03166001600160a01b031663a0712d68886040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50859050846001818110610a7057fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb84896040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5084905067ffffffffffffffff81118015610b1a57600080fd5b50604051908082528060200260200182016040528015610b44578160200160208202803683370190505b5090506001600086866000818110610b5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205481600081518110610b9657fe5b602002602001018181525050868160018151811061087a57fe5b6001600160a01b03928316600090815260026020908152604080832094909516825292835283812094815293909152912055565b6060808267ffffffffffffffff81118015610bfe57600080fd5b50604051908082528060200260200182016040528015610c28578160200160208202803683370190505b5090508481600081518110610c3957fe5b60200260200101818152505060006003600086866000818110610c5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600086866001818110610c9757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008781526020019081526020016000205411610ce657600454610d79565b6003600085856000818110610cf757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600085856001818110610d3657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160018151811061057557fe5b600455565b6001600160a01b0390911660009081526001602052604090205556fea264697066735822122038405d2d1a37a9007719713f9f7e934c32843988a0396ccdf492817ac7cd2c0664736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638803dbee116100665780638803dbee146102505780639da23949146102d9578063d06ca61f14610315578063ee92b8591461038a578063fcaf206c146103a757610093565b80631f00ca741461009857806338ed17391461015d5780635186725f146101e65780635fdcafc814610214575b600080fd5b61010d600480360360408110156100ae57600080fd5b81359190810190604081016020820135600160201b8111156100cf57600080fd5b8201836020820111156100e157600080fd5b803590602001918460208302840111600160201b8311171561010257600080fd5b5090925090506103d3565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610149578181015183820152602001610131565b505050509050019250505060405180910390f35b61010d600480360360a081101561017357600080fd5b813591602081013591810190606081016040820135600160201b81111561019957600080fd5b8201836020820111156101ab57600080fd5b803590602001918460208302840111600160201b831117156101cc57600080fd5b91935091506001600160a01b038135169060200135610588565b610212600480360360408110156101fc57600080fd5b506001600160a01b038135169060200135610890565b005b6102126004803603608081101561022a57600080fd5b508035906001600160a01b036020820135811691604081013590911690606001356108ac565b61010d600480360360a081101561026657600080fd5b813591602081013591810190606081016040820135600160201b81111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460208302840111600160201b831117156102bf57600080fd5b91935091506001600160a01b0381351690602001356108e0565b610212600480360360808110156102ef57600080fd5b508035906001600160a01b03602082013581169160408101359091169060600135610bb0565b61010d6004803603604081101561032b57600080fd5b81359190810190604081016020820135600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460208302840111600160201b8311171561037f57600080fd5b509092509050610be4565b610212600480360360208110156103a057600080fd5b5035610d86565b610212600480360360408110156103bd57600080fd5b506001600160a01b038135169060200135610d8b565b6060808267ffffffffffffffff811180156103ed57600080fd5b50604051908082528060200260200182016040528015610417578160200160208202803683370190505b5090506000600260008686600081811061042d57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008686600181811061046c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600087815260200190815260200160002054116104bb5760045461054e565b60026000858560008181106104cc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008585600181811061050b57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160008151811061055b57fe5b602002602001018181525050848160018151811061057557fe5b6020908102919091010152949350505050565b60608484600081811061059757fe5b604080516323b872dd60e01b8152336004820152306024820152604481018c90529051602092830294909401356001600160a01b0316936323b872dd9350606480830193928290030181600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d602081101561061c57600080fd5b5085905084600181811061062c57fe5b905060200201356001600160a01b03166001600160a01b031663a0712d686000808888600081811061065a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156106c157600080fd5b505af11580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b508590508460018181106106fb57fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb846000808989600081811061072a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b505050506040513d60208110156107cb57600080fd5b5084905067ffffffffffffffff811180156107e557600080fd5b5060405190808252806020026020018201604052801561080f578160200160208202803683370190505b509050868160008151811061082057fe5b6020026020010181815250506000808686600081811061083c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020548160018151811061087a57fe5b6020026020010181815250509695505050505050565b6001600160a01b03909116600090815260208190526040902055565b6001600160a01b03928316600090815260036020908152604080832094909516825292835283812094815293909152912055565b6060848460008181106108ef57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd3330600160008a8a600081811061092057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050506040513d60208110156109d157600080fd5b508590508460018181106109e157fe5b905060200201356001600160a01b03166001600160a01b031663a0712d68886040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b50859050846001818110610a7057fe5b905060200201356001600160a01b03166001600160a01b031663a9059cbb84896040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ad657600080fd5b505af1158015610aea573d6000803e3d6000fd5b505050506040513d6020811015610b0057600080fd5b5084905067ffffffffffffffff81118015610b1a57600080fd5b50604051908082528060200260200182016040528015610b44578160200160208202803683370190505b5090506001600086866000818110610b5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205481600081518110610b9657fe5b602002602001018181525050868160018151811061087a57fe5b6001600160a01b03928316600090815260026020908152604080832094909516825292835283812094815293909152912055565b6060808267ffffffffffffffff81118015610bfe57600080fd5b50604051908082528060200260200182016040528015610c28578160200160208202803683370190505b5090508481600081518110610c3957fe5b60200260200101818152505060006003600086866000818110610c5857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600086866001818110610c9757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060008781526020019081526020016000205411610ce657600454610d79565b6003600085856000818110610cf757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600085856001818110610d3657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000868152602001908152602001600020545b8160018151811061057557fe5b600455565b6001600160a01b0390911660009081526001602052604090205556fea264697066735822122038405d2d1a37a9007719713f9f7e934c32843988a0396ccdf492817ac7cd2c0664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/MockVariableDebtToken.json b/eth_defi/abi/aave_v2/MockVariableDebtToken.json new file mode 100644 index 00000000..aef899b6 --- /dev/null +++ b/eth_defi/abi/aave_v2/MockVariableDebtToken.json @@ -0,0 +1,667 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockVariableDebtToken", + "sourceName": "contracts/mocks/upgradeability/MockVariableDebtToken.sol", + "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": "fromUser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowAllowanceDelegated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "DEBT_TOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromUser", + "type": "address" + }, + { + "internalType": "address", + "name": "toUser", + "type": "address" + } + ], + "name": "borrowAllowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600290565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220d9e8d1bed9e21d51d95ad3b548c18a9234ae32f3294fc93b4a3f6029c2a4076164736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600290565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220d9e8d1bed9e21d51d95ad3b548c18a9234ae32f3294fc93b4a3f6029c2a4076164736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Ownable.json b/eth_defi/abi/aave_v2/Ownable.json new file mode 100644 index 00000000..43011d77 --- /dev/null +++ b/eth_defi/abi/aave_v2/Ownable.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Ownable", + "sourceName": "contracts/dependencies/openzeppelin/contracts/Ownable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ParaSwapLiquiditySwapAdapter.json b/eth_defi/abi/aave_v2/ParaSwapLiquiditySwapAdapter.json new file mode 100644 index 00000000..9ca36882 --- /dev/null +++ b/eth_defi/abi/aave_v2/ParaSwapLiquiditySwapAdapter.json @@ -0,0 +1,302 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ParaSwapLiquiditySwapAdapter", + "sourceName": "contracts/adapters/ParaSwapLiquiditySwapAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + }, + { + "internalType": "contract IParaSwapAugustusRegistry", + "name": "augustusRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "AUGUSTUS_REGISTRY", + "outputs": [ + { + "internalType": "contract IParaSwapAugustusRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20Detailed", + "name": "assetToSwapFrom", + "type": "address" + }, + { + "internalType": "contract IERC20Detailed", + "name": "assetToSwapTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToSwap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minAmountToReceive", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "swapAllBalanceOffset", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "swapCalldata", + "type": "bytes" + }, + { + "internalType": "contract IParaSwapAugustus", + "name": "augustus", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct BaseParaSwapAdapter.PermitSignature", + "name": "permitParams", + "type": "tuple" + } + ], + "name": "swapAndDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101006040523480156200001257600080fd5b50604051620027d1380380620027d18339810160408190526200003591620002af565b81818180806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb919062000267565b60601b6001600160601b03191660a052506000620000e862000263565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350806001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a7919062000267565b60601b6001600160601b03191660c0525060405163fb04e17b60e01b81526001600160a01b0382169063fb04e17b90620001e790600090600401620002ed565b60206040518083038186803b1580156200020057600080fd5b505afa15801562000215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023b91906200028d565b156200024657600080fd5b60601b6001600160601b03191660e052505060018055506200031a565b3390565b60006020828403121562000279578081fd5b8151620002868162000301565b9392505050565b6000602082840312156200029f578081fd5b8151801515811462000286578182fd5b60008060408385031215620002c2578081fd5b8251620002cf8162000301565b6020840151909250620002e28162000301565b809150509250929050565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146200031757600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6124346200039d6000398061028c5280610cf05250806102685280611538525080610371528061049d5280610623528061065852806106945280610943528061097852806109b45280610a505280610a7b5280610ae45280610c2752508061023e52506124346000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c8063715018a611610071578063715018a6146101055780638da5cb5b1461010d578063920f5c8414610115578063b4dcfc7714610135578063d3454a351461013d578063f2fde38b14610150576100a8565b8062ae3bf8146100ad5780630542975c146100c257806332e4b286146100e057806338013f02146100f55780633a829867146100fd575b600080fd5b6100c06100bb366004611954565b610163565b005b6100ca61023c565b6040516100d79190611d6b565b60405180910390f35b6100e8610260565b6040516100d79190612370565b6100ca610266565b6100ca61028a565b6100c06102ae565b6100ca61032d565b61012861012336600461198c565b61033c565b6040516100d79190611e67565b6100ca61049b565b6100c061014b366004611a82565b6104bf565b6100c061015e366004611954565b610713565b61016b6107c9565b6000546001600160a01b039081169116146101a15760405162461bcd60e51b815260040161019890612151565b60405180910390fd5b6102396101ac61032d565b6040516370a0823160e01b81526001600160a01b038416906370a08231906101d8903090600401611d6b565b60206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102289190611d1b565b6001600160a01b03841691906107cd565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6102b66107c9565b6000546001600160a01b039081169116146102e35760405162461bcd60e51b815260040161019890612151565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000600260015414156103615760405162461bcd60e51b815260040161019890612207565b6002600155336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103ae5760405162461bcd60e51b815260040161019890611edc565b6001891480156103be5750600187145b80156103ca5750600185145b6103e65760405162461bcd60e51b815260040161019890611f90565b6000888860008181106103f557fe5b90506020020135905060008787600081811061040d57fe5b905060200201359050600086905060008d8d600081811061042a57fe5b905060200201602081019061043f9190611954565b905060008060006060600061045261174a565b61045e8c8e018e611b33565b95509550955095509550955061047c848484848e8e8e8e8e8e610828565b60019a5050505050505050505050600180559998505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260015414156104e25760405162461bcd60e51b815260040161019890612207565b600260015560006104f28a610ac5565b60e00151905085156105a2576040516370a0823160e01b81526000906001600160a01b038316906370a082319061052d903390600401611d6b565b60206040518083038186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d9190611d1b565b90508881111561059f5760405162461bcd60e51b8152600401610198906122cb565b97505b6105bd8a82338b6105b836889003880188611c05565b610b70565b60006106128787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050868e8e8e8e610cd6565b90506106496001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611247565b61067d6001600160a01b038b167f000000000000000000000000000000000000000000000000000000000000000083611247565b60405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df906106d0908d9085903390600090600401611e3a565b600060405180830381600087803b1580156106ea57600080fd5b505af11580156106fe573d6000803e3d6000fd5b50506001805550505050505050505050505050565b61071b6107c9565b6000546001600160a01b039081169116146107485760405162461bcd60e51b815260040161019890612151565b6001600160a01b03811661076e5760405162461bcd60e51b815260040161019890611f13565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6108238363a9059cbb60e01b84846040516024016107ec929190611dfe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261130a565b505050565b600061083384610ac5565b60e001516040516370a0823160e01b815290915087906000906001600160a01b038416906370a082319061086b908a90600401611d6b565b60206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190611d1b565b90508c156108f85760006108cf828a6113f5565b9050828111156108f15760405162461bcd60e51b8152600401610198906122cb565b9150610921565b610902828961143e565b8110156109215760405162461bcd60e51b815260040161019890611ea5565b60006109328e8e8e8a8a888b610cd6565b90506109696001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000006000611247565b61099d6001600160a01b0387167f000000000000000000000000000000000000000000000000000000000000000083611247565b60405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df906109f090899085908d90600090600401611e3a565b600060405180830381600087803b158015610a0a57600080fd5b505af1158015610a1e573d6000803e3d6000fd5b50505050610a4187858a610a3b8d8861143e90919063ffffffff16565b8f610b70565b610a766001600160a01b0388167f00000000000000000000000000000000000000000000000000000000000000006000611247565b610ab57f0000000000000000000000000000000000000000000000000000000000000000610aa48c8c61143e565b6001600160a01b038a169190611247565b5050505050505050505050505050565b610acd611778565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a7590610b19908590600401611d6b565b6101806040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611c20565b92915050565b602081015115610bf957836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b8152600401610bc69796959493929190611dbd565b600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050505b610c0e6001600160a01b038516843085611463565b604051631a4ca37b60e21b815282906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec90610c6090899085903090600401611e17565b602060405180830381600087803b158015610c7a57600080fd5b505af1158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb29190611d1b565b14610ccf5760405162461bcd60e51b8152600401610198906120d9565b5050505050565b60405163fb04e17b60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fb04e17b90610d25908990600401611d6b565b60206040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d759190611a62565b610d915760405162461bcd60e51b815260040161019890611fd7565b6000610d9c86611484565b60ff1690506000610dac86611484565b60ff1690506000610dbc8861151e565b90506000610dc98861151e565b90506000610e08611b58610e02610de485600a8a900a6115bd565b610dfc610df588600a8b900a6115bd565b8d906115bd565b906115f7565b90611639565b905086811115610e2a5760405162461bcd60e51b8152600401610198906120a2565b50506040516370a0823160e01b8152600093506001600160a01b03891692506370a082319150610e5e903090600401611d6b565b60206040518083038186803b158015610e7657600080fd5b505afa158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae9190611d1b565b905083811015610ed05760405162461bcd60e51b815260040161019890612036565b6040516370a0823160e01b81526000906001600160a01b038716906370a0823190610eff903090600401611d6b565b60206040518083038186803b158015610f1757600080fd5b505afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190611d1b565b90506000886001600160a01b031663d2c4b5986040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8c57600080fd5b505afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190611970565b9050610fdb6001600160a01b038916826000611247565b610fef6001600160a01b0389168288611247565b8a156110375760048b101580156110125750895161100e9060206113f5565b8b11155b61102e5760405162461bcd60e51b815260040161019890612302565b8560208c018b01525b6000896001600160a01b03168b6040516110519190611d4f565b6000604051808303816000865af19150503d806000811461108e576040519150601f19603f3d011682016040523d82523d6000602084013e611093565b606091505b50509050806110a6573d6000803e3d6000fd5b6040516370a0823160e01b8152878503906001600160a01b038b16906370a08231906110d6903090600401611d6b565b60206040518083038186803b1580156110ee57600080fd5b505afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611d1b565b146111435760405162461bcd60e51b815260040161019890612186565b6111c983896001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016111739190611d6b565b60206040518083038186803b15801561118b57600080fd5b505afa15801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c39190611d1b565b906113f5565b9450858510156111eb5760405162461bcd60e51b81526004016101989061206b565b876001600160a01b0316896001600160a01b03167fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8988604051611230929190612379565b60405180910390a350505050979650505050505050565b8015806112cf5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061127d9030908690600401611d7f565b60206040518083038186803b15801561129557600080fd5b505afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190611d1b565b155b6112eb5760405162461bcd60e51b81526004016101989061223e565b6108238363095ea7b360e01b84846040516024016107ec929190611dfe565b61131c826001600160a01b03166116ab565b6113385760405162461bcd60e51b815260040161019890612294565b60006060836001600160a01b0316836040516113549190611d4f565b6000604051808303816000865af19150503d8060008114611391576040519150601f19603f3d011682016040523d82523d6000602084013e611396565b606091505b5091509150816113b85760405162461bcd60e51b815260040161019890612001565b8051156113ef57808060200190518101906113d39190611a62565b6113ef5760405162461bcd60e51b8152600401610198906121bd565b50505050565b600061143783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116e7565b9392505050565b6000828201838110156114375760405162461bcd60e51b815260040161019890611f59565b6113ef846323b872dd60e01b8585856040516024016107ec93929190611d99565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611d33565b9050604d8160ff161115610b6a5760405162461bcd60e51b815260040161019890612339565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f079061156d908590600401611d6b565b60206040518083038186803b15801561158557600080fd5b505afa158015611599573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611d1b565b6000826115cc57506000610b6a565b828202828482816115d957fe5b04146114375760405162461bcd60e51b815260040161019890612110565b600061143783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611713565b6000821580611646575081155b1561165357506000610b6a565b81611388198161165f57fe5b0483111560405180604001604052806002815260200161068760f31b8152509061169c5760405162461bcd60e51b81526004016101989190611e72565b50506127109102611388010490565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906116df57508115155b949350505050565b6000818484111561170b5760405162461bcd60e51b81526004016101989190611e72565b505050900390565b600081836117345760405162461bcd60e51b81526004016101989190611e72565b50600083858161174057fe5b0495945050505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60405180610180016040528061178c6117e3565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b8051610b6a816123da565b60008083601f840112611812578182fd5b50813567ffffffffffffffff811115611829578182fd5b602083019150836020808302850101111561184357600080fd5b9250929050565b60008083601f84011261185b578182fd5b50813567ffffffffffffffff811115611872578182fd5b60208301915083602082850101111561184357600080fd5b8035610b6a816123da565b600060a082840312156118a6578081fd5b6118b060a0612387565b9050813581526020820135602082015260408201356118ce816123ef565b80604083015250606082013560608201526080820135608082015292915050565b600060208284031215611900578081fd5b61190a6020612387565b9151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610b6a57600080fd5b805164ffffffffff81168114610b6a57600080fd5b8051610b6a816123ef565b600060208284031215611965578081fd5b8135611437816123da565b600060208284031215611981578081fd5b8151611437816123da565b600080600080600080600080600060a08a8c0312156119a9578485fd5b893567ffffffffffffffff808211156119c0578687fd5b6119cc8d838e01611801565b909b50995060208c01359150808211156119e4578687fd5b6119f08d838e01611801565b909950975060408c0135915080821115611a08578687fd5b611a148d838e01611801565b909750955060608c01359150611a29826123da565b90935060808b01359080821115611a3e578384fd5b50611a4b8c828d0161184a565b915080935050809150509295985092959850929598565b600060208284031215611a73578081fd5b81518015158114611437578182fd5b6000806000806000806000806000898b03610180811215611aa1578384fd5b8a35611aac816123da565b995060208b0135611abc816123da565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff811115611aec578485fd5b611af88d828e0161184a565b90965094505060c08b0135611b0c816123da565b925060a060df1982011215611b1f578182fd5b5060e08a0190509295985092959850929598565b6000806000806000806101408789031215611b4c578384fd5b8635611b57816123da565b9550602087810135955060408801359450606088013567ffffffffffffffff80821115611b82578485fd5b818a0191508a601f830112611b95578485fd5b813581811115611ba3578586fd5b611bb5601f8201601f19168501612387565b91508082528b84828501011115611bca578586fd5b80848401858401378101909201849052509250611bea886080890161188a565b9150611bf98860a08901611895565b90509295509295509295565b600060a08284031215611c16578081fd5b6114378383611895565b6000610180808385031215611c33578182fd5b611c3c81612387565b9050611c4884846118ef565b8152611c578460208501611914565b6020820152611c698460408501611914565b6040820152611c7b8460608501611914565b6060820152611c8d8460808501611914565b6080820152611c9f8460a08501611914565b60a0820152611cb18460c08501611934565b60c0820152611cc38460e085016117f6565b60e0820152610100611cd7858286016117f6565b90820152610120611cea858583016117f6565b90820152610140611cfd858583016117f6565b90820152610160611d1085858301611949565b908201529392505050565b600060208284031215611d2c578081fd5b5051919050565b600060208284031215611d44578081fd5b8151611437816123ef565b60008251611d618184602087016123ae565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b6000602082528251806020840152611e918160408501602087016123ae565b601f01601f19169190910160400192915050565b6020808252601b908201527f494e53554646494349454e545f41544f4b454e5f42414c414e43450000000000604082015260600190565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f464c4153484c4f414e5f4d554c5449504c455f4153534554535f4e4f545f5355604082015266141413d495115160ca1b606082015260800190565b60208082526010908201526f494e56414c49445f415547555354555360801b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252818101527f494e53554646494349454e545f42414c414e43455f4245464f52455f53574150604082015260600190565b6020808252601c908201527f494e53554646494349454e545f414d4f554e545f524543454956454400000000604082015260600190565b6020808252601f908201527f4d494e5f414d4f554e545f455843454544535f4d41585f534c49505041474500604082015260600190565b6020808252601b908201527f554e45585045435445445f414d4f554e545f57495448445241574e0000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f57524f4e475f42414c414e43455f41465445525f535741500000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601b908201527f494e53554646494349454e545f414d4f554e545f544f5f535741500000000000604082015260600190565b6020808252601f908201527f46524f4d5f414d4f554e545f4f46465345545f4f55545f4f465f52414e474500604082015260600190565b6020808252601a908201527f544f4f5f4d414e595f444543494d414c535f4f4e5f544f4b454e000000000000604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156123a657600080fd5b604052919050565b60005b838110156123c95781810151838201526020016123b1565b838111156113ef5750506000910152565b6001600160a01b038116811461023957600080fd5b60ff8116811461023957600080fdfea2646970667358221220147c06809295a415e0fc8aadcb945768a30fb89bdabf8648a7de936488b4c34464736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a85760003560e01c8063715018a611610071578063715018a6146101055780638da5cb5b1461010d578063920f5c8414610115578063b4dcfc7714610135578063d3454a351461013d578063f2fde38b14610150576100a8565b8062ae3bf8146100ad5780630542975c146100c257806332e4b286146100e057806338013f02146100f55780633a829867146100fd575b600080fd5b6100c06100bb366004611954565b610163565b005b6100ca61023c565b6040516100d79190611d6b565b60405180910390f35b6100e8610260565b6040516100d79190612370565b6100ca610266565b6100ca61028a565b6100c06102ae565b6100ca61032d565b61012861012336600461198c565b61033c565b6040516100d79190611e67565b6100ca61049b565b6100c061014b366004611a82565b6104bf565b6100c061015e366004611954565b610713565b61016b6107c9565b6000546001600160a01b039081169116146101a15760405162461bcd60e51b815260040161019890612151565b60405180910390fd5b6102396101ac61032d565b6040516370a0823160e01b81526001600160a01b038416906370a08231906101d8903090600401611d6b565b60206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102289190611d1b565b6001600160a01b03841691906107cd565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6102b66107c9565b6000546001600160a01b039081169116146102e35760405162461bcd60e51b815260040161019890612151565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000600260015414156103615760405162461bcd60e51b815260040161019890612207565b6002600155336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103ae5760405162461bcd60e51b815260040161019890611edc565b6001891480156103be5750600187145b80156103ca5750600185145b6103e65760405162461bcd60e51b815260040161019890611f90565b6000888860008181106103f557fe5b90506020020135905060008787600081811061040d57fe5b905060200201359050600086905060008d8d600081811061042a57fe5b905060200201602081019061043f9190611954565b905060008060006060600061045261174a565b61045e8c8e018e611b33565b95509550955095509550955061047c848484848e8e8e8e8e8e610828565b60019a5050505050505050505050600180559998505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260015414156104e25760405162461bcd60e51b815260040161019890612207565b600260015560006104f28a610ac5565b60e00151905085156105a2576040516370a0823160e01b81526000906001600160a01b038316906370a082319061052d903390600401611d6b565b60206040518083038186803b15801561054557600080fd5b505afa158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d9190611d1b565b90508881111561059f5760405162461bcd60e51b8152600401610198906122cb565b97505b6105bd8a82338b6105b836889003880188611c05565b610b70565b60006106128787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050868e8e8e8e610cd6565b90506106496001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611247565b61067d6001600160a01b038b167f000000000000000000000000000000000000000000000000000000000000000083611247565b60405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df906106d0908d9085903390600090600401611e3a565b600060405180830381600087803b1580156106ea57600080fd5b505af11580156106fe573d6000803e3d6000fd5b50506001805550505050505050505050505050565b61071b6107c9565b6000546001600160a01b039081169116146107485760405162461bcd60e51b815260040161019890612151565b6001600160a01b03811661076e5760405162461bcd60e51b815260040161019890611f13565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6108238363a9059cbb60e01b84846040516024016107ec929190611dfe565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261130a565b505050565b600061083384610ac5565b60e001516040516370a0823160e01b815290915087906000906001600160a01b038416906370a082319061086b908a90600401611d6b565b60206040518083038186803b15801561088357600080fd5b505afa158015610897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bb9190611d1b565b90508c156108f85760006108cf828a6113f5565b9050828111156108f15760405162461bcd60e51b8152600401610198906122cb565b9150610921565b610902828961143e565b8110156109215760405162461bcd60e51b815260040161019890611ea5565b60006109328e8e8e8a8a888b610cd6565b90506109696001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000006000611247565b61099d6001600160a01b0387167f000000000000000000000000000000000000000000000000000000000000000083611247565b60405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e8eda9df906109f090899085908d90600090600401611e3a565b600060405180830381600087803b158015610a0a57600080fd5b505af1158015610a1e573d6000803e3d6000fd5b50505050610a4187858a610a3b8d8861143e90919063ffffffff16565b8f610b70565b610a766001600160a01b0388167f00000000000000000000000000000000000000000000000000000000000000006000611247565b610ab57f0000000000000000000000000000000000000000000000000000000000000000610aa48c8c61143e565b6001600160a01b038a169190611247565b5050505050505050505050505050565b610acd611778565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a7590610b19908590600401611d6b565b6101806040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611c20565b92915050565b602081015115610bf957836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b8152600401610bc69796959493929190611dbd565b600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050505b610c0e6001600160a01b038516843085611463565b604051631a4ca37b60e21b815282906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec90610c6090899085903090600401611e17565b602060405180830381600087803b158015610c7a57600080fd5b505af1158015610c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb29190611d1b565b14610ccf5760405162461bcd60e51b8152600401610198906120d9565b5050505050565b60405163fb04e17b60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fb04e17b90610d25908990600401611d6b565b60206040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d759190611a62565b610d915760405162461bcd60e51b815260040161019890611fd7565b6000610d9c86611484565b60ff1690506000610dac86611484565b60ff1690506000610dbc8861151e565b90506000610dc98861151e565b90506000610e08611b58610e02610de485600a8a900a6115bd565b610dfc610df588600a8b900a6115bd565b8d906115bd565b906115f7565b90611639565b905086811115610e2a5760405162461bcd60e51b8152600401610198906120a2565b50506040516370a0823160e01b8152600093506001600160a01b03891692506370a082319150610e5e903090600401611d6b565b60206040518083038186803b158015610e7657600080fd5b505afa158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae9190611d1b565b905083811015610ed05760405162461bcd60e51b815260040161019890612036565b6040516370a0823160e01b81526000906001600160a01b038716906370a0823190610eff903090600401611d6b565b60206040518083038186803b158015610f1757600080fd5b505afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190611d1b565b90506000886001600160a01b031663d2c4b5986040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8c57600080fd5b505afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190611970565b9050610fdb6001600160a01b038916826000611247565b610fef6001600160a01b0389168288611247565b8a156110375760048b101580156110125750895161100e9060206113f5565b8b11155b61102e5760405162461bcd60e51b815260040161019890612302565b8560208c018b01525b6000896001600160a01b03168b6040516110519190611d4f565b6000604051808303816000865af19150503d806000811461108e576040519150601f19603f3d011682016040523d82523d6000602084013e611093565b606091505b50509050806110a6573d6000803e3d6000fd5b6040516370a0823160e01b8152878503906001600160a01b038b16906370a08231906110d6903090600401611d6b565b60206040518083038186803b1580156110ee57600080fd5b505afa158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190611d1b565b146111435760405162461bcd60e51b815260040161019890612186565b6111c983896001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016111739190611d6b565b60206040518083038186803b15801561118b57600080fd5b505afa15801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c39190611d1b565b906113f5565b9450858510156111eb5760405162461bcd60e51b81526004016101989061206b565b876001600160a01b0316896001600160a01b03167fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8988604051611230929190612379565b60405180910390a350505050979650505050505050565b8015806112cf5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061127d9030908690600401611d7f565b60206040518083038186803b15801561129557600080fd5b505afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190611d1b565b155b6112eb5760405162461bcd60e51b81526004016101989061223e565b6108238363095ea7b360e01b84846040516024016107ec929190611dfe565b61131c826001600160a01b03166116ab565b6113385760405162461bcd60e51b815260040161019890612294565b60006060836001600160a01b0316836040516113549190611d4f565b6000604051808303816000865af19150503d8060008114611391576040519150601f19603f3d011682016040523d82523d6000602084013e611396565b606091505b5091509150816113b85760405162461bcd60e51b815260040161019890612001565b8051156113ef57808060200190518101906113d39190611a62565b6113ef5760405162461bcd60e51b8152600401610198906121bd565b50505050565b600061143783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116e7565b9392505050565b6000828201838110156114375760405162461bcd60e51b815260040161019890611f59565b6113ef846323b872dd60e01b8585856040516024016107ec93929190611d99565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611d33565b9050604d8160ff161115610b6a5760405162461bcd60e51b815260040161019890612339565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f079061156d908590600401611d6b565b60206040518083038186803b15801561158557600080fd5b505afa158015611599573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611d1b565b6000826115cc57506000610b6a565b828202828482816115d957fe5b04146114375760405162461bcd60e51b815260040161019890612110565b600061143783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611713565b6000821580611646575081155b1561165357506000610b6a565b81611388198161165f57fe5b0483111560405180604001604052806002815260200161068760f31b8152509061169c5760405162461bcd60e51b81526004016101989190611e72565b50506127109102611388010490565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906116df57508115155b949350505050565b6000818484111561170b5760405162461bcd60e51b81526004016101989190611e72565b505050900390565b600081836117345760405162461bcd60e51b81526004016101989190611e72565b50600083858161174057fe5b0495945050505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60405180610180016040528061178c6117e3565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b8051610b6a816123da565b60008083601f840112611812578182fd5b50813567ffffffffffffffff811115611829578182fd5b602083019150836020808302850101111561184357600080fd5b9250929050565b60008083601f84011261185b578182fd5b50813567ffffffffffffffff811115611872578182fd5b60208301915083602082850101111561184357600080fd5b8035610b6a816123da565b600060a082840312156118a6578081fd5b6118b060a0612387565b9050813581526020820135602082015260408201356118ce816123ef565b80604083015250606082013560608201526080820135608082015292915050565b600060208284031215611900578081fd5b61190a6020612387565b9151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610b6a57600080fd5b805164ffffffffff81168114610b6a57600080fd5b8051610b6a816123ef565b600060208284031215611965578081fd5b8135611437816123da565b600060208284031215611981578081fd5b8151611437816123da565b600080600080600080600080600060a08a8c0312156119a9578485fd5b893567ffffffffffffffff808211156119c0578687fd5b6119cc8d838e01611801565b909b50995060208c01359150808211156119e4578687fd5b6119f08d838e01611801565b909950975060408c0135915080821115611a08578687fd5b611a148d838e01611801565b909750955060608c01359150611a29826123da565b90935060808b01359080821115611a3e578384fd5b50611a4b8c828d0161184a565b915080935050809150509295985092959850929598565b600060208284031215611a73578081fd5b81518015158114611437578182fd5b6000806000806000806000806000898b03610180811215611aa1578384fd5b8a35611aac816123da565b995060208b0135611abc816123da565b985060408b0135975060608b0135965060808b0135955060a08b013567ffffffffffffffff811115611aec578485fd5b611af88d828e0161184a565b90965094505060c08b0135611b0c816123da565b925060a060df1982011215611b1f578182fd5b5060e08a0190509295985092959850929598565b6000806000806000806101408789031215611b4c578384fd5b8635611b57816123da565b9550602087810135955060408801359450606088013567ffffffffffffffff80821115611b82578485fd5b818a0191508a601f830112611b95578485fd5b813581811115611ba3578586fd5b611bb5601f8201601f19168501612387565b91508082528b84828501011115611bca578586fd5b80848401858401378101909201849052509250611bea886080890161188a565b9150611bf98860a08901611895565b90509295509295509295565b600060a08284031215611c16578081fd5b6114378383611895565b6000610180808385031215611c33578182fd5b611c3c81612387565b9050611c4884846118ef565b8152611c578460208501611914565b6020820152611c698460408501611914565b6040820152611c7b8460608501611914565b6060820152611c8d8460808501611914565b6080820152611c9f8460a08501611914565b60a0820152611cb18460c08501611934565b60c0820152611cc38460e085016117f6565b60e0820152610100611cd7858286016117f6565b90820152610120611cea858583016117f6565b90820152610140611cfd858583016117f6565b90820152610160611d1085858301611949565b908201529392505050565b600060208284031215611d2c578081fd5b5051919050565b600060208284031215611d44578081fd5b8151611437816123ef565b60008251611d618184602087016123ae565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b6000602082528251806020840152611e918160408501602087016123ae565b601f01601f19169190910160400192915050565b6020808252601b908201527f494e53554646494349454e545f41544f4b454e5f42414c414e43450000000000604082015260600190565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f464c4153484c4f414e5f4d554c5449504c455f4153534554535f4e4f545f5355604082015266141413d495115160ca1b606082015260800190565b60208082526010908201526f494e56414c49445f415547555354555360801b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252818101527f494e53554646494349454e545f42414c414e43455f4245464f52455f53574150604082015260600190565b6020808252601c908201527f494e53554646494349454e545f414d4f554e545f524543454956454400000000604082015260600190565b6020808252601f908201527f4d494e5f414d4f554e545f455843454544535f4d41585f534c49505041474500604082015260600190565b6020808252601b908201527f554e45585045435445445f414d4f554e545f57495448445241574e0000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526018908201527f57524f4e475f42414c414e43455f41465445525f535741500000000000000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b6020808252601b908201527f494e53554646494349454e545f414d4f554e545f544f5f535741500000000000604082015260600190565b6020808252601f908201527f46524f4d5f414d4f554e545f4f46465345545f4f55545f4f465f52414e474500604082015260600190565b6020808252601a908201527f544f4f5f4d414e595f444543494d414c535f4f4e5f544f4b454e000000000000604082015260600190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156123a657600080fd5b604052919050565b60005b838110156123c95781810151838201526020016123b1565b838111156113ef5750506000910152565b6001600160a01b038116811461023957600080fd5b60ff8116811461023957600080fdfea2646970667358221220147c06809295a415e0fc8aadcb945768a30fb89bdabf8648a7de936488b4c34464736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/PercentageMath.json b/eth_defi/abi/aave_v2/PercentageMath.json new file mode 100644 index 00000000..3383e21c --- /dev/null +++ b/eth_defi/abi/aave_v2/PercentageMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PercentageMath", + "sourceName": "contracts/protocol/libraries/math/PercentageMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e98aaa475cd62e3ddc619bb45bcd7a88ab2001c146400b5920464ccb7af21c5f64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e98aaa475cd62e3ddc619bb45bcd7a88ab2001c146400b5920464ccb7af21c5f64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/PriceOracle.json b/eth_defi/abi/aave_v2/PriceOracle.json new file mode 100644 index 00000000..1b4a2271 --- /dev/null +++ b/eth_defi/abi/aave_v2/PriceOracle.json @@ -0,0 +1,118 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "PriceOracle", + "sourceName": "contracts/mocks/oracle/PriceOracle.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "AssetPriceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "EthPriceUpdated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + } + ], + "name": "getAssetPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getEthUsdPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_asset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_price", + "type": "uint256" + } + ], + "name": "setAssetPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_price", + "type": "uint256" + } + ], + "name": "setEthUsdPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506101d0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806351323f7214610051578063a0a8045e1461007f578063b3596f0714610099578063b951883a146100bf575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b0381351690602001356100dc565b005b610087610137565b60408051918252519081900360200190f35b610087600480360360208110156100af57600080fd5b50356001600160a01b031661013d565b61007d600480360360208110156100d557600080fd5b5035610158565b6001600160a01b03821660008181526020818152604091829020849055815192835282018390524282820152517fce6e0b57367bae95ca7198e1172f653ea64a645c16ab586b4cefa9237bfc2d929181900360600190a15050565b60015490565b6001600160a01b031660009081526020819052604090205490565b60018190556040805182815242602082015281517fb4f35977939fa8b5ffe552d517a8ff5223046b1fdd3ee0068ae38d1e2b8d0016929181900390910190a15056fea26469706673582212201205be2202a7d039b951a92721e5484271318d14b8605f92cebf1a3998eb292a64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806351323f7214610051578063a0a8045e1461007f578063b3596f0714610099578063b951883a146100bf575b600080fd5b61007d6004803603604081101561006757600080fd5b506001600160a01b0381351690602001356100dc565b005b610087610137565b60408051918252519081900360200190f35b610087600480360360208110156100af57600080fd5b50356001600160a01b031661013d565b61007d600480360360208110156100d557600080fd5b5035610158565b6001600160a01b03821660008181526020818152604091829020849055815192835282018390524282820152517fce6e0b57367bae95ca7198e1172f653ea64a645c16ab586b4cefa9237bfc2d929181900360600190a15050565b60015490565b6001600160a01b031660009081526020819052604090205490565b60018190556040805182815242602082015281517fb4f35977939fa8b5ffe552d517a8ff5223046b1fdd3ee0068ae38d1e2b8d0016929181900390910190a15056fea26469706673582212201205be2202a7d039b951a92721e5484271318d14b8605f92cebf1a3998eb292a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/Proxy.json b/eth_defi/abi/aave_v2/Proxy.json new file mode 100644 index 00000000..50a19d68 --- /dev/null +++ b/eth_defi/abi/aave_v2/Proxy.json @@ -0,0 +1,15 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Proxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/Proxy.sol", + "abi": [ + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ReentrancyGuard.json b/eth_defi/abi/aave_v2/ReentrancyGuard.json new file mode 100644 index 00000000..aded1471 --- /dev/null +++ b/eth_defi/abi/aave_v2/ReentrancyGuard.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReentrancyGuard", + "sourceName": "contracts/dependencies/openzeppelin/contracts/ReentrancyGuard.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ReserveConfiguration.json b/eth_defi/abi/aave_v2/ReserveConfiguration.json new file mode 100644 index 00000000..06452957 --- /dev/null +++ b/eth_defi/abi/aave_v2/ReserveConfiguration.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReserveConfiguration", + "sourceName": "contracts/protocol/libraries/configuration/ReserveConfiguration.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122002f45f9ffa6871f35159c4aa08c9edd3e2de74ddb04088fcf4cea0d6123823ce64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122002f45f9ffa6871f35159c4aa08c9edd3e2de74ddb04088fcf4cea0d6123823ce64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ReserveLogic.json b/eth_defi/abi/aave_v2/ReserveLogic.json new file mode 100644 index 00000000..3f2fef22 --- /dev/null +++ b/eth_defi/abi/aave_v2/ReserveLogic.json @@ -0,0 +1,54 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReserveLogic", + "sourceName": "contracts/protocol/libraries/logic/ReserveLogic.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidityRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableBorrowRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "liquidityIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "variableBorrowIndex", + "type": "uint256" + } + ], + "name": "ReserveDataUpdated", + "type": "event" + } + ], + "bytecode": "0x61023b610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632b33897c1461003a575b600080fd5b81801561004657600080fd5b5061008b600480360360a081101561005d57600080fd5b508035906001600160a01b03602082013581169160408101358216916060820135811691608001351661008d565b005b6004850154604080518082019091526002815261199960f11b6020820152906001600160a01b03161561013e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101035781810151838201526020016100eb565b50505050905090810190601f1680156101305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506101476101f5565b6001860180546fffffffffffffffffffffffffffffffff19166001600160801b039290921691909117905561017a6101f5565b6001860180546001600160801b03928316600160801b0292169190911790556004850180546001600160a01b039586166001600160a01b031991821617909155600586018054948616948216949094179093556006850180549285169284169290921790915560079093018054939092169216919091179055565b6b033b2e3c9fd0803ce80000009056fea264697066735822122071ac2399808ad0494fb9056f6565a5b80184b39697f717d78e82006d55bc1ccd64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80632b33897c1461003a575b600080fd5b81801561004657600080fd5b5061008b600480360360a081101561005d57600080fd5b508035906001600160a01b03602082013581169160408101358216916060820135811691608001351661008d565b005b6004850154604080518082019091526002815261199960f11b6020820152906001600160a01b03161561013e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156101035781810151838201526020016100eb565b50505050905090810190601f1680156101305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506101476101f5565b6001860180546fffffffffffffffffffffffffffffffff19166001600160801b039290921691909117905561017a6101f5565b6001860180546001600160801b03928316600160801b0292169190911790556004850180546001600160a01b039586166001600160a01b031991821617909155600586018054948616948216949094179093556006850180549285169284169290921790915560079093018054939092169216919091179055565b6b033b2e3c9fd0803ce80000009056fea264697066735822122071ac2399808ad0494fb9056f6565a5b80184b39697f717d78e82006d55bc1ccd64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/SafeERC20.json b/eth_defi/abi/aave_v2/SafeERC20.json new file mode 100644 index 00000000..bdb76eb4 --- /dev/null +++ b/eth_defi/abi/aave_v2/SafeERC20.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "contracts/dependencies/openzeppelin/contracts/SafeERC20.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bfe92e7c7203651c1598bd5e0bb7842604674a3d8b982cbad2401a64dbc7105a64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bfe92e7c7203651c1598bd5e0bb7842604674a3d8b982cbad2401a64dbc7105a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/SafeMath.json b/eth_defi/abi/aave_v2/SafeMath.json new file mode 100644 index 00000000..358e6f77 --- /dev/null +++ b/eth_defi/abi/aave_v2/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "contracts/dependencies/openzeppelin/contracts/SafeMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1bd78d2d20e95b81481b7c60e9fa29307a20e9f12fbea3b3158cdacb3361fef64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1bd78d2d20e95b81481b7c60e9fa29307a20e9f12fbea3b3158cdacb3361fef64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/SelfdestructTransfer.json b/eth_defi/abi/aave_v2/SelfdestructTransfer.json new file mode 100644 index 00000000..2373ddf1 --- /dev/null +++ b/eth_defi/abi/aave_v2/SelfdestructTransfer.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SelfdestructTransfer", + "sourceName": "contracts/mocks/attacks/SefldestructTransfer.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "to", + "type": "address" + } + ], + "name": "destroyAndTransfer", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600f57600080fd5b5060888061001e6000396000f3fe608060405260043610601c5760003560e01c8063785e07b3146021575b600080fd5b604460048036036020811015603557600080fd5b50356001600160a01b03166046565b005b806001600160a01b0316fffea26469706673582212200f1a8c6116e171c76155f63f6cf1ba888768ce44904e7a9d43323b0d54cc348564736f6c634300060c0033", + "deployedBytecode": "0x608060405260043610601c5760003560e01c8063785e07b3146021575b600080fd5b604460048036036020811015603557600080fd5b50356001600160a01b03166046565b005b806001600160a01b0316fffea26469706673582212200f1a8c6116e171c76155f63f6cf1ba888768ce44904e7a9d43323b0d54cc348564736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/StableAndVariableTokensHelper.json b/eth_defi/abi/aave_v2/StableAndVariableTokensHelper.json new file mode 100644 index 00000000..1d74cd4d --- /dev/null +++ b/eth_defi/abi/aave_v2/StableAndVariableTokensHelper.json @@ -0,0 +1,157 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StableAndVariableTokensHelper", + "sourceName": "contracts/deployments/StableAndVariableTokensHelper.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "_pool", + "type": "address" + }, + { + "internalType": "address", + "name": "_addressesProvider", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "stableToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "variableToken", + "type": "address" + } + ], + "name": "deployedContracts", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + }, + { + "internalType": "string[]", + "name": "symbols", + "type": "string[]" + } + ], + "name": "initDeployment", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "rates", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "oracle", + "type": "address" + } + ], + "name": "setOracleBorrowRates", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oracle", + "type": "address" + }, + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "setOracleOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516141c43803806141c483398101604081905261002f916100b8565b60006100396100b4565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055610109565b3390565b600080604083850312156100ca578182fd5b82516100d5816100f1565b60208401519092506100e6816100f1565b809150509250929050565b6001600160a01b038116811461010657600080fd5b50565b6140ac806101186000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806354fe1c9414610067578063563b1cb31461007c578063715018a61461008f5780638da5cb5b14610097578063c2d30321146100b5578063f2fde38b146100c8575b600080fd5b61007a610075366004610680565b6100db565b005b61007a61008a366004610648565b610203565b61007a610361565b61009f6103e0565b6040516100ac919061076a565b60405180910390f35b61007a6100c33660046106e9565b6103ef565b61007a6100d6366004610609565b6104ec565b6100e36105a2565b6000546001600160a01b039081169116146101195760405162461bcd60e51b8152600401610110906107f7565b60405180910390fd5b8281146101385760405162461bcd60e51b8152600401610110906108bf565b6001546001600160a01b03166101605760405162461bcd60e51b81526004016101109061082c565b60005b838110156101fc577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea4604051610198906105a6565b604051809103906000f0801580156101b4573d6000803e3d6000fd5b506040516101c1906105b3565b604051809103906000f0801580156101dd573d6000803e3d6000fd5b506040516101ec92919061077e565b60405180910390a1600101610163565b5050505050565b61020b6105a2565b6000546001600160a01b039081169116146102385760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b03811661025e5760405162461bcd60e51b815260040161011090610890565b306001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a157600080fd5b505afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d9919061062c565b6001600160a01b0316146102ff5760405162461bcd60e51b815260040161011090610863565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b9061032b90849060040161076a565b600060405180830381600087803b15801561034557600080fd5b505af1158015610359573d6000803e3d6000fd5b505050505050565b6103696105a2565b6000546001600160a01b039081169116146103965760405162461bcd60e51b8152600401610110906107f7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6103f76105a2565b6000546001600160a01b039081169116146104245760405162461bcd60e51b8152600401610110906107f7565b8382146104435760405162461bcd60e51b8152600401610110906108bf565b60005b8481101561035957816001600160a01b03166372eb293d87878481811061046957fe5b905060200201602081019061047e9190610609565b86868581811061048a57fe5b905060200201356040518363ffffffff1660e01b81526004016104ae929190610798565b600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b5050600190920191506104469050565b6104f46105a2565b6000546001600160a01b039081169116146105215760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b0381166105475760405162461bcd60e51b8152600401610110906107b1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b611e648061090883390190565b61190b8061276c83390190565b60008083601f8401126105d1578182fd5b50813567ffffffffffffffff8111156105e8578182fd5b602083019150836020808302850101111561060257600080fd5b9250929050565b60006020828403121561061a578081fd5b8135610625816108ef565b9392505050565b60006020828403121561063d578081fd5b8151610625816108ef565b6000806040838503121561065a578081fd5b8235610665816108ef565b91506020830135610675816108ef565b809150509250929050565b60008060008060408587031215610695578182fd5b843567ffffffffffffffff808211156106ac578384fd5b6106b8888389016105c0565b909650945060208701359150808211156106d0578384fd5b506106dd878288016105c0565b95989497509550505050565b600080600080600060608688031215610700578081fd5b853567ffffffffffffffff80821115610717578283fd5b61072389838a016105c0565b9097509550602088013591508082111561073b578283fd5b50610748888289016105c0565b909450925050604086013561075c816108ef565b809150509295509295909350565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f506f6f6c2063616e206e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252601390820152723432b63832b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252601590820152746f776e65722063616e206e6f74206265207a65726f60581b604082015260600190565b602080825260169082015275082e4e4c2f2e640dcdee840e6c2daca40d8cadccee8d60531b604082015260600190565b6001600160a01b038116811461090457600080fd5b5056fe608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220e0961e63d9a40d0d1b8e01774bf1cb95f96ea64244404df990914ff37e6fcf1664736f6c634300060c0033608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220837a34e24dc1d0b89f2e51c8ddec7d4278655d0880a5271181da807edd9c3bcf64736f6c634300060c0033a26469706673582212202467393cf95f401177e158dd839a6397c0d5436ffde48ea8c7a4d3ab6bf403ee64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806354fe1c9414610067578063563b1cb31461007c578063715018a61461008f5780638da5cb5b14610097578063c2d30321146100b5578063f2fde38b146100c8575b600080fd5b61007a610075366004610680565b6100db565b005b61007a61008a366004610648565b610203565b61007a610361565b61009f6103e0565b6040516100ac919061076a565b60405180910390f35b61007a6100c33660046106e9565b6103ef565b61007a6100d6366004610609565b6104ec565b6100e36105a2565b6000546001600160a01b039081169116146101195760405162461bcd60e51b8152600401610110906107f7565b60405180910390fd5b8281146101385760405162461bcd60e51b8152600401610110906108bf565b6001546001600160a01b03166101605760405162461bcd60e51b81526004016101109061082c565b60005b838110156101fc577f1c1768aab1796270c7034dc781c2951065e6afb7a946269746521002443b8ea4604051610198906105a6565b604051809103906000f0801580156101b4573d6000803e3d6000fd5b506040516101c1906105b3565b604051809103906000f0801580156101dd573d6000803e3d6000fd5b506040516101ec92919061077e565b60405180910390a1600101610163565b5050505050565b61020b6105a2565b6000546001600160a01b039081169116146102385760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b03811661025e5760405162461bcd60e51b815260040161011090610890565b306001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a157600080fd5b505afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d9919061062c565b6001600160a01b0316146102ff5760405162461bcd60e51b815260040161011090610863565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b9061032b90849060040161076a565b600060405180830381600087803b15801561034557600080fd5b505af1158015610359573d6000803e3d6000fd5b505050505050565b6103696105a2565b6000546001600160a01b039081169116146103965760405162461bcd60e51b8152600401610110906107f7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6103f76105a2565b6000546001600160a01b039081169116146104245760405162461bcd60e51b8152600401610110906107f7565b8382146104435760405162461bcd60e51b8152600401610110906108bf565b60005b8481101561035957816001600160a01b03166372eb293d87878481811061046957fe5b905060200201602081019061047e9190610609565b86868581811061048a57fe5b905060200201356040518363ffffffff1660e01b81526004016104ae929190610798565b600060405180830381600087803b1580156104c857600080fd5b505af11580156104dc573d6000803e3d6000fd5b5050600190920191506104469050565b6104f46105a2565b6000546001600160a01b039081169116146105215760405162461bcd60e51b8152600401610110906107f7565b6001600160a01b0381166105475760405162461bcd60e51b8152600401610110906107b1565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b611e648061090883390190565b61190b8061276c83390190565b60008083601f8401126105d1578182fd5b50813567ffffffffffffffff8111156105e8578182fd5b602083019150836020808302850101111561060257600080fd5b9250929050565b60006020828403121561061a578081fd5b8135610625816108ef565b9392505050565b60006020828403121561063d578081fd5b8151610625816108ef565b6000806040838503121561065a578081fd5b8235610665816108ef565b91506020830135610675816108ef565b809150509250929050565b60008060008060408587031215610695578182fd5b843567ffffffffffffffff808211156106ac578384fd5b6106b8888389016105c0565b909650945060208701359150808211156106d0578384fd5b506106dd878288016105c0565b95989497509550505050565b600080600080600060608688031215610700578081fd5b853567ffffffffffffffff80821115610717578283fd5b61072389838a016105c0565b9097509550602088013591508082111561073b578283fd5b50610748888289016105c0565b909450925050604086013561075c816108ef565b809150509295509295909350565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f506f6f6c2063616e206e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252601390820152723432b63832b91034b9903737ba1037bbb732b960691b604082015260600190565b6020808252601590820152746f776e65722063616e206e6f74206265207a65726f60581b604082015260600190565b602080825260169082015275082e4e4c2f2e640dcdee840e6c2daca40d8cadccee8d60531b604082015260600190565b6001600160a01b038116811461090457600080fd5b5056fe608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220e0961e63d9a40d0d1b8e01774bf1cb95f96ea64244404df990914ff37e6fcf1664736f6c634300060c0033608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220837a34e24dc1d0b89f2e51c8ddec7d4278655d0880a5271181da807edd9c3bcf64736f6c634300060c0033a26469706673582212202467393cf95f401177e158dd839a6397c0d5436ffde48ea8c7a4d3ab6bf403ee64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/StableDebtToken.json b/eth_defi/abi/aave_v2/StableDebtToken.json new file mode 100644 index 00000000..e0e384b6 --- /dev/null +++ b/eth_defi/abi/aave_v2/StableDebtToken.json @@ -0,0 +1,777 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StableDebtToken", + "sourceName": "contracts/protocol/tokenization/StableDebtToken.sol", + "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": "fromUser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowAllowanceDelegated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "avgStableRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalSupply", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "currentBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "balanceIncrease", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "avgStableRate", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalSupply", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "DEBT_TOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveDelegation", + "outputs": [], + "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": "address", + "name": "fromUser", + "type": "address" + }, + { + "internalType": "address", + "name": "toUser", + "type": "address" + } + ], + "name": "borrowAllowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAverageStableRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupplyData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalSupplyAndAvgRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalSupplyLastUpdated", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserLastUpdated", + "outputs": [ + { + "internalType": "uint40", + "name": "", + "type": "uint40" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserStableRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rate", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "principalBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b611d2080620001446000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220e0961e63d9a40d0d1b8e01774bf1cb95f96ea64244404df990914ff37e6fcf1664736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806395d89b41116100f9578063c04a8a1011610097578063dd62ed3e11610071578063dd62ed3e146106ab578063e7484890146106d9578063e78c9b3b146106e1578063f731e9be14610707576101a9565b8063c04a8a10146104b0578063c222ec8a146104dc578063c634dfaa14610685576101a9565b8063a9059cbb116100d3578063a9059cbb14610438578063b16a19de14610464578063b3f1c93d1461046c578063b9a7b622146104a8576101a9565b806395d89b41146104025780639dc29fac1461040a578063a457c2d7146102d9576101a9565b80636bd76d241161016657806375d264131161014057806375d264131461037d578063797743381461038557806379ce6b8c146103ba57806390f6fcf2146103fa576101a9565b80636bd76d241461030557806370a08231146103335780637535d24614610359576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb57806339509351146102d9575b600080fd5b6101b6610728565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356107be565b604080519115158252519081900360200190f35b610273610806565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610818565b6102c3610860565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610869565b6102736004803603604081101561031b57600080fd5b506001600160a01b03813581169160200135166108b8565b6102736004803603602081101561034957600080fd5b50356001600160a01b03166108e5565b61036161095f565b604080516001600160a01b039092168252519081900360200190f35b610361610977565b61038d610981565b6040805194855260208501939093528383019190915264ffffffffff166060830152519081900360800190f35b6103e0600480360360208110156103d057600080fd5b50356001600160a01b03166109b7565b6040805164ffffffffff9092168252519081900360200190f35b6102736109d9565b6101b66109df565b6104366004803603604081101561042057600080fd5b506001600160a01b038135169060200135610a40565b005b6102576004803603604081101561044e57600080fd5b506001600160a01b038135169060200135610818565b610361610da6565b6102576004803603608081101561048257600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610db5565b61027361110d565b610436600480360360408110156104c657600080fd5b506001600160a01b038135169060200135611112565b610436600480360360e08110156104f257600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a08101608082013564010000000081111561053857600080fd5b82018360208201111561054a57600080fd5b8035906020019184600183028401116401000000008311171561056c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105bf57600080fd5b8201836020820111156105d157600080fd5b803590602001918460018302840111640100000000831117156105f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561064657600080fd5b82018360208201111561065857600080fd5b8035906020019184600183028401116401000000008311171561067a57600080fd5b5090925090506111ae565b6102736004803603602081101561069b57600080fd5b50356001600160a01b0316611412565b610273600480360360408110156106c157600080fd5b506001600160a01b0381358116916020013516610869565b6103e061141d565b610273600480360360208110156106f757600080fd5b50356001600160a01b031661142a565b61070f611445565b6040805192835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b820191906000526020600020905b81548152906001019060200180831161079757829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6000610813603b5461145e565b905090565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108f1836114a6565b6001600160a01b0384166000908152603d60205260409020549091508161091d5760009250505061095a565b6001600160a01b0384166000908152603c602052604081205461094890839064ffffffffff166114c1565b905061095483826114d5565b93505050505b919050565b603e546501000000000090046001600160a01b031690565b6000610813611593565b6000806000806000603b5490506109966115a2565b61099f8261145e565b603e54919790965091945064ffffffffff1692509050565b6001600160a01b03166000908152603c602052604090205464ffffffffff1690565b603b5490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107b45780601f10610789576101008083540402835291602001916107b4565b610a4861095f565b6001600160a01b0316610a596115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610b075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610acc578181015183820152602001610ab4565b50505050905090810190601f168015610af95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080610b14846115ac565b92509250506000610b23610806565b6001600160a01b0386166000908152603d6020526040812054919250908190868411610b58576000603b819055600255610bda565b610b628488611605565b600281905591506000610b80610b7786611647565b603b54906114d5565b90506000610b97610b908a611647565b84906114d5565b9050818110610bb35760006002819055603b8190559450610bd7565b610bcf610bbf85611647565b610bc98484611605565b906116c5565b603b81905594505b50505b85871415610c18576001600160a01b0388166000908152603d60209081526040808320839055603c9091529020805464ffffffffff19169055610c46565b6001600160a01b0388166000908152603c60205260409020805464ffffffffff19164264ffffffffff161790555b603e805464ffffffffff19164264ffffffffff1617905586851115610ce6576000610c718689611605565b9050610c7e8982876117cc565b6040805182815260208101899052808201889052606081018490526080810186905260a0810185905290516001600160a01b038b169182917fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f9181900360c00190a350610d5b565b6000610cf28887611605565b9050610cff898287611891565b6040805182815260208101899052808201889052606081018690526080810185905290516001600160a01b038b16917f44bd20a79e993bdcc7cbedf54a3b4d19fb78490124b6b90d04fe3242eea579e8919081900360a00190a2505b6040805188815290516000916001600160a01b038b16917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050505050505050565b603f546001600160a01b031690565b6000610dbf61095f565b6001600160a01b0316610dd06115a8565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610e415760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50610e4a611bd9565b846001600160a01b0316866001600160a01b031614610e6e57610e6e8587866118d3565b600080610e7a876115ac565b9250925050610e87610806565b808452603b546080850152610e9c908761199b565b60028190556020840152610eaf86611647565b6040840152610f0d610ec9610ec4848961199b565b611647565b6040850151610bc990610edc90896114d5565b610f07610ee887611647565b6001600160a01b038d166000908152603d6020526040902054906114d5565b9061199b565b60608401819052604080518082019091526002815261373960f01b6020820152906fffffffffffffffffffffffffffffffff1015610f8c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060608301516001600160a01b0388166000908152603d6020908152604080832093909355603c8152919020805464ffffffffff421664ffffffffff199182168117909255603e8054909116909117905583015161102290610fed90611647565b610bc96110078660400151896114d590919063ffffffff16565b610f076110178860000151611647565b6080890151906114d5565b603b81905560808401526110418761103a888461199b565b85516117cc565b6040805187815290516001600160a01b038916916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3866001600160a01b0316886001600160a01b03167fc16f4e4ca34d790de4c656c72fd015c667d688f20be64eea360618545c4c530f888585886060015189608001518a6020015160405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a350159695505050505050565b600181565b80603a600061111f6115a8565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120919091556111576115a8565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611189610da6565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b60006111b86119f5565b60075490915060ff16806111cf57506111cf6119fa565b806111db575060065481115b6112165760405162461bcd60e51b815260040180806020018281038252602e815260200180611cbd602e913960400191505060405180910390fd5b60075460ff16158015611236576007805460ff1916600117905560068290555b61123f86611a00565b61124885611a17565b61125187611a2a565b603e805465010000000000600160c81b031916650100000000006001600160a01b038d811691820292909217909255603f80546001600160a01b03199081168d841690811790925560408054909116928c169283178155805192835260ff8b1660208085019190915260a09184018281528b51928501929092528a5192937f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e9390916060840191608085019160c08601918a019080838360005b8381101561132f578181015183820152602001611317565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b8381101561138f578181015183820152602001611377565b50505050905090810190601f1680156113bc5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015611406576007805460ff191690555b50505050505050505050565b60006108df826114a6565b603e5464ffffffffff1690565b6001600160a01b03166000908152603d602052604090205490565b603b5460009081906114568161145e565b925090509091565b6000806114696115a2565b90508061147a57600091505061095a565b603e5460009061149290859064ffffffffff166114c1565b905061149e82826114d5565b949350505050565b6001600160a01b031660009081526020819052604090205490565b60006114ce838342611a40565b9392505050565b60008215806114e2575081155b156114ef575060006108df565b816b019d971e4fe8401e74000000198161150557fe5b0483111560405180604001604052806002815260200161068760f31b815250906115705760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6040546001600160a01b031690565b60025490565b3390565b6000806000806115bb856114a6565b9050806115d3576000806000935093509350506115fe565b60006115e8826115e2886108e5565b90611605565b9050816115f5818361199b565b90955093509150505b9193909250565b60006114ce83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b16565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906116be5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5092915050565b604080518082019091526002815261035360f41b60208201526000908261172d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156117a95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b5082816b033b2e3c9fd0803ce8000000860201816117c357fe5b04949350505050565b6001600160a01b0383166000908152602081905260409020546117ef818461199b565b6001600160a01b0380861660009081526020819052604090819020929092559054161561188b576040805481516318c39f1760e11b81526001600160a01b0387811660048301526024820186905260448201859052925192909116916331873e2e9160648082019260009290919082900301818387803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050505b50505050565b6001600160a01b038316600090815260208181526040918290205482518084019093526002835261038360f41b91830191909152906117ef9082908590611b16565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a8352848120918716815291529182205461191c918490611b16565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1611974610da6565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b6000828201838110156114ce576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600190565b303b1590565b8051611a13906003906020840190611c08565b5050565b8051611a13906004906020840190611c08565b6005805460ff191660ff92909216919091179055565b600080611a548364ffffffffff8616611605565b905080611a6b57611a63611b70565b9150506114ce565b6000198101600060028311611a81576000611a86565b600283035b90506301e1338087046000611a9b82806114d5565b90506000611aa982846114d5565b905060006002611ac384611abd8a8a611b80565b90611b80565b81611aca57fe5b04905060006006611ae184611abd89818d8d611b80565b81611ae857fe5b049050611b0681610f078481611afe8a8e611b80565b610f07611b70565b9c9b505050505050505050505050565b60008184841115611b685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610acc578181015183820152602001610ab4565b505050900390565b6b033b2e3c9fd0803ce800000090565b600082611b8f575060006108df565b82820282848281611b9c57fe5b04146114ce5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c9c6021913960400191505060405180910390fd5b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4957805160ff1916838001178555611c76565b82800160010185558215611c76579182015b82811115611c76578251825591602001919060010190611c5b565b50611c82929150611c86565b5090565b5b80821115611c825760008155600101611c8756fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220e0961e63d9a40d0d1b8e01774bf1cb95f96ea64244404df990914ff37e6fcf1664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/StringLib.json b/eth_defi/abi/aave_v2/StringLib.json new file mode 100644 index 00000000..16fdbe78 --- /dev/null +++ b/eth_defi/abi/aave_v2/StringLib.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StringLib", + "sourceName": "contracts/deployments/StringLib.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c5822176f3f63f512660d4280615ce0cef64449611d652a530d7dd4a7b8658864736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c5822176f3f63f512660d4280615ce0cef64449611d652a530d7dd4a7b8658864736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UiIncentiveDataProviderV2.json b/eth_defi/abi/aave_v2/UiIncentiveDataProviderV2.json new file mode 100644 index 00000000..d22fc234 --- /dev/null +++ b/eth_defi/abi/aave_v2/UiIncentiveDataProviderV2.json @@ -0,0 +1,650 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UiIncentiveDataProviderV2", + "sourceName": "contracts/misc/UiIncentiveDataProviderV2.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getFullReservesIncentiveData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "tokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV2.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506127da806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634763753614610046578063799bdcf514610070578063976fafc514610090575b600080fd5b610059610054366004612333565b6100b0565b60405161006792919061270f565b60405180910390f35b61008361007e366004612333565b6100d1565b604051610067919061273d565b6100a361009e366004612317565b6100e6565b60405161006791906126fc565b6060806100bc846100ed565b6100c6858561151f565b915091509250929050565b60606100dd838361151f565b90505b92915050565b60606100e0825b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561012a57600080fd5b505afa15801561013e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101629190612249565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561019f57600080fd5b505afa1580156101b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101db919081019061226c565b90506060815167ffffffffffffffff811180156101f757600080fd5b5060405190808252806020026020018201604052801561023157816020015b61021e612062565b8152602001906001900390816102165790505b50905060005b825181101561151657610248612062565b82828151811061025457fe5b6020026020010151905083828151811061026a57fe5b60209081029190910101516001600160a01b031681526102886120a4565b856001600160a01b03166335ea6a758685815181106102a357fe5b60200260200101516040518263ffffffff1660e01b81526004016102c791906126ce565b6101806040518083038186803b1580156102e057600080fd5b505afa1580156102f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610318919061236b565b90508060e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561035757600080fd5b505afa925050508015610387575060408051601f3d908101601f1916820190925261038491810190612249565b60015b6103c1573d8080156103b5576040519150601f19603f3d011682016040523d82523d6000602084013e6103ba565b606091505b5050610912565b6001600160a01b03811615610910576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612249565b60e0840151604051631652e7b760e01b81529192506001600160a01b03841691631652e7b791610475916004016126ce565b60606040518083038186803b15801561048d57600080fd5b505afa9250505080156104bd575060408051601f3d908101601f191682019092526104ba918101906124c0565b60015b610751573d8080156104eb576040519150601f19603f3d011682016040523d82523d6000602084013e6104f0565b606091505b506000806000856001600160a01b031663f11b81888860e001516040518263ffffffff1660e01b815260040161052691906126ce565b60606040518083038186803b15801561053e57600080fd5b505afa158015610552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105769190612466565b92506001600160801b031692506001600160801b03169250604051806101200160405280848152602001838152602001828152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e557600080fd5b505afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d91906124a8565b81526020018860e001516001600160a01b03168152602001866001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561068c57600080fd5b505afa1580156106a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c491906124ed565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d91906124ed565b60ff16905260208901525061090e92505050565b604051806101200160405280838152602001828152602001848152602001866001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107a857600080fd5b505afa1580156107bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e091906124a8565b81526020018760e001516001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b03168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561084f57600080fd5b505afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088791906124ed565b60ff168152602001866001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c857600080fd5b505afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906124ed565b60ff16905260208801525050505b505b505b8061010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561095057600080fd5b505afa925050508015610980575060408051601f3d908101601f1916820190925261097d91810190612249565b60015b6109ba573d8080156109ae576040519150601f19603f3d011682016040523d82523d6000602084013e6109b3565b606091505b5050610f0f565b6001600160a01b03811615610f0d576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0457600080fd5b505afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190612249565b610100840151604051631652e7b760e01b81529192506001600160a01b03841691631652e7b791610a6f916004016126ce565b60606040518083038186803b158015610a8757600080fd5b505afa925050508015610ab7575060408051601f3d908101601f19168201909252610ab4918101906124c0565b60015b610d4d573d808015610ae5576040519150601f19603f3d011682016040523d82523d6000602084013e610aea565b606091505b506000806000856001600160a01b031663f11b81888861010001516040518263ffffffff1660e01b8152600401610b2191906126ce565b60606040518083038186803b158015610b3957600080fd5b505afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b719190612466565b92506001600160801b031692506001600160801b03169250604051806101200160405280848152602001838152602001828152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610be057600080fd5b505afa158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1891906124a8565b81526020018861010001516001600160a01b03168152602001866001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8857600080fd5b505afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc091906124ed565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0157600080fd5b505afa158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3991906124ed565b60ff169052606089015250610f0b92505050565b604051806101200160405280838152602001828152602001848152602001866001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906124a8565b81526020018761010001516001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b03168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8491906124ed565b60ff168152602001866001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec557600080fd5b505afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd91906124ed565b60ff16905260608801525050505b505b505b8061012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4d57600080fd5b505afa925050508015610f7d575060408051601f3d908101601f19168201909252610f7a91810190612249565b60015b610fb7573d808015610fab576040519150601f19603f3d011682016040523d82523d6000602084013e610fb0565b606091505b505061150c565b6001600160a01b0381161561150a576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561100157600080fd5b505afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190612249565b610120840151604051631652e7b760e01b81529192506001600160a01b03841691631652e7b79161106c916004016126ce565b60606040518083038186803b15801561108457600080fd5b505afa9250505080156110b4575060408051601f3d908101601f191682019092526110b1918101906124c0565b60015b61134a573d8080156110e2576040519150601f19603f3d011682016040523d82523d6000602084013e6110e7565b606091505b506000806000856001600160a01b031663f11b81888861012001516040518263ffffffff1660e01b815260040161111e91906126ce565b60606040518083038186803b15801561113657600080fd5b505afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e9190612466565b92506001600160801b031692506001600160801b03169250604051806101200160405280848152602001838152602001828152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111dd57600080fd5b505afa1580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121591906124a8565b81526020018861012001516001600160a01b03168152602001866001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd91906124ed565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fe57600080fd5b505afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133691906124ed565b60ff16905260408901525061150892505050565b604051806101200160405280838152602001828152602001848152602001866001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d991906124a8565b81526020018761012001516001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b03168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561144957600080fd5b505afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148191906124ed565b60ff168152602001866001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906124ed565b60ff16905260408801525050505b505b505b5050600101610237565b50949350505050565b60606000836001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561155c57600080fd5b505afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190612249565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160d919081019061226c565b905060606001600160a01b038516611626576000611629565b81515b67ffffffffffffffff8111801561163f57600080fd5b5060405190808252806020026020018201604052801561167957816020015b61166661210f565b81526020019060019003908161165e5790505b50905060005b8251811015612058576116906120a4565b846001600160a01b03166335ea6a758584815181106116ab57fe5b60200260200101516040518263ffffffff1660e01b81526004016116cf91906126ce565b6101806040518083038186803b1580156116e857600080fd5b505afa1580156116fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611720919061236b565b905083828151811061172e57fe5b602002602001015183838151811061174257fe5b60209081029190910101516001600160a01b039091169052611762612148565b8160e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561179f57600080fd5b505afa9250505080156117cf575060408051601f3d908101601f191682019092526117cc91810190612249565b60015b611809573d8080156117fd576040519150601f19603f3d011682016040523d82523d6000602084013e611802565b606091505b5050611a36565b6001600160a01b03811615611a34576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561185357600080fd5b505afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b9190612249565b60e0850151604051630cdcfb9360e21b81529192506001600160a01b03841691633373ee4c916118c0918e91906004016126e2565b60206040518083038186803b1580156118d857600080fd5b505afa1580156118ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191091906124a8565b8352604051630cc7d40f60e11b81526001600160a01b0383169063198fa81e9061193e908d906004016126ce565b60206040518083038186803b15801561195657600080fd5b505afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e91906124a8565b60208085019190915260e08501516001600160a01b03908116604080870191909152838216606087018190529185166080870152805163313ce56760e01b81529051919263313ce56792600480840193829003018186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a91906124ed565b60ff1660a0840152505b505b80848481518110611a4357fe5b602002602001015160200181905250611a5a612148565b8261012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9857600080fd5b505afa925050508015611ac8575060408051601f3d908101601f19168201909252611ac591810190612249565b60015b611b02573d808015611af6576040519150601f19603f3d011682016040523d82523d6000602084013e611afb565b606091505b5050611d31565b6001600160a01b03811615611d2f576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4c57600080fd5b505afa158015611b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b849190612249565b610120860151604051630cdcfb9360e21b81529192506001600160a01b03841691633373ee4c91611bba918f91906004016126e2565b60206040518083038186803b158015611bd257600080fd5b505afa158015611be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0a91906124a8565b8352604051630cc7d40f60e11b81526001600160a01b0383169063198fa81e90611c38908e906004016126ce565b60206040518083038186803b158015611c5057600080fd5b505afa158015611c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8891906124a8565b6020808501919091526101208601516001600160a01b03908116604080870191909152838216606087018190529185166080870152805163313ce56760e01b81529051919263313ce56792600480840193829003018186803b158015611ced57600080fd5b505afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2591906124ed565b60ff1660a0840152505b505b80858581518110611d3e57fe5b602002602001015160400181905250611d55612148565b8361010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9357600080fd5b505afa925050508015611dc3575060408051601f3d908101601f19168201909252611dc091810190612249565b60015b611dfd573d808015611df1576040519150601f19603f3d011682016040523d82523d6000602084013e611df6565b606091505b505061202b565b6001600160a01b03811615612029576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4757600080fd5b505afa158015611e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7f9190612249565b9050816001600160a01b0316633373ee4c8d8861010001516040518363ffffffff1660e01b8152600401611eb49291906126e2565b60206040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0491906124a8565b8352604051630cc7d40f60e11b81526001600160a01b0383169063198fa81e90611f32908f906004016126ce565b60206040518083038186803b158015611f4a57600080fd5b505afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8291906124a8565b6020808501919091526101008701516001600160a01b03908116604080870191909152838216606087018190529185166080870152805163313ce56760e01b81529051919263313ce56792600480840193829003018186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f91906124ed565b60ff1660a0840152505b505b8086868151811061203857fe5b60200260200101516060018190525050505050808060010191505061167f565b5095945050505050565b604051806080016040528060006001600160a01b0316815260200161208561217d565b815260200161209261217d565b815260200161209f61217d565b905290565b6040518061018001604052806120b86121c9565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b604051806080016040528060006001600160a01b03168152602001612132612148565b815260200161213f612148565b815260200161209f5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040518060200160405280600081525090565b80516100e081612777565b6000602082840312156121f8578081fd5b6122026020612750565b9151825250919050565b80516001600160801b03811681146100e057600080fd5b805164ffffffffff811681146100e057600080fd5b805160ff811681146100e057600080fd5b60006020828403121561225a578081fd5b815161226581612777565b9392505050565b6000602080838503121561227e578182fd5b825167ffffffffffffffff80821115612295578384fd5b818501915085601f8301126122a8578384fd5b8151818111156122b6578485fd5b83810291506122c6848301612750565b8181528481019084860184860187018a10156122e0578788fd5b8795505b8386101561230a576122f68a826121dc565b8352600195909501949186019186016122e4565b5098975050505050505050565b600060208284031215612328578081fd5b813561226581612777565b60008060408385031215612345578081fd5b823561235081612777565b9150602083013561236081612777565b809150509250929050565b600061018080838503121561237e578182fd5b61238781612750565b905061239384846121e7565b81526123a2846020850161220c565b60208201526123b4846040850161220c565b60408201526123c6846060850161220c565b60608201526123d8846080850161220c565b60808201526123ea8460a0850161220c565b60a08201526123fc8460c08501612223565b60c082015261240e8460e085016121dc565b60e0820152610100612422858286016121dc565b90820152610120612435858583016121dc565b90820152610140612448858583016121dc565b9082015261016061245b85858301612238565b908201529392505050565b60008060006060848603121561247a578081fd5b83516124858161278f565b60208501519093506124968161278f565b80925050604084015190509250925092565b6000602082840312156124b9578081fd5b5051919050565b6000806000606084860312156124d4578283fd5b8351925060208401519150604084015190509250925092565b6000602082840312156124fe578081fd5b6100dd8383612238565b6000815180845260208085019450808401835b8381101561257e57815180516001600160a01b0316885283810151612542858a01826125fe565b5060408101516125566101408a01826125fe565b50606001516125696102608901826125fe565b5061038096909601959082019060010161251b565b509495945050505050565b6000815180845260208085019450808401835b8381101561257e57815180516001600160a01b03168852838101516125c3858a018261267a565b5060408101516125d660e08a018261267a565b50606001516125e96101a089018261267a565b5061026096909601959082019060010161259c565b80518252602081015160208301526040810151604083015260608101516060830152608081015160018060a01b0380821660808501528060a08401511660a08501528060c08401511660c0850152505060e081015161266060e08401826126c7565b5061010080820151612674828501826126c7565b50505050565b8051825260208101516020830152604081015160018060a01b038082166040850152806060840151166060850152806080840151166080850152505060ff60a08201511660a08301525050565b60ff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602082526100dd6020830184612508565b6000604082526127226040830185612508565b82810360208401526127348185612589565b95945050505050565b6000602082526100dd6020830184612589565b60405181810167ffffffffffffffff8111828210171561276f57600080fd5b604052919050565b6001600160a01b038116811461278c57600080fd5b50565b6001600160801b038116811461278c57600080fdfea26469706673582212203102c3eeded3f035c0f886a29f6a7bfe25488b097b22fe271a1e585ae9d2f8f264736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634763753614610046578063799bdcf514610070578063976fafc514610090575b600080fd5b610059610054366004612333565b6100b0565b60405161006792919061270f565b60405180910390f35b61008361007e366004612333565b6100d1565b604051610067919061273d565b6100a361009e366004612317565b6100e6565b60405161006791906126fc565b6060806100bc846100ed565b6100c6858561151f565b915091509250929050565b60606100dd838361151f565b90505b92915050565b60606100e0825b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561012a57600080fd5b505afa15801561013e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101629190612249565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561019f57600080fd5b505afa1580156101b3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101db919081019061226c565b90506060815167ffffffffffffffff811180156101f757600080fd5b5060405190808252806020026020018201604052801561023157816020015b61021e612062565b8152602001906001900390816102165790505b50905060005b825181101561151657610248612062565b82828151811061025457fe5b6020026020010151905083828151811061026a57fe5b60209081029190910101516001600160a01b031681526102886120a4565b856001600160a01b03166335ea6a758685815181106102a357fe5b60200260200101516040518263ffffffff1660e01b81526004016102c791906126ce565b6101806040518083038186803b1580156102e057600080fd5b505afa1580156102f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610318919061236b565b90508060e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561035757600080fd5b505afa925050508015610387575060408051601f3d908101601f1916820190925261038491810190612249565b60015b6103c1573d8080156103b5576040519150601f19603f3d011682016040523d82523d6000602084013e6103ba565b606091505b5050610912565b6001600160a01b03811615610910576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561040b57600080fd5b505afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612249565b60e0840151604051631652e7b760e01b81529192506001600160a01b03841691631652e7b791610475916004016126ce565b60606040518083038186803b15801561048d57600080fd5b505afa9250505080156104bd575060408051601f3d908101601f191682019092526104ba918101906124c0565b60015b610751573d8080156104eb576040519150601f19603f3d011682016040523d82523d6000602084013e6104f0565b606091505b506000806000856001600160a01b031663f11b81888860e001516040518263ffffffff1660e01b815260040161052691906126ce565b60606040518083038186803b15801561053e57600080fd5b505afa158015610552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105769190612466565b92506001600160801b031692506001600160801b03169250604051806101200160405280848152602001838152602001828152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e557600080fd5b505afa1580156105f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061d91906124a8565b81526020018860e001516001600160a01b03168152602001866001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561068c57600080fd5b505afa1580156106a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c491906124ed565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b15801561070557600080fd5b505afa158015610719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073d91906124ed565b60ff16905260208901525061090e92505050565b604051806101200160405280838152602001828152602001848152602001866001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107a857600080fd5b505afa1580156107bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e091906124a8565b81526020018760e001516001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b03168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561084f57600080fd5b505afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088791906124ed565b60ff168152602001866001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156108c857600080fd5b505afa1580156108dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090091906124ed565b60ff16905260208801525050505b505b505b8061010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561095057600080fd5b505afa925050508015610980575060408051601f3d908101601f1916820190925261097d91810190612249565b60015b6109ba573d8080156109ae576040519150601f19603f3d011682016040523d82523d6000602084013e6109b3565b606091505b5050610f0f565b6001600160a01b03811615610f0d576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0457600080fd5b505afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190612249565b610100840151604051631652e7b760e01b81529192506001600160a01b03841691631652e7b791610a6f916004016126ce565b60606040518083038186803b158015610a8757600080fd5b505afa925050508015610ab7575060408051601f3d908101601f19168201909252610ab4918101906124c0565b60015b610d4d573d808015610ae5576040519150601f19603f3d011682016040523d82523d6000602084013e610aea565b606091505b506000806000856001600160a01b031663f11b81888861010001516040518263ffffffff1660e01b8152600401610b2191906126ce565b60606040518083038186803b158015610b3957600080fd5b505afa158015610b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b719190612466565b92506001600160801b031692506001600160801b03169250604051806101200160405280848152602001838152602001828152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610be057600080fd5b505afa158015610bf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1891906124a8565b81526020018861010001516001600160a01b03168152602001866001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610c8857600080fd5b505afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc091906124ed565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0157600080fd5b505afa158015610d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3991906124ed565b60ff169052606089015250610f0b92505050565b604051806101200160405280838152602001828152602001848152602001866001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906124a8565b81526020018761010001516001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b03168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8491906124ed565b60ff168152602001866001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b158015610ec557600080fd5b505afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd91906124ed565b60ff16905260608801525050505b505b505b8061012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4d57600080fd5b505afa925050508015610f7d575060408051601f3d908101601f19168201909252610f7a91810190612249565b60015b610fb7573d808015610fab576040519150601f19603f3d011682016040523d82523d6000602084013e610fb0565b606091505b505061150c565b6001600160a01b0381161561150a576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561100157600080fd5b505afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190612249565b610120840151604051631652e7b760e01b81529192506001600160a01b03841691631652e7b79161106c916004016126ce565b60606040518083038186803b15801561108457600080fd5b505afa9250505080156110b4575060408051601f3d908101601f191682019092526110b1918101906124c0565b60015b61134a573d8080156110e2576040519150601f19603f3d011682016040523d82523d6000602084013e6110e7565b606091505b506000806000856001600160a01b031663f11b81888861012001516040518263ffffffff1660e01b815260040161111e91906126ce565b60606040518083038186803b15801561113657600080fd5b505afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e9190612466565b92506001600160801b031692506001600160801b03169250604051806101200160405280848152602001838152602001828152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111dd57600080fd5b505afa1580156111f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121591906124a8565b81526020018861012001516001600160a01b03168152602001866001600160a01b03168152602001876001600160a01b03168152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd91906124ed565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fe57600080fd5b505afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133691906124ed565b60ff16905260408901525061150892505050565b604051806101200160405280838152602001828152602001848152602001866001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d991906124a8565b81526020018761012001516001600160a01b03168152602001856001600160a01b03168152602001866001600160a01b03168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561144957600080fd5b505afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148191906124ed565b60ff168152602001866001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906124ed565b60ff16905260408801525050505b505b505b5050600101610237565b50949350505050565b60606000836001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561155c57600080fd5b505afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190612249565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160d919081019061226c565b905060606001600160a01b038516611626576000611629565b81515b67ffffffffffffffff8111801561163f57600080fd5b5060405190808252806020026020018201604052801561167957816020015b61166661210f565b81526020019060019003908161165e5790505b50905060005b8251811015612058576116906120a4565b846001600160a01b03166335ea6a758584815181106116ab57fe5b60200260200101516040518263ffffffff1660e01b81526004016116cf91906126ce565b6101806040518083038186803b1580156116e857600080fd5b505afa1580156116fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611720919061236b565b905083828151811061172e57fe5b602002602001015183838151811061174257fe5b60209081029190910101516001600160a01b039091169052611762612148565b8160e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561179f57600080fd5b505afa9250505080156117cf575060408051601f3d908101601f191682019092526117cc91810190612249565b60015b611809573d8080156117fd576040519150601f19603f3d011682016040523d82523d6000602084013e611802565b606091505b5050611a36565b6001600160a01b03811615611a34576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561185357600080fd5b505afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b9190612249565b60e0850151604051630cdcfb9360e21b81529192506001600160a01b03841691633373ee4c916118c0918e91906004016126e2565b60206040518083038186803b1580156118d857600080fd5b505afa1580156118ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191091906124a8565b8352604051630cc7d40f60e11b81526001600160a01b0383169063198fa81e9061193e908d906004016126ce565b60206040518083038186803b15801561195657600080fd5b505afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e91906124a8565b60208085019190915260e08501516001600160a01b03908116604080870191909152838216606087018190529185166080870152805163313ce56760e01b81529051919263313ce56792600480840193829003018186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a91906124ed565b60ff1660a0840152505b505b80848481518110611a4357fe5b602002602001015160200181905250611a5a612148565b8261012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9857600080fd5b505afa925050508015611ac8575060408051601f3d908101601f19168201909252611ac591810190612249565b60015b611b02573d808015611af6576040519150601f19603f3d011682016040523d82523d6000602084013e611afb565b606091505b5050611d31565b6001600160a01b03811615611d2f576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4c57600080fd5b505afa158015611b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b849190612249565b610120860151604051630cdcfb9360e21b81529192506001600160a01b03841691633373ee4c91611bba918f91906004016126e2565b60206040518083038186803b158015611bd257600080fd5b505afa158015611be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0a91906124a8565b8352604051630cc7d40f60e11b81526001600160a01b0383169063198fa81e90611c38908e906004016126ce565b60206040518083038186803b158015611c5057600080fd5b505afa158015611c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8891906124a8565b6020808501919091526101208601516001600160a01b03908116604080870191909152838216606087018190529185166080870152805163313ce56760e01b81529051919263313ce56792600480840193829003018186803b158015611ced57600080fd5b505afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2591906124ed565b60ff1660a0840152505b505b80858581518110611d3e57fe5b602002602001015160400181905250611d55612148565b8361010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9357600080fd5b505afa925050508015611dc3575060408051601f3d908101601f19168201909252611dc091810190612249565b60015b611dfd573d808015611df1576040519150601f19603f3d011682016040523d82523d6000602084013e611df6565b606091505b505061202b565b6001600160a01b03811615612029576000816001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611e4757600080fd5b505afa158015611e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7f9190612249565b9050816001600160a01b0316633373ee4c8d8861010001516040518363ffffffff1660e01b8152600401611eb49291906126e2565b60206040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0491906124a8565b8352604051630cc7d40f60e11b81526001600160a01b0383169063198fa81e90611f32908f906004016126ce565b60206040518083038186803b158015611f4a57600080fd5b505afa158015611f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8291906124a8565b6020808501919091526101008701516001600160a01b03908116604080870191909152838216606087018190529185166080870152805163313ce56760e01b81529051919263313ce56792600480840193829003018186803b158015611fe757600080fd5b505afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f91906124ed565b60ff1660a0840152505b505b8086868151811061203857fe5b60200260200101516060018190525050505050808060010191505061167f565b5095945050505050565b604051806080016040528060006001600160a01b0316815260200161208561217d565b815260200161209261217d565b815260200161209f61217d565b905290565b6040518061018001604052806120b86121c9565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b604051806080016040528060006001600160a01b03168152602001612132612148565b815260200161213f612148565b815260200161209f5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040518060200160405280600081525090565b80516100e081612777565b6000602082840312156121f8578081fd5b6122026020612750565b9151825250919050565b80516001600160801b03811681146100e057600080fd5b805164ffffffffff811681146100e057600080fd5b805160ff811681146100e057600080fd5b60006020828403121561225a578081fd5b815161226581612777565b9392505050565b6000602080838503121561227e578182fd5b825167ffffffffffffffff80821115612295578384fd5b818501915085601f8301126122a8578384fd5b8151818111156122b6578485fd5b83810291506122c6848301612750565b8181528481019084860184860187018a10156122e0578788fd5b8795505b8386101561230a576122f68a826121dc565b8352600195909501949186019186016122e4565b5098975050505050505050565b600060208284031215612328578081fd5b813561226581612777565b60008060408385031215612345578081fd5b823561235081612777565b9150602083013561236081612777565b809150509250929050565b600061018080838503121561237e578182fd5b61238781612750565b905061239384846121e7565b81526123a2846020850161220c565b60208201526123b4846040850161220c565b60408201526123c6846060850161220c565b60608201526123d8846080850161220c565b60808201526123ea8460a0850161220c565b60a08201526123fc8460c08501612223565b60c082015261240e8460e085016121dc565b60e0820152610100612422858286016121dc565b90820152610120612435858583016121dc565b90820152610140612448858583016121dc565b9082015261016061245b85858301612238565b908201529392505050565b60008060006060848603121561247a578081fd5b83516124858161278f565b60208501519093506124968161278f565b80925050604084015190509250925092565b6000602082840312156124b9578081fd5b5051919050565b6000806000606084860312156124d4578283fd5b8351925060208401519150604084015190509250925092565b6000602082840312156124fe578081fd5b6100dd8383612238565b6000815180845260208085019450808401835b8381101561257e57815180516001600160a01b0316885283810151612542858a01826125fe565b5060408101516125566101408a01826125fe565b50606001516125696102608901826125fe565b5061038096909601959082019060010161251b565b509495945050505050565b6000815180845260208085019450808401835b8381101561257e57815180516001600160a01b03168852838101516125c3858a018261267a565b5060408101516125d660e08a018261267a565b50606001516125e96101a089018261267a565b5061026096909601959082019060010161259c565b80518252602081015160208301526040810151604083015260608101516060830152608081015160018060a01b0380821660808501528060a08401511660a08501528060c08401511660c0850152505060e081015161266060e08401826126c7565b5061010080820151612674828501826126c7565b50505050565b8051825260208101516020830152604081015160018060a01b038082166040850152806060840151166060850152806080840151166080850152505060ff60a08201511660a08301525050565b60ff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602082526100dd6020830184612508565b6000604082526127226040830185612508565b82810360208401526127348185612589565b95945050505050565b6000602082526100dd6020830184612589565b60405181810167ffffffffffffffff8111828210171561276f57600080fd5b604052919050565b6001600160a01b038116811461278c57600080fd5b50565b6001600160801b038116811461278c57600080fdfea26469706673582212203102c3eeded3f035c0f886a29f6a7bfe25488b097b22fe271a1e585ae9d2f8f264736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UiIncentiveDataProviderV2V3.json b/eth_defi/abi/aave_v2/UiIncentiveDataProviderV2V3.json new file mode 100644 index 00000000..5650e152 --- /dev/null +++ b/eth_defi/abi/aave_v2/UiIncentiveDataProviderV2V3.json @@ -0,0 +1,1025 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UiIncentiveDataProviderV2V3", + "sourceName": "contracts/misc/UiIncentiveDataProviderV2V3.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "MKRAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_bytes32", + "type": "bytes32" + } + ], + "name": "bytes32ToString", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getFullReservesIncentiveData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "aIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "vIncentiveData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "emissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "incentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "precision", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.RewardInfo[]", + "name": "rewardsTokenInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.IncentiveData", + "name": "sIncentiveData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.AggregatedReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "rewardToken", + "type": "address" + } + ], + "name": "getSymbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesIncentivesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "aTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "vTokenIncentivesUserData", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "incentiveControllerAddress", + "type": "address" + }, + { + "components": [ + { + "internalType": "string", + "name": "rewardTokenSymbol", + "type": "string" + }, + { + "internalType": "address", + "name": "rewardOracleAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenIncentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "rewardPriceFeed", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "priceFeedDecimals", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "rewardTokenDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserRewardInfo[]", + "name": "userRewardsInformation", + "type": "tuple[]" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserIncentiveData", + "name": "sTokenIncentivesUserData", + "type": "tuple" + } + ], + "internalType": "struct IUiIncentiveDataProviderV3.UserReserveIncentiveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50613200806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634763753614610067578063799bdcf5146100915780639201de55146100b1578063976fafc5146100d15780639dd9e2ce146100f1578063c9b2e52214610106575b600080fd5b61007a610075366004612adf565b610119565b6040516100889291906130f2565b60405180910390f35b6100a461009f366004612adf565b61013a565b6040516100889190613120565b6100c46100bf366004612aaf565b61014f565b6040516100889190613133565b6100e46100df3660046129c5565b61025e565b60405161008891906130df565b6100f9610269565b60405161008891906130b1565b6100c46101143660046129c5565b610281565b606080610125846103aa565b61012f8585611a94565b915091509250929050565b60606101468383611a94565b90505b92915050565b606060005b60208160ff161080156101825750828160ff166020811061017157fe5b1a60f81b6001600160f81b03191615155b1561018f57600101610154565b60608160ff1667ffffffffffffffff811180156101ab57600080fd5b506040519080825280601f01601f1916602001820160405280156101d6576020820181803683370190505b509050600091505b60208260ff1610801561020c5750838260ff16602081106101fb57fe5b1a60f81b6001600160f81b03191615155b1561025557838260ff166020811061022057fe5b1a60f81b818360ff168151811061023357fe5b60200101906001600160f81b031916908160001a9053506001909101906101de565b9150505b919050565b6060610149826103aa565b739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b60606001600160a01b038216739f8f72aa9304c8b593d555f12ef6589cc3a579a2141561032e576000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160206040518083038186803b1580156102e357600080fd5b505afa1580156102f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031b9190612ac7565b90506103268161014f565b915050610259565b816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561036757600080fd5b505afa15801561037b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103a39190810190612b17565b9050610259565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103e757600080fd5b505afa1580156103fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041f91906129e8565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561045c57600080fd5b505afa158015610470573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104989190810190612a04565b90506060815167ffffffffffffffff811180156104b457600080fd5b506040519080825280602002602001820160405280156104ee57816020015b6104db6127a7565b8152602001906001900390816104d35790505b50905060005b8251811015611a8b576105056127a7565b82828151811061051157fe5b6020026020010151905083828151811061052757fe5b60209081029190910101516001600160a01b031681526105456127e9565b856001600160a01b03166335ea6a7586858151811061056057fe5b60200260200101516040518263ffffffff1660e01b815260040161058491906130b1565b6101806040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190612b9a565b90508060e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561061457600080fd5b505afa925050508015610644575060408051601f3d908101601f19168201909252610641918101906129e8565b60015b61067e573d808015610672576040519150601f19603f3d011682016040523d82523d6000602084013e610677565b606091505b5050610cb7565b604080516001808252818301909252606091816020015b61069d612854565b8152602001906001900390816106955790505090506001600160a01b03821615610cb4576000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073491906129e8565b60e0850151604051631652e7b760e01b81529192506001600160a01b03851691631652e7b791610766916004016130b1565b60606040518083038186803b15801561077e57600080fd5b505afa9250505080156107ae575060408051601f3d908101601f191682019092526107ab91810190612cd7565b60015b610a9b573d8080156107dc576040519150601f19603f3d011682016040523d82523d6000602084013e6107e1565b606091505b506000806000866001600160a01b031663f11b81888960e001516040518263ffffffff1660e01b815260040161081791906130b1565b60606040518083038186803b15801561082f57600080fd5b505afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190612c95565b92506001600160801b031692506001600160801b0316925060405180610160016040528061089487610281565b8152602001866001600160a01b0316815260200160006001600160a01b03168152602001848152602001838152602001828152602001886001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093b9190612ac7565b815260200160008152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561098057600080fd5b505afa158015610994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b89190612d04565b60ff168152602001886001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a319190612d04565b60ff168152602001600060ff1681525086600081518110610a4e57fe5b602002602001018190525060405180606001604052808960e001516001600160a01b03168152602001886001600160a01b0316815260200187815250896020018190525050505050610cb2565b604051806101600160405280610ab086610281565b8152602001856001600160a01b0316815260200160006001600160a01b03168152602001838152602001828152602001848152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1f57600080fd5b505afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b579190612ac7565b815260200160008152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9c57600080fd5b505afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd49190612d04565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1557600080fd5b505afa158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190612d04565b60ff168152602001600060ff1681525085600081518110610c6a57fe5b602002602001018190525060405180606001604052808860e001516001600160a01b03168152602001876001600160a01b031681526020018681525088602001819052505050505b505b50505b8061010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf557600080fd5b505afa925050508015610d25575060408051601f3d908101601f19168201909252610d22918101906129e8565b60015b610d5f573d808015610d53576040519150601f19603f3d011682016040523d82523d6000602084013e610d58565b606091505b505061139c565b604080516001808252818301909252606091816020015b610d7e612854565b815260200190600190039081610d765790505090506001600160a01b03821615611399576000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015610ddd57600080fd5b505afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906129e8565b610100850151604051631652e7b760e01b81529192506001600160a01b03851691631652e7b791610e48916004016130b1565b60606040518083038186803b158015610e6057600080fd5b505afa925050508015610e90575060408051601f3d908101601f19168201909252610e8d91810190612cd7565b60015b61117f573d808015610ebe576040519150601f19603f3d011682016040523d82523d6000602084013e610ec3565b606091505b506000806000866001600160a01b031663f11b81888961010001516040518263ffffffff1660e01b8152600401610efa91906130b1565b60606040518083038186803b158015610f1257600080fd5b505afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190612c95565b92506001600160801b031692506001600160801b03169250604051806101600160405280610f7787610281565b8152602001866001600160a01b0316815260200160006001600160a01b03168152602001848152602001838152602001828152602001886001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fe657600080fd5b505afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190612ac7565b815260200160008152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561106357600080fd5b505afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190612d04565b60ff168152602001886001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190612d04565b60ff168152602001600060ff168152508660008151811061113157fe5b602002602001018190525060405180606001604052808961010001516001600160a01b03168152602001886001600160a01b0316815260200187815250896060018190525050505050611397565b60405180610160016040528061119486610281565b8152602001856001600160a01b0316815260200160006001600160a01b03168152602001838152602001828152602001848152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120357600080fd5b505afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612ac7565b815260200160008152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b89190612d04565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190612d04565b60ff168152602001600060ff168152508560008151811061134e57fe5b602002602001018190525060405180606001604052808861010001516001600160a01b03168152602001876001600160a01b031681526020018681525088606001819052505050505b505b50505b8061012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b1580156113da57600080fd5b505afa92505050801561140a575060408051601f3d908101601f19168201909252611407918101906129e8565b60015b611444573d808015611438576040519150601f19603f3d011682016040523d82523d6000602084013e61143d565b606091505b5050611a81565b604080516001808252818301909252606091816020015b611463612854565b81526020019060019003908161145b5790505090506001600160a01b03821615611a7e576000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906129e8565b610120850151604051631652e7b760e01b81529192506001600160a01b03851691631652e7b79161152d916004016130b1565b60606040518083038186803b15801561154557600080fd5b505afa925050508015611575575060408051601f3d908101601f1916820190925261157291810190612cd7565b60015b611864573d8080156115a3576040519150601f19603f3d011682016040523d82523d6000602084013e6115a8565b606091505b506000806000866001600160a01b031663f11b81888961012001516040518263ffffffff1660e01b81526004016115df91906130b1565b60606040518083038186803b1580156115f757600080fd5b505afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f9190612c95565b92506001600160801b031692506001600160801b0316925060405180610160016040528061165c87610281565b8152602001866001600160a01b0316815260200160006001600160a01b03168152602001848152602001838152602001828152602001886001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cb57600080fd5b505afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612ac7565b815260200160008152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b505afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117809190612d04565b60ff168152602001886001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156117c157600080fd5b505afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190612d04565b60ff168152602001600060ff168152508660008151811061181657fe5b602002602001018190525060405180606001604052808961012001516001600160a01b03168152602001886001600160a01b0316815260200187815250896040018190525050505050611a7c565b60405180610160016040528061187986610281565b8152602001856001600160a01b0316815260200160006001600160a01b03168152602001838152602001828152602001848152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e857600080fd5b505afa1580156118fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119209190612ac7565b815260200160008152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561196557600080fd5b505afa158015611979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199d9190612d04565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156119de57600080fd5b505afa1580156119f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a169190612d04565b60ff168152602001600060ff1681525085600081518110611a3357fe5b602002602001018190525060405180606001604052808861012001516001600160a01b03168152602001876001600160a01b031681526020018681525088604001819052505050505b505b50505b50506001016104f4565b50949350505050565b60606000836001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad157600080fd5b505afa158015611ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0991906129e8565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b4657600080fd5b505afa158015611b5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b829190810190612a04565b905060606001600160a01b038516611b9b576000611b9e565b81515b67ffffffffffffffff81118015611bb457600080fd5b50604051908082528060200260200182016040528015611bee57816020015b611bdb6127a7565b815260200190600190039081611bd35790505b50905060005b825181101561279d57611c056127e9565b846001600160a01b03166335ea6a75858481518110611c2057fe5b60200260200101516040518263ffffffff1660e01b8152600401611c4491906130b1565b6101806040518083038186803b158015611c5d57600080fd5b505afa158015611c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c959190612b9a565b9050838281518110611ca357fe5b6020026020010151838381518110611cb757fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508060e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015611d1857600080fd5b505afa925050508015611d48575060408051601f3d908101601f19168201909252611d45918101906129e8565b60015b611d82573d808015611d76576040519150601f19603f3d011682016040523d82523d6000602084013e611d7b565b606091505b505061206c565b6001600160a01b0381161561206a57604080516001808252818301909252606091816020015b611db06128c9565b815260200190600190039081611da85790505090506000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0057600080fd5b505afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3891906129e8565b9050604051806101000160405280611e4f83610281565b815260200160006001600160a01b03168152602001826001600160a01b03168152602001846001600160a01b031663198fa81e8d6040518263ffffffff1660e01b8152600401611e9f91906130b1565b60206040518083038186803b158015611eb757600080fd5b505afa158015611ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eef9190612ac7565b8152602001846001600160a01b0316633373ee4c8d8860e001516040518363ffffffff1660e01b8152600401611f269291906130c5565b60206040518083038186803b158015611f3e57600080fd5b505afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190612ac7565b815260200160008152602001600060ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc557600080fd5b505afa158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd9190612d04565b60ff168152508260008151811061201057fe5b602002602001018190525060405180606001604052808560e001516001600160a01b03168152602001846001600160a01b031681526020018381525086868151811061205857fe5b60200260200101516020018190525050505b505b8061012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b1580156120aa57600080fd5b505afa9250505080156120da575060408051601f3d908101601f191682019092526120d7918101906129e8565b60015b612114573d808015612108576040519150601f19603f3d011682016040523d82523d6000602084013e61210d565b606091505b5050612400565b6001600160a01b038116156123fe57604080516001808252818301909252606091816020015b6121426128c9565b81526020019060019003908161213a5790505090506000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561219257600080fd5b505afa1580156121a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ca91906129e8565b90506040518061010001604052806121e183610281565b815260200160006001600160a01b03168152602001826001600160a01b03168152602001846001600160a01b031663198fa81e8d6040518263ffffffff1660e01b815260040161223191906130b1565b60206040518083038186803b15801561224957600080fd5b505afa15801561225d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122819190612ac7565b8152602001846001600160a01b0316633373ee4c8d8861012001516040518363ffffffff1660e01b81526004016122b99291906130c5565b60206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123099190612ac7565b815260200160008152602001600060ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561235857600080fd5b505afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190612d04565b60ff16815250826000815181106123a357fe5b602002602001018190525060405180606001604052808561012001516001600160a01b03168152602001846001600160a01b03168152602001838152508686815181106123ec57fe5b60200260200101516040018190525050505b505b8061010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561243e57600080fd5b505afa92505050801561246e575060408051601f3d908101601f1916820190925261246b918101906129e8565b60015b6124a8573d80801561249c576040519150601f19603f3d011682016040523d82523d6000602084013e6124a1565b606091505b5050612794565b6001600160a01b0381161561279257604080516001808252818301909252606091816020015b6124d66128c9565b8152602001906001900390816124ce5790505090506000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561252657600080fd5b505afa15801561253a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255e91906129e8565b905060405180610100016040528061257583610281565b815260200160006001600160a01b03168152602001826001600160a01b03168152602001846001600160a01b031663198fa81e8d6040518263ffffffff1660e01b81526004016125c591906130b1565b60206040518083038186803b1580156125dd57600080fd5b505afa1580156125f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126159190612ac7565b8152602001846001600160a01b0316633373ee4c8d8861010001516040518363ffffffff1660e01b815260040161264d9291906130c5565b60206040518083038186803b15801561266557600080fd5b505afa158015612679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269d9190612ac7565b815260200160008152602001600060ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ec57600080fd5b505afa158015612700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127249190612d04565b60ff168152508260008151811061273757fe5b602002602001018190525060405180606001604052808561010001516001600160a01b03168152602001846001600160a01b031681526020018381525086868151811061278057fe5b60200260200101516060018190525050505b505b50600101611bf4565b5095945050505050565b604051806080016040528060006001600160a01b031681526020016127ca612926565b81526020016127d7612926565b81526020016127e4612926565b905290565b6040518061018001604052806127fd612945565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518061016001604052806060815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b6040518061010001604052806060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600060ff168152602001600060ff1681525090565b6040805160608082018352600080835260208301529181019190915290565b6040518060200160405280600081525090565b80516101498161319d565b600060208284031215612974578081fd5b61297e6020613146565b9151825250919050565b80516001600160801b038116811461014957600080fd5b805164ffffffffff8116811461014957600080fd5b805160ff8116811461014957600080fd5b6000602082840312156129d6578081fd5b81356129e18161319d565b9392505050565b6000602082840312156129f9578081fd5b81516129e18161319d565b60006020808385031215612a16578182fd5b825167ffffffffffffffff80821115612a2d578384fd5b818501915085601f830112612a40578384fd5b815181811115612a4e578485fd5b8381029150612a5e848301613146565b8181528481019084860184860187018a1015612a78578788fd5b8795505b83861015612aa257612a8e8a82612958565b835260019590950194918601918601612a7c565b5098975050505050505050565b600060208284031215612ac0578081fd5b5035919050565b600060208284031215612ad8578081fd5b5051919050565b60008060408385031215612af1578081fd5b8235612afc8161319d565b91506020830135612b0c8161319d565b809150509250929050565b600060208284031215612b28578081fd5b815167ffffffffffffffff80821115612b3f578283fd5b818401915084601f830112612b52578283fd5b815181811115612b60578384fd5b612b73601f8201601f1916602001613146565b9150808252856020828501011115612b89578384fd5b611a8b81602084016020860161316d565b6000610180808385031215612bad578182fd5b612bb681613146565b9050612bc28484612963565b8152612bd18460208501612988565b6020820152612be38460408501612988565b6040820152612bf58460608501612988565b6060820152612c078460808501612988565b6080820152612c198460a08501612988565b60a0820152612c2b8460c0850161299f565b60c0820152612c3d8460e08501612958565b60e0820152610100612c5185828601612958565b90820152610120612c6485858301612958565b90820152610140612c7785858301612958565b90820152610160612c8a858583016129b4565b908201529392505050565b600080600060608486031215612ca9578081fd5b8351612cb4816131b5565b6020850151909350612cc5816131b5565b80925050604084015190509250925092565b600080600060608486031215612ceb578081fd5b8351925060208401519150604084015190509250925092565b600060208284031215612d15578081fd5b61014683836129b4565b6001600160a01b03169052565b6000815180845260208085018081965082840281019150828601855b85811015612dc9578284038952815180516001600160a01b0316855285810151608087870181905290612d7d82880182612e9b565b91505060408083015187830382890152612d978382612e9b565b9250505060608083015192508682038188015250612db58183612e9b565b9a87019a9550505090840190600101612d48565b5091979650505050505050565b6000815180845260208085018081965082840281019150828601855b85811015612dc957828403895281516080612e0e868351612d1f565b868201518188880152612e2382880182612fc4565b91505060408083015187830382890152612e3d8382612fc4565b9250505060608083015192508682038188015250612e5b8183612fc4565b9a87019a9550505090840190600101612df2565b60008151808452612e8781602086016020860161316d565b601f01601f19169290920160200192915050565b80516001600160a01b0390811683526020808301519091168184015260408083015160608286018190528151868201819052600094919360809390929190820190848901908084028a018601885b82811015612fb557607f198c830301845284516101608151818552612f1082860182612e6f565b91505087820151612f2389860182612d1f565b5088820151612f348a860182612d1f565b50818b0151848c0152898201518a85015260a0808301519085015260c0808301519085015260e0808301519085015261010080830151612f76828701826130aa565b505061012080830151612f8b828701826130aa565b50506101409182015191612fa1858201846130aa565b509587019594870194925050600101612ee9565b509a9950505050505050505050565b6000606080840160018060a01b0380855116865260208181870151168188015260408087015185828a015284815180875260809650868b019150868582028c01018584019350895b8281101561309a57607f198d83030184528451610100815181855261303382860182612e6f565b838b01518c16868c0152898401518c168a8701528d8401518e8701528c8401518d87015260a0808501519087015260c08085015160ff169087015260e093840151939092509050613086818601846130aa565b50958801959488019492505060010161300c565b509b9a5050505050505050505050565b60ff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602082526101466020830184612d2c565b6000604082526131056040830185612d2c565b82810360208401526131178185612dd6565b95945050505050565b6000602082526101466020830184612dd6565b6000602082526101466020830184612e6f565b60405181810167ffffffffffffffff8111828210171561316557600080fd5b604052919050565b60005b83811015613188578181015183820152602001613170565b83811115613197576000848401525b50505050565b6001600160a01b03811681146131b257600080fd5b50565b6001600160801b03811681146131b257600080fdfea2646970667358221220cb49701e8b7a334272b687d6c8a03126b0215930b7f591012bf1a5f6b8703ee564736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80634763753614610067578063799bdcf5146100915780639201de55146100b1578063976fafc5146100d15780639dd9e2ce146100f1578063c9b2e52214610106575b600080fd5b61007a610075366004612adf565b610119565b6040516100889291906130f2565b60405180910390f35b6100a461009f366004612adf565b61013a565b6040516100889190613120565b6100c46100bf366004612aaf565b61014f565b6040516100889190613133565b6100e46100df3660046129c5565b61025e565b60405161008891906130df565b6100f9610269565b60405161008891906130b1565b6100c46101143660046129c5565b610281565b606080610125846103aa565b61012f8585611a94565b915091509250929050565b60606101468383611a94565b90505b92915050565b606060005b60208160ff161080156101825750828160ff166020811061017157fe5b1a60f81b6001600160f81b03191615155b1561018f57600101610154565b60608160ff1667ffffffffffffffff811180156101ab57600080fd5b506040519080825280601f01601f1916602001820160405280156101d6576020820181803683370190505b509050600091505b60208260ff1610801561020c5750838260ff16602081106101fb57fe5b1a60f81b6001600160f81b03191615155b1561025557838260ff166020811061022057fe5b1a60f81b818360ff168151811061023357fe5b60200101906001600160f81b031916908160001a9053506001909101906101de565b9150505b919050565b6060610149826103aa565b739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b60606001600160a01b038216739f8f72aa9304c8b593d555f12ef6589cc3a579a2141561032e576000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160206040518083038186803b1580156102e357600080fd5b505afa1580156102f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031b9190612ac7565b90506103268161014f565b915050610259565b816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561036757600080fd5b505afa15801561037b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103a39190810190612b17565b9050610259565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103e757600080fd5b505afa1580156103fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041f91906129e8565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561045c57600080fd5b505afa158015610470573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104989190810190612a04565b90506060815167ffffffffffffffff811180156104b457600080fd5b506040519080825280602002602001820160405280156104ee57816020015b6104db6127a7565b8152602001906001900390816104d35790505b50905060005b8251811015611a8b576105056127a7565b82828151811061051157fe5b6020026020010151905083828151811061052757fe5b60209081029190910101516001600160a01b031681526105456127e9565b856001600160a01b03166335ea6a7586858151811061056057fe5b60200260200101516040518263ffffffff1660e01b815260040161058491906130b1565b6101806040518083038186803b15801561059d57600080fd5b505afa1580156105b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d59190612b9a565b90508060e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561061457600080fd5b505afa925050508015610644575060408051601f3d908101601f19168201909252610641918101906129e8565b60015b61067e573d808015610672576040519150601f19603f3d011682016040523d82523d6000602084013e610677565b606091505b5050610cb7565b604080516001808252818301909252606091816020015b61069d612854565b8152602001906001900390816106955790505090506001600160a01b03821615610cb4576000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073491906129e8565b60e0850151604051631652e7b760e01b81529192506001600160a01b03851691631652e7b791610766916004016130b1565b60606040518083038186803b15801561077e57600080fd5b505afa9250505080156107ae575060408051601f3d908101601f191682019092526107ab91810190612cd7565b60015b610a9b573d8080156107dc576040519150601f19603f3d011682016040523d82523d6000602084013e6107e1565b606091505b506000806000866001600160a01b031663f11b81888960e001516040518263ffffffff1660e01b815260040161081791906130b1565b60606040518083038186803b15801561082f57600080fd5b505afa158015610843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108679190612c95565b92506001600160801b031692506001600160801b0316925060405180610160016040528061089487610281565b8152602001866001600160a01b0316815260200160006001600160a01b03168152602001848152602001838152602001828152602001886001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561090357600080fd5b505afa158015610917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093b9190612ac7565b815260200160008152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561098057600080fd5b505afa158015610994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b89190612d04565b60ff168152602001886001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a319190612d04565b60ff168152602001600060ff1681525086600081518110610a4e57fe5b602002602001018190525060405180606001604052808960e001516001600160a01b03168152602001886001600160a01b0316815260200187815250896020018190525050505050610cb2565b604051806101600160405280610ab086610281565b8152602001856001600160a01b0316815260200160006001600160a01b03168152602001838152602001828152602001848152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b1f57600080fd5b505afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b579190612ac7565b815260200160008152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9c57600080fd5b505afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd49190612d04565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1557600080fd5b505afa158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190612d04565b60ff168152602001600060ff1681525085600081518110610c6a57fe5b602002602001018190525060405180606001604052808860e001516001600160a01b03168152602001876001600160a01b031681526020018681525088602001819052505050505b505b50505b8061010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf557600080fd5b505afa925050508015610d25575060408051601f3d908101601f19168201909252610d22918101906129e8565b60015b610d5f573d808015610d53576040519150601f19603f3d011682016040523d82523d6000602084013e610d58565b606091505b505061139c565b604080516001808252818301909252606091816020015b610d7e612854565b815260200190600190039081610d765790505090506001600160a01b03821615611399576000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015610ddd57600080fd5b505afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906129e8565b610100850151604051631652e7b760e01b81529192506001600160a01b03851691631652e7b791610e48916004016130b1565b60606040518083038186803b158015610e6057600080fd5b505afa925050508015610e90575060408051601f3d908101601f19168201909252610e8d91810190612cd7565b60015b61117f573d808015610ebe576040519150601f19603f3d011682016040523d82523d6000602084013e610ec3565b606091505b506000806000866001600160a01b031663f11b81888961010001516040518263ffffffff1660e01b8152600401610efa91906130b1565b60606040518083038186803b158015610f1257600080fd5b505afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190612c95565b92506001600160801b031692506001600160801b03169250604051806101600160405280610f7787610281565b8152602001866001600160a01b0316815260200160006001600160a01b03168152602001848152602001838152602001828152602001886001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fe657600080fd5b505afa158015610ffa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190612ac7565b815260200160008152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561106357600080fd5b505afa158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190612d04565b60ff168152602001886001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190612d04565b60ff168152602001600060ff168152508660008151811061113157fe5b602002602001018190525060405180606001604052808961010001516001600160a01b03168152602001886001600160a01b0316815260200187815250896060018190525050505050611397565b60405180610160016040528061119486610281565b8152602001856001600160a01b0316815260200160006001600160a01b03168152602001838152602001828152602001848152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120357600080fd5b505afa158015611217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123b9190612ac7565b815260200160008152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b89190612d04565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f957600080fd5b505afa15801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190612d04565b60ff168152602001600060ff168152508560008151811061134e57fe5b602002602001018190525060405180606001604052808861010001516001600160a01b03168152602001876001600160a01b031681526020018681525088606001819052505050505b505b50505b8061012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b1580156113da57600080fd5b505afa92505050801561140a575060408051601f3d908101601f19168201909252611407918101906129e8565b60015b611444573d808015611438576040519150601f19603f3d011682016040523d82523d6000602084013e61143d565b606091505b5050611a81565b604080516001808252818301909252606091816020015b611463612854565b81526020019060019003908161145b5790505090506001600160a01b03821615611a7e576000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906129e8565b610120850151604051631652e7b760e01b81529192506001600160a01b03851691631652e7b79161152d916004016130b1565b60606040518083038186803b15801561154557600080fd5b505afa925050508015611575575060408051601f3d908101601f1916820190925261157291810190612cd7565b60015b611864573d8080156115a3576040519150601f19603f3d011682016040523d82523d6000602084013e6115a8565b606091505b506000806000866001600160a01b031663f11b81888961012001516040518263ffffffff1660e01b81526004016115df91906130b1565b60606040518083038186803b1580156115f757600080fd5b505afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f9190612c95565b92506001600160801b031692506001600160801b0316925060405180610160016040528061165c87610281565b8152602001866001600160a01b0316815260200160006001600160a01b03168152602001848152602001838152602001828152602001886001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cb57600080fd5b505afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612ac7565b815260200160008152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b505afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117809190612d04565b60ff168152602001886001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156117c157600080fd5b505afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190612d04565b60ff168152602001600060ff168152508660008151811061181657fe5b602002602001018190525060405180606001604052808961012001516001600160a01b03168152602001886001600160a01b0316815260200187815250896040018190525050505050611a7c565b60405180610160016040528061187986610281565b8152602001856001600160a01b0316815260200160006001600160a01b03168152602001838152602001828152602001848152602001876001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e857600080fd5b505afa1580156118fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119209190612ac7565b815260200160008152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561196557600080fd5b505afa158015611979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199d9190612d04565b60ff168152602001876001600160a01b031663aaf5eb686040518163ffffffff1660e01b815260040160206040518083038186803b1580156119de57600080fd5b505afa1580156119f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a169190612d04565b60ff168152602001600060ff1681525085600081518110611a3357fe5b602002602001018190525060405180606001604052808861012001516001600160a01b03168152602001876001600160a01b031681526020018681525088604001819052505050505b505b50505b50506001016104f4565b50949350505050565b60606000836001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad157600080fd5b505afa158015611ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0991906129e8565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b4657600080fd5b505afa158015611b5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b829190810190612a04565b905060606001600160a01b038516611b9b576000611b9e565b81515b67ffffffffffffffff81118015611bb457600080fd5b50604051908082528060200260200182016040528015611bee57816020015b611bdb6127a7565b815260200190600190039081611bd35790505b50905060005b825181101561279d57611c056127e9565b846001600160a01b03166335ea6a75858481518110611c2057fe5b60200260200101516040518263ffffffff1660e01b8152600401611c4491906130b1565b6101806040518083038186803b158015611c5d57600080fd5b505afa158015611c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c959190612b9a565b9050838281518110611ca357fe5b6020026020010151838381518110611cb757fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508060e001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015611d1857600080fd5b505afa925050508015611d48575060408051601f3d908101601f19168201909252611d45918101906129e8565b60015b611d82573d808015611d76576040519150601f19603f3d011682016040523d82523d6000602084013e611d7b565b606091505b505061206c565b6001600160a01b0381161561206a57604080516001808252818301909252606091816020015b611db06128c9565b815260200190600190039081611da85790505090506000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0057600080fd5b505afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3891906129e8565b9050604051806101000160405280611e4f83610281565b815260200160006001600160a01b03168152602001826001600160a01b03168152602001846001600160a01b031663198fa81e8d6040518263ffffffff1660e01b8152600401611e9f91906130b1565b60206040518083038186803b158015611eb757600080fd5b505afa158015611ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eef9190612ac7565b8152602001846001600160a01b0316633373ee4c8d8860e001516040518363ffffffff1660e01b8152600401611f269291906130c5565b60206040518083038186803b158015611f3e57600080fd5b505afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190612ac7565b815260200160008152602001600060ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc557600080fd5b505afa158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd9190612d04565b60ff168152508260008151811061201057fe5b602002602001018190525060405180606001604052808560e001516001600160a01b03168152602001846001600160a01b031681526020018381525086868151811061205857fe5b60200260200101516020018190525050505b505b8061012001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b1580156120aa57600080fd5b505afa9250505080156120da575060408051601f3d908101601f191682019092526120d7918101906129e8565b60015b612114573d808015612108576040519150601f19603f3d011682016040523d82523d6000602084013e61210d565b606091505b5050612400565b6001600160a01b038116156123fe57604080516001808252818301909252606091816020015b6121426128c9565b81526020019060019003908161213a5790505090506000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561219257600080fd5b505afa1580156121a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ca91906129e8565b90506040518061010001604052806121e183610281565b815260200160006001600160a01b03168152602001826001600160a01b03168152602001846001600160a01b031663198fa81e8d6040518263ffffffff1660e01b815260040161223191906130b1565b60206040518083038186803b15801561224957600080fd5b505afa15801561225d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122819190612ac7565b8152602001846001600160a01b0316633373ee4c8d8861012001516040518363ffffffff1660e01b81526004016122b99291906130c5565b60206040518083038186803b1580156122d157600080fd5b505afa1580156122e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123099190612ac7565b815260200160008152602001600060ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561235857600080fd5b505afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190612d04565b60ff16815250826000815181106123a357fe5b602002602001018190525060405180606001604052808561012001516001600160a01b03168152602001846001600160a01b03168152602001838152508686815181106123ec57fe5b60200260200101516040018190525050505b505b8061010001516001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b15801561243e57600080fd5b505afa92505050801561246e575060408051601f3d908101601f1916820190925261246b918101906129e8565b60015b6124a8573d80801561249c576040519150601f19603f3d011682016040523d82523d6000602084013e6124a1565b606091505b5050612794565b6001600160a01b0381161561279257604080516001808252818301909252606091816020015b6124d66128c9565b8152602001906001900390816124ce5790505090506000826001600160a01b03166399248ea76040518163ffffffff1660e01b815260040160206040518083038186803b15801561252657600080fd5b505afa15801561253a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255e91906129e8565b905060405180610100016040528061257583610281565b815260200160006001600160a01b03168152602001826001600160a01b03168152602001846001600160a01b031663198fa81e8d6040518263ffffffff1660e01b81526004016125c591906130b1565b60206040518083038186803b1580156125dd57600080fd5b505afa1580156125f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126159190612ac7565b8152602001846001600160a01b0316633373ee4c8d8861010001516040518363ffffffff1660e01b815260040161264d9291906130c5565b60206040518083038186803b15801561266557600080fd5b505afa158015612679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269d9190612ac7565b815260200160008152602001600060ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156126ec57600080fd5b505afa158015612700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127249190612d04565b60ff168152508260008151811061273757fe5b602002602001018190525060405180606001604052808561010001516001600160a01b03168152602001846001600160a01b031681526020018381525086868151811061278057fe5b60200260200101516060018190525050505b505b50600101611bf4565b5095945050505050565b604051806080016040528060006001600160a01b031681526020016127ca612926565b81526020016127d7612926565b81526020016127e4612926565b905290565b6040518061018001604052806127fd612945565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518061016001604052806060815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600060ff168152602001600060ff168152602001600060ff1681525090565b6040518061010001604052806060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600060ff168152602001600060ff1681525090565b6040805160608082018352600080835260208301529181019190915290565b6040518060200160405280600081525090565b80516101498161319d565b600060208284031215612974578081fd5b61297e6020613146565b9151825250919050565b80516001600160801b038116811461014957600080fd5b805164ffffffffff8116811461014957600080fd5b805160ff8116811461014957600080fd5b6000602082840312156129d6578081fd5b81356129e18161319d565b9392505050565b6000602082840312156129f9578081fd5b81516129e18161319d565b60006020808385031215612a16578182fd5b825167ffffffffffffffff80821115612a2d578384fd5b818501915085601f830112612a40578384fd5b815181811115612a4e578485fd5b8381029150612a5e848301613146565b8181528481019084860184860187018a1015612a78578788fd5b8795505b83861015612aa257612a8e8a82612958565b835260019590950194918601918601612a7c565b5098975050505050505050565b600060208284031215612ac0578081fd5b5035919050565b600060208284031215612ad8578081fd5b5051919050565b60008060408385031215612af1578081fd5b8235612afc8161319d565b91506020830135612b0c8161319d565b809150509250929050565b600060208284031215612b28578081fd5b815167ffffffffffffffff80821115612b3f578283fd5b818401915084601f830112612b52578283fd5b815181811115612b60578384fd5b612b73601f8201601f1916602001613146565b9150808252856020828501011115612b89578384fd5b611a8b81602084016020860161316d565b6000610180808385031215612bad578182fd5b612bb681613146565b9050612bc28484612963565b8152612bd18460208501612988565b6020820152612be38460408501612988565b6040820152612bf58460608501612988565b6060820152612c078460808501612988565b6080820152612c198460a08501612988565b60a0820152612c2b8460c0850161299f565b60c0820152612c3d8460e08501612958565b60e0820152610100612c5185828601612958565b90820152610120612c6485858301612958565b90820152610140612c7785858301612958565b90820152610160612c8a858583016129b4565b908201529392505050565b600080600060608486031215612ca9578081fd5b8351612cb4816131b5565b6020850151909350612cc5816131b5565b80925050604084015190509250925092565b600080600060608486031215612ceb578081fd5b8351925060208401519150604084015190509250925092565b600060208284031215612d15578081fd5b61014683836129b4565b6001600160a01b03169052565b6000815180845260208085018081965082840281019150828601855b85811015612dc9578284038952815180516001600160a01b0316855285810151608087870181905290612d7d82880182612e9b565b91505060408083015187830382890152612d978382612e9b565b9250505060608083015192508682038188015250612db58183612e9b565b9a87019a9550505090840190600101612d48565b5091979650505050505050565b6000815180845260208085018081965082840281019150828601855b85811015612dc957828403895281516080612e0e868351612d1f565b868201518188880152612e2382880182612fc4565b91505060408083015187830382890152612e3d8382612fc4565b9250505060608083015192508682038188015250612e5b8183612fc4565b9a87019a9550505090840190600101612df2565b60008151808452612e8781602086016020860161316d565b601f01601f19169290920160200192915050565b80516001600160a01b0390811683526020808301519091168184015260408083015160608286018190528151868201819052600094919360809390929190820190848901908084028a018601885b82811015612fb557607f198c830301845284516101608151818552612f1082860182612e6f565b91505087820151612f2389860182612d1f565b5088820151612f348a860182612d1f565b50818b0151848c0152898201518a85015260a0808301519085015260c0808301519085015260e0808301519085015261010080830151612f76828701826130aa565b505061012080830151612f8b828701826130aa565b50506101409182015191612fa1858201846130aa565b509587019594870194925050600101612ee9565b509a9950505050505050505050565b6000606080840160018060a01b0380855116865260208181870151168188015260408087015185828a015284815180875260809650868b019150868582028c01018584019350895b8281101561309a57607f198d83030184528451610100815181855261303382860182612e6f565b838b01518c16868c0152898401518c168a8701528d8401518e8701528c8401518d87015260a0808501519087015260c08085015160ff169087015260e093840151939092509050613086818601846130aa565b50958801959488019492505060010161300c565b509b9a5050505050505050505050565b60ff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6000602082526101466020830184612d2c565b6000604082526131056040830185612d2c565b82810360208401526131178185612dd6565b95945050505050565b6000602082526101466020830184612dd6565b6000602082526101466020830184612e6f565b60405181810167ffffffffffffffff8111828210171561316557600080fd5b604052919050565b60005b83811015613188578181015183820152602001613170565b83811115613197576000848401525b50505050565b6001600160a01b03811681146131b257600080fd5b50565b6001600160801b03811681146131b257600080fdfea2646970667358221220cb49701e8b7a334272b687d6c8a03126b0215930b7f591012bf1a5f6b8703ee564736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UiPoolDataProvider.json b/eth_defi/abi/aave_v2/UiPoolDataProvider.json new file mode 100644 index 00000000..0afef329 --- /dev/null +++ b/eth_defi/abi/aave_v2/UiPoolDataProvider.json @@ -0,0 +1,722 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UiPoolDataProvider", + "sourceName": "contracts/misc/UiPoolDataProvider.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "_incentivesController", + "type": "address" + }, + { + "internalType": "contract IPriceOracleGetter", + "name": "_oracle", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "MOCK_USD_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInEth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenIncentivesIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenincentivesUserIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.UserReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "userUnclaimedRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "emissionEndTimestamp", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.IncentivesControllerData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getSimpleReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInEth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sEmissionPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sIncentivesLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenIncentivesIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenIncentivesIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "aTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vTokenincentivesUserIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sTokenincentivesUserIndex", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProvider.UserReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oracle", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b506040516200380e3803806200380e833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c6136b36200015b600039806104035280610a7c5280611596528061198052806126bd5250806107545280610796528061084952806108fc52806109aa52806109d15280610db95280610dfa5280610eb75280610f5b52806113cf528061140b5280611cd15280611d135280611dc65280611e795280611f295280611f50528061200f52806120cf528061254f528061259a5280612624528061278352506136b36000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637dc0d1d01161005b5780637dc0d1d0146100ee57806387e40db714610103578063af1df25514610126578063b8c0a5b11461012e5761007d565b80634331f2a41461008257806351974cc0146100ad578063586c1442146100ce575b600080fd5b610095610090366004612e78565b610136565b6040516100a4939291906135a1565b60405180910390f35b6100c06100bb366004612e94565b610b25565b6040516100a49291906135c6565b6100e16100dc366004612e78565b6114a1565b6040516100a4919061350c565b6100f6611594565b6040516100a491906134de565b610116610111366004612e94565b6115b8565b6040516100a49493929190613559565b6100f6612781565b6100f66127a5565b60606000806000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017657600080fd5b505afa15801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190612db1565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101eb57600080fd5b505afa1580156101ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102279190810190612dcd565b90506060815167ffffffffffffffff8111801561024357600080fd5b5060405190808252806020026020018201604052801561027d57816020015b61026a612ab0565b8152602001906001900390816102625790505b50905060005b825181101561099d57610294612ab0565b8282815181106102a057fe5b602002602001015190508382815181106102b657fe5b60209081029190910101516001600160a01b031681526102d4612c4e565b81516040516335ea6a7560e01b81526001600160a01b038816916335ea6a759161030191906004016134de565b6101806040518083038186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190612f58565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f0791610436916004016134de565b60206040518083038186803b15801561044e57600080fd5b505afa158015610462573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610486919061306e565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a08231916104bf916004016134de565b60206040518083038186803b1580156104d757600080fd5b505afa1580156104eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050f919061306e565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906130b3565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b1580156105f157600080fd5b505afa158015610605573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610629919061306e565b8261036001818152505081600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ac9190810190612ecc565b60408084019190915280516020808201909252600081529083015280516106d2906127bd565b60e0870152606086015260c085015260a0840152608083015280516106f6906127e8565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c082015161073290612824565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561099357610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b7916107ca91906004016134de565b60606040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190613086565b6104808501526104208401526104e0830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161087d91906004016134de565b60606040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190613086565b6104c08501526104608401526105208301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161093091906004016134de565b60606040518083038186803b15801561094857600080fd5b505afa15801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190613086565b6104a08501526104408401526105008301525b5050600101610283565b5060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610a63577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2857600080fd5b505afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a60919061306e565b90505b60405163b3596f0760e01b815282906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790610ac5907310f7fc1f91ba351f9c629c5947ad69bd03c05b96906004016134de565b60206040518083038186803b158015610add57600080fd5b505afa158015610af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b15919061306e565b9099909850909650945050505050565b6060600080846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190612db1565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190612dcd565b9050610c1e612cb9565b604051634417a58360e01b81526001600160a01b03841690634417a58390610c4a9089906004016134de565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190613053565b905060606001600160a01b038716610cb3576000610cb6565b82515b67ffffffffffffffff81118015610ccc57600080fd5b50604051908082528060200260200182016040528015610d0657816020015b610cf3612ccc565b815260200190600190039081610ceb5790505b50905060005b83518110156113c257610d1d612c4e565b856001600160a01b03166335ea6a75868481518110610d3857fe5b60200260200101516040518263ffffffff1660e01b8152600401610d5c91906134de565b6101806040518083038186803b158015610d7557600080fd5b505afa158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad9190612f58565b90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561101a5760e0810151604051630cdcfb9360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633373ee4c91610e2f918d916004016134f2565b60206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f919061306e565b838381518110610e8b57fe5b602090810291909101015160e00152610120810151604051630cdcfb9360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633373ee4c91610eec918d916004016134f2565b60206040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c919061306e565b838381518110610f4857fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8a8361010001516040518363ffffffff1660e01b8152600401610fac9291906134f2565b60206040518083038186803b158015610fc457600080fd5b505afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc919061306e565b83838151811061100857fe5b60200260200101516101200181815250505b84828151811061102657fe5b602002602001015183838151811061103a57fe5b60209081029190910101516001600160a01b03918216905260e0820151604051630ed1279f60e11b8152911690631da24f3e9061107b908c906004016134de565b60206040518083038186803b15801561109357600080fd5b505afa1580156110a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cb919061306e565b8383815181106110d757fe5b60209081029190910181015101526110ef84836129fd565b8383815181106110fb57fe5b60209081029190910101519015156040909101526111198483612a5f565b156113b9578061012001516001600160a01b0316631da24f3e8a6040518263ffffffff1660e01b815260040161114f91906134de565b60206040518083038186803b15801561116757600080fd5b505afa15801561117b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119f919061306e565b8383815181106111ab57fe5b602002602001015160800181815250508061010001516001600160a01b031663c634dfaa8a6040518263ffffffff1660e01b81526004016111ec91906134de565b60206040518083038186803b15801561120457600080fd5b505afa158015611218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c919061306e565b83838151811061124857fe5b602002602001015160a001818152505082828151811061126457fe5b602002602001015160a001516000146113b9578061010001516001600160a01b031663e78c9b3b8a6040518263ffffffff1660e01b81526004016112a891906134de565b60206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f8919061306e565b83838151811061130457fe5b602002602001015160600181815250508061010001516001600160a01b03166379ce6b8c8a6040518263ffffffff1660e01b815260040161134591906134de565b60206040518083038186803b15801561135d57600080fd5b505afa158015611371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139591906130f3565b64ffffffffff168383815181106113a857fe5b602002602001015160c00181815250505b50600101610d0c565b5060006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561149357604051630cc7d40f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063198fa81e90611440908b906004016134de565b60206040518083038186803b15801561145857600080fd5b505afa15801561146c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611490919061306e565b90505b909890975095505050505050565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114de57600080fd5b505afa1580156114f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115169190612db1565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261158d9190810190612dcd565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60608060006115c5612d2a565b6000866001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116389190612db1565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561167557600080fd5b505afa158015611689573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116b19190810190612dcd565b90506116bb612cb9565b604051634417a58360e01b81526001600160a01b03841690634417a583906116e7908b906004016134de565b60206040518083038186803b1580156116ff57600080fd5b505afa158015611713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117379190613053565b90506060825167ffffffffffffffff8111801561175357600080fd5b5060405190808252806020026020018201604052801561178d57816020015b61177a612ab0565b8152602001906001900390816117725790505b50905060606001600160a01b038a166117a75760006117aa565b83515b67ffffffffffffffff811180156117c057600080fd5b506040519080825280602002602001820160405280156117fa57816020015b6117e7612ccc565b8152602001906001900390816117df5790505b50905060005b845181101561253c57611811612ab0565b83828151811061181d57fe5b6020026020010151905085828151811061183357fe5b60209081029190910101516001600160a01b03168152611851612c4e565b81516040516335ea6a7560e01b81526001600160a01b038a16916335ea6a759161187e91906004016134de565b6101806040518083038186803b15801561189757600080fd5b505afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf9190612f58565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f07916119b3916004016134de565b60206040518083038186803b1580156119cb57600080fd5b505afa1580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a03919061306e565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a0823191611a3c916004016134de565b60206040518083038186803b158015611a5457600080fd5b505afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c919061306e565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015611ad457600080fd5b505afa158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c91906130b3565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b158015611b6e57600080fd5b505afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba6919061306e565b8261036001818152505081600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015611bed57600080fd5b505afa158015611c01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c299190810190612ecc565b6040808401919091528051602080820190925260008152908301528051611c4f906127bd565b60e0870152606086015260c085015260a084015260808301528051611c73906127e8565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c0820151611caf90612824565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615611f1057610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b791611d4791906004016134de565b60606040518083038186803b158015611d5f57600080fd5b505afa158015611d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d979190613086565b6104808501526104208401526104e0830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b791611dfa91906004016134de565b60606040518083038186803b158015611e1257600080fd5b505afa158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190613086565b6104c08501526104608401526105208301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b791611ead91906004016134de565b60606040518083038186803b158015611ec557600080fd5b505afa158015611ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efd9190613086565b6104a08501526104408401526105008301525b6001600160a01b038d1615612532576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561218e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461026001516040518363ffffffff1660e01b8152600401611fa19291906134f2565b60206040518083038186803b158015611fb957600080fd5b505afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff1919061306e565b848481518110611ffd57fe5b602002602001015160e00181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e846102a001516040518363ffffffff1660e01b81526004016120609291906134f2565b60206040518083038186803b15801561207857600080fd5b505afa15801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b0919061306e565b8484815181106120bc57fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461028001516040518363ffffffff1660e01b81526004016121209291906134f2565b60206040518083038186803b15801561213857600080fd5b505afa15801561214c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612170919061306e565b84848151811061217c57fe5b60200260200101516101200181815250505b816000015184848151811061219f57fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508161026001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b81526004016121f491906134de565b60206040518083038186803b15801561220c57600080fd5b505afa158015612220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612244919061306e565b84848151811061225057fe5b602090810291909101810151015261226886846129fd565b84848151811061227457fe5b60209081029190910101519015156040909101526122928684612a5f565b1561253257816102a001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b81526004016122c891906134de565b60206040518083038186803b1580156122e057600080fd5b505afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612318919061306e565b84848151811061232457fe5b602002602001015160800181815250508161028001516001600160a01b031663c634dfaa8e6040518263ffffffff1660e01b815260040161236591906134de565b60206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b5919061306e565b8484815181106123c157fe5b602002602001015160a00181815250508383815181106123dd57fe5b602002602001015160a00151600014612532578161028001516001600160a01b031663e78c9b3b8e6040518263ffffffff1660e01b815260040161242191906134de565b60206040518083038186803b15801561243957600080fd5b505afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612471919061306e565b84848151811061247d57fe5b602002602001015160600181815250508161028001516001600160a01b03166379ce6b8c8e6040518263ffffffff1660e01b81526004016124be91906134de565b60206040518083038186803b1580156124d657600080fd5b505afa1580156124ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250e91906130f3565b64ffffffffff1684848151811061252157fe5b602002602001015160c00181815250505b5050600101611800565b50612545612d2a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016156126b9576001600160a01b038b161561262257604051630cc7d40f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063198fa81e906125cf908e906004016134de565b60206040518083038186803b1580156125e757600080fd5b505afa1580156125fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261f919061306e565b81525b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561267b57600080fd5b505afa15801561268f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b3919061306e565b60208201525b82827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3596f077310f7fc1f91ba351f9c629c5947ad69bd03c05b966040518263ffffffff1660e01b815260040161271b91906134de565b60206040518083038186803b15801561273357600080fd5b505afa158015612747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276b919061306e565b919e909d50909b50909950975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b15801561286357600080fd5b505afa158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b919061306e565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d457600080fd5b505afa1580156128e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290c919061306e565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561294557600080fd5b505afa158015612959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297d919061306e565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156129b657600080fd5b505afa1580156129ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ee919061306e565b93509350935093509193509193565b60006080821060405180604001604052806002815260200161373760f01b81525090612a455760405162461bcd60e51b8152600401612a3c91906135e8565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b81525090612a9e5760405162461bcd60e51b8152600401612a3c91906135e8565b50509051600160029092021c16151590565b60405180610540016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280612c62612cb9565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b60405180610140016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b8051612a5981613652565b600060208284031215612d60578081fd5b612d6a60206135fb565b9151825250919050565b80516001600160801b0381168114612a5957600080fd5b805164ffffffffff81168114612a5957600080fd5b805160ff81168114612a5957600080fd5b600060208284031215612dc2578081fd5b815161158d81613652565b60006020808385031215612ddf578182fd5b825167ffffffffffffffff80821115612df6578384fd5b818501915085601f830112612e09578384fd5b815181811115612e17578485fd5b8381029150612e278483016135fb565b8181528481019084860184860187018a1015612e41578788fd5b8795505b83861015612e6b57612e578a82612d44565b835260019590950194918601918601612e45565b5098975050505050505050565b600060208284031215612e89578081fd5b813561158d81613652565b60008060408385031215612ea6578081fd5b8235612eb181613652565b91506020830135612ec181613652565b809150509250929050565b600060208284031215612edd578081fd5b815167ffffffffffffffff80821115612ef4578283fd5b818401915084601f830112612f07578283fd5b815181811115612f15578384fd5b612f28601f8201601f19166020016135fb565b9150808252856020828501011115612f3e578384fd5b612f4f816020840160208601613622565b50949350505050565b6000610180808385031215612f6b578182fd5b612f74816135fb565b9050612f808484612d4f565b8152612f8f8460208501612d74565b6020820152612fa18460408501612d74565b6040820152612fb38460608501612d74565b6060820152612fc58460808501612d74565b6080820152612fd78460a08501612d74565b60a0820152612fe98460c08501612d8b565b60c0820152612ffb8460e08501612d44565b60e082015261010061300f85828601612d44565b9082015261012061302285858301612d44565b9082015261014061303585858301612d44565b9082015261016061304885858301612da0565b908201529392505050565b600060208284031215613064578081fd5b61158d8383612d4f565b60006020828403121561307f578081fd5b5051919050565b60008060006060848603121561309a578081fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156130c8578081fd5b84519350602085015192506040850151915060608501516130e88161366a565b939692955090935050565b600060208284031215613104578081fd5b815161158d8161366a565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b848110156133dd57601f19868403018952815161054061315885835161310f565b85820151818787015261316d8287018261349a565b91505060408083015186830382880152613187838261349a565b606085810151908901526080808601519089015260a0808601519089015260c0808601519089015260e0808601519089015261010080860151919450925090506131d382880182613494565b5050610120808301516131e882880182613494565b5050610140808301516131fd82880182613494565b50506101608083015161321282880182613494565b50506101808083015161322782880182613494565b50506101a08083015161323c828801826134c6565b50506101c080830151613251828801826134c6565b50506101e080830151613266828801826134c6565b50506102008083015161327b828801826134c6565b505061022080830151613290828801826134c6565b5050610240808301516132a5828801826134d3565b5050610260808301516132ba8288018261310f565b5050610280808301516132cf8288018261310f565b50506102a0808301516132e48288018261310f565b50506102c0808301516132f98288018261310f565b50506102e08281015190860152610300808301519086015261032080830151908601526103408083015190860152610360808301519086015261038080830151908601526103a080830151908601526103c080830151908601526103e08083015190860152610400808301519086015261042080830151908601526104408083015190860152610460808301519086015261048080830151908601526104a080830151908601526104c080830151908601526104e0808301519086015261050080830151908601526105209182015191909401529783019790830190600101613137565b5090979650505050505050565b6000815180845260208085019450808401835b8381101561348957815161341288825161310f565b838101518489015260408082015161342c828b0182613494565b5050606081810151908901526080808201519089015260a0808201519089015260c0808201519089015260e080820151908901526101008082015190890152610120908101519088015261014090960195908201906001016133fd565b509495945050505050565b15159052565b600081518084526134b2816020860160208601613622565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561354d5783516001600160a01b031683529284019291840191600101613528565b50909695505050505050565b600060a0825261356c60a083018761311c565b828103602084015261357e81876133ea565b915050836040830152825160608301526020830151608083015295945050505050565b6000606082526135b4606083018661311c565b60208301949094525060400152919050565b6000604082526135d960408301856133ea565b90508260208301529392505050565b60006020825261158d602083018461349a565b60405181810167ffffffffffffffff8111828210171561361a57600080fd5b604052919050565b60005b8381101561363d578181015183820152602001613625565b8381111561364c576000848401525b50505050565b6001600160a01b038116811461366757600080fd5b50565b64ffffffffff8116811461366757600080fdfea2646970667358221220a2a8daff06dbc645bcbf5036dd0dd49af337a8e18d8508c4eebef9dce69a115064736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637dc0d1d01161005b5780637dc0d1d0146100ee57806387e40db714610103578063af1df25514610126578063b8c0a5b11461012e5761007d565b80634331f2a41461008257806351974cc0146100ad578063586c1442146100ce575b600080fd5b610095610090366004612e78565b610136565b6040516100a4939291906135a1565b60405180910390f35b6100c06100bb366004612e94565b610b25565b6040516100a49291906135c6565b6100e16100dc366004612e78565b6114a1565b6040516100a4919061350c565b6100f6611594565b6040516100a491906134de565b610116610111366004612e94565b6115b8565b6040516100a49493929190613559565b6100f6612781565b6100f66127a5565b60606000806000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017657600080fd5b505afa15801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190612db1565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101eb57600080fd5b505afa1580156101ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102279190810190612dcd565b90506060815167ffffffffffffffff8111801561024357600080fd5b5060405190808252806020026020018201604052801561027d57816020015b61026a612ab0565b8152602001906001900390816102625790505b50905060005b825181101561099d57610294612ab0565b8282815181106102a057fe5b602002602001015190508382815181106102b657fe5b60209081029190910101516001600160a01b031681526102d4612c4e565b81516040516335ea6a7560e01b81526001600160a01b038816916335ea6a759161030191906004016134de565b6101806040518083038186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103529190612f58565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f0791610436916004016134de565b60206040518083038186803b15801561044e57600080fd5b505afa158015610462573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610486919061306e565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a08231916104bf916004016134de565b60206040518083038186803b1580156104d757600080fd5b505afa1580156104eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050f919061306e565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f91906130b3565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b1580156105f157600080fd5b505afa158015610605573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610629919061306e565b8261036001818152505081600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561067057600080fd5b505afa158015610684573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106ac9190810190612ecc565b60408084019190915280516020808201909252600081529083015280516106d2906127bd565b60e0870152606086015260c085015260a0840152608083015280516106f6906127e8565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c082015161073290612824565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561099357610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b7916107ca91906004016134de565b60606040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190613086565b6104808501526104208401526104e0830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161087d91906004016134de565b60606040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190613086565b6104c08501526104608401526105208301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b79161093091906004016134de565b60606040518083038186803b15801561094857600080fd5b505afa15801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190613086565b6104a08501526104408401526105008301525b5050600101610283565b5060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615610a63577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2857600080fd5b505afa158015610a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a60919061306e565b90505b60405163b3596f0760e01b815282906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790610ac5907310f7fc1f91ba351f9c629c5947ad69bd03c05b96906004016134de565b60206040518083038186803b158015610add57600080fd5b505afa158015610af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b15919061306e565b9099909850909650945050505050565b6060600080846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190612db1565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610bd857600080fd5b505afa158015610bec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c149190810190612dcd565b9050610c1e612cb9565b604051634417a58360e01b81526001600160a01b03841690634417a58390610c4a9089906004016134de565b60206040518083038186803b158015610c6257600080fd5b505afa158015610c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9a9190613053565b905060606001600160a01b038716610cb3576000610cb6565b82515b67ffffffffffffffff81118015610ccc57600080fd5b50604051908082528060200260200182016040528015610d0657816020015b610cf3612ccc565b815260200190600190039081610ceb5790505b50905060005b83518110156113c257610d1d612c4e565b856001600160a01b03166335ea6a75868481518110610d3857fe5b60200260200101516040518263ffffffff1660e01b8152600401610d5c91906134de565b6101806040518083038186803b158015610d7557600080fd5b505afa158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad9190612f58565b90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561101a5760e0810151604051630cdcfb9360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633373ee4c91610e2f918d916004016134f2565b60206040518083038186803b158015610e4757600080fd5b505afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f919061306e565b838381518110610e8b57fe5b602090810291909101015160e00152610120810151604051630cdcfb9360e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633373ee4c91610eec918d916004016134f2565b60206040518083038186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c919061306e565b838381518110610f4857fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8a8361010001516040518363ffffffff1660e01b8152600401610fac9291906134f2565b60206040518083038186803b158015610fc457600080fd5b505afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc919061306e565b83838151811061100857fe5b60200260200101516101200181815250505b84828151811061102657fe5b602002602001015183838151811061103a57fe5b60209081029190910101516001600160a01b03918216905260e0820151604051630ed1279f60e11b8152911690631da24f3e9061107b908c906004016134de565b60206040518083038186803b15801561109357600080fd5b505afa1580156110a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cb919061306e565b8383815181106110d757fe5b60209081029190910181015101526110ef84836129fd565b8383815181106110fb57fe5b60209081029190910101519015156040909101526111198483612a5f565b156113b9578061012001516001600160a01b0316631da24f3e8a6040518263ffffffff1660e01b815260040161114f91906134de565b60206040518083038186803b15801561116757600080fd5b505afa15801561117b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119f919061306e565b8383815181106111ab57fe5b602002602001015160800181815250508061010001516001600160a01b031663c634dfaa8a6040518263ffffffff1660e01b81526004016111ec91906134de565b60206040518083038186803b15801561120457600080fd5b505afa158015611218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c919061306e565b83838151811061124857fe5b602002602001015160a001818152505082828151811061126457fe5b602002602001015160a001516000146113b9578061010001516001600160a01b031663e78c9b3b8a6040518263ffffffff1660e01b81526004016112a891906134de565b60206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f8919061306e565b83838151811061130457fe5b602002602001015160600181815250508061010001516001600160a01b03166379ce6b8c8a6040518263ffffffff1660e01b815260040161134591906134de565b60206040518083038186803b15801561135d57600080fd5b505afa158015611371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139591906130f3565b64ffffffffff168383815181106113a857fe5b602002602001015160c00181815250505b50600101610d0c565b5060006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561149357604051630cc7d40f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063198fa81e90611440908b906004016134de565b60206040518083038186803b15801561145857600080fd5b505afa15801561146c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611490919061306e565b90505b909890975095505050505050565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114de57600080fd5b505afa1580156114f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115169190612db1565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561155157600080fd5b505afa158015611565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261158d9190810190612dcd565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60608060006115c5612d2a565b6000866001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561160057600080fd5b505afa158015611614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116389190612db1565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561167557600080fd5b505afa158015611689573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116b19190810190612dcd565b90506116bb612cb9565b604051634417a58360e01b81526001600160a01b03841690634417a583906116e7908b906004016134de565b60206040518083038186803b1580156116ff57600080fd5b505afa158015611713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117379190613053565b90506060825167ffffffffffffffff8111801561175357600080fd5b5060405190808252806020026020018201604052801561178d57816020015b61177a612ab0565b8152602001906001900390816117725790505b50905060606001600160a01b038a166117a75760006117aa565b83515b67ffffffffffffffff811180156117c057600080fd5b506040519080825280602002602001820160405280156117fa57816020015b6117e7612ccc565b8152602001906001900390816117df5790505b50905060005b845181101561253c57611811612ab0565b83828151811061181d57fe5b6020026020010151905085828151811061183357fe5b60209081029190910101516001600160a01b03168152611851612c4e565b81516040516335ea6a7560e01b81526001600160a01b038a16916335ea6a759161187e91906004016134de565b6101806040518083038186803b15801561189757600080fd5b505afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf9190612f58565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b81529293507f0000000000000000000000000000000000000000000000000000000000000000169163b3596f07916119b3916004016134de565b60206040518083038186803b1580156119cb57600080fd5b505afa1580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a03919061306e565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a0823191611a3c916004016134de565b60206040518083038186803b158015611a5457600080fd5b505afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c919061306e565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015611ad457600080fd5b505afa158015611ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0c91906130b3565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b158015611b6e57600080fd5b505afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba6919061306e565b8261036001818152505081600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015611bed57600080fd5b505afa158015611c01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c299190810190612ecc565b6040808401919091528051602080820190925260008152908301528051611c4f906127bd565b60e0870152606086015260c085015260a084015260808301528051611c73906127e8565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c0820151611caf90612824565b6104008601526103e08501526103c08401526103a08301526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001615611f1057610260820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b791611d4791906004016134de565b60606040518083038186803b158015611d5f57600080fd5b505afa158015611d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d979190613086565b6104808501526104208401526104e0830152610280820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b791611dfa91906004016134de565b60606040518083038186803b158015611e1257600080fd5b505afa158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4a9190613086565b6104c08501526104608401526105208301526102a0820151604051631652e7b760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691631652e7b791611ead91906004016134de565b60606040518083038186803b158015611ec557600080fd5b505afa158015611ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efd9190613086565b6104a08501526104408401526105008301525b6001600160a01b038d1615612532576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161561218e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461026001516040518363ffffffff1660e01b8152600401611fa19291906134f2565b60206040518083038186803b158015611fb957600080fd5b505afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff1919061306e565b848481518110611ffd57fe5b602002602001015160e00181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e846102a001516040518363ffffffff1660e01b81526004016120609291906134f2565b60206040518083038186803b15801561207857600080fd5b505afa15801561208c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b0919061306e565b8484815181106120bc57fe5b60200260200101516101000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633373ee4c8e8461028001516040518363ffffffff1660e01b81526004016121209291906134f2565b60206040518083038186803b15801561213857600080fd5b505afa15801561214c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612170919061306e565b84848151811061217c57fe5b60200260200101516101200181815250505b816000015184848151811061219f57fe5b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508161026001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b81526004016121f491906134de565b60206040518083038186803b15801561220c57600080fd5b505afa158015612220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612244919061306e565b84848151811061225057fe5b602090810291909101810151015261226886846129fd565b84848151811061227457fe5b60209081029190910101519015156040909101526122928684612a5f565b1561253257816102a001516001600160a01b0316631da24f3e8e6040518263ffffffff1660e01b81526004016122c891906134de565b60206040518083038186803b1580156122e057600080fd5b505afa1580156122f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612318919061306e565b84848151811061232457fe5b602002602001015160800181815250508161028001516001600160a01b031663c634dfaa8e6040518263ffffffff1660e01b815260040161236591906134de565b60206040518083038186803b15801561237d57600080fd5b505afa158015612391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b5919061306e565b8484815181106123c157fe5b602002602001015160a00181815250508383815181106123dd57fe5b602002602001015160a00151600014612532578161028001516001600160a01b031663e78c9b3b8e6040518263ffffffff1660e01b815260040161242191906134de565b60206040518083038186803b15801561243957600080fd5b505afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612471919061306e565b84848151811061247d57fe5b602002602001015160600181815250508161028001516001600160a01b03166379ce6b8c8e6040518263ffffffff1660e01b81526004016124be91906134de565b60206040518083038186803b1580156124d657600080fd5b505afa1580156124ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250e91906130f3565b64ffffffffff1684848151811061252157fe5b602002602001015160c00181815250505b5050600101611800565b50612545612d2a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016156126b9576001600160a01b038b161561262257604051630cc7d40f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063198fa81e906125cf908e906004016134de565b60206040518083038186803b1580156125e757600080fd5b505afa1580156125fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261f919061306e565b81525b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663919cd40f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561267b57600080fd5b505afa15801561268f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b3919061306e565b60208201525b82827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3596f077310f7fc1f91ba351f9c629c5947ad69bd03c05b966040518263ffffffff1660e01b815260040161271b91906134de565b60206040518083038186803b15801561273357600080fd5b505afa158015612747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276b919061306e565b919e909d50909b50909950975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b15801561286357600080fd5b505afa158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b919061306e565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b1580156128d457600080fd5b505afa1580156128e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290c919061306e565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561294557600080fd5b505afa158015612959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297d919061306e565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b1580156129b657600080fd5b505afa1580156129ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ee919061306e565b93509350935093509193509193565b60006080821060405180604001604052806002815260200161373760f01b81525090612a455760405162461bcd60e51b8152600401612a3c91906135e8565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b81525090612a9e5760405162461bcd60e51b8152600401612a3c91906135e8565b50509051600160029092021c16151590565b60405180610540016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280612c62612cb9565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b60405180610140016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b8051612a5981613652565b600060208284031215612d60578081fd5b612d6a60206135fb565b9151825250919050565b80516001600160801b0381168114612a5957600080fd5b805164ffffffffff81168114612a5957600080fd5b805160ff81168114612a5957600080fd5b600060208284031215612dc2578081fd5b815161158d81613652565b60006020808385031215612ddf578182fd5b825167ffffffffffffffff80821115612df6578384fd5b818501915085601f830112612e09578384fd5b815181811115612e17578485fd5b8381029150612e278483016135fb565b8181528481019084860184860187018a1015612e41578788fd5b8795505b83861015612e6b57612e578a82612d44565b835260019590950194918601918601612e45565b5098975050505050505050565b600060208284031215612e89578081fd5b813561158d81613652565b60008060408385031215612ea6578081fd5b8235612eb181613652565b91506020830135612ec181613652565b809150509250929050565b600060208284031215612edd578081fd5b815167ffffffffffffffff80821115612ef4578283fd5b818401915084601f830112612f07578283fd5b815181811115612f15578384fd5b612f28601f8201601f19166020016135fb565b9150808252856020828501011115612f3e578384fd5b612f4f816020840160208601613622565b50949350505050565b6000610180808385031215612f6b578182fd5b612f74816135fb565b9050612f808484612d4f565b8152612f8f8460208501612d74565b6020820152612fa18460408501612d74565b6040820152612fb38460608501612d74565b6060820152612fc58460808501612d74565b6080820152612fd78460a08501612d74565b60a0820152612fe98460c08501612d8b565b60c0820152612ffb8460e08501612d44565b60e082015261010061300f85828601612d44565b9082015261012061302285858301612d44565b9082015261014061303585858301612d44565b9082015261016061304885858301612da0565b908201529392505050565b600060208284031215613064578081fd5b61158d8383612d4f565b60006020828403121561307f578081fd5b5051919050565b60008060006060848603121561309a578081fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156130c8578081fd5b84519350602085015192506040850151915060608501516130e88161366a565b939692955090935050565b600060208284031215613104578081fd5b815161158d8161366a565b6001600160a01b03169052565b60008282518085526020808601955080818302840101818601855b848110156133dd57601f19868403018952815161054061315885835161310f565b85820151818787015261316d8287018261349a565b91505060408083015186830382880152613187838261349a565b606085810151908901526080808601519089015260a0808601519089015260c0808601519089015260e0808601519089015261010080860151919450925090506131d382880182613494565b5050610120808301516131e882880182613494565b5050610140808301516131fd82880182613494565b50506101608083015161321282880182613494565b50506101808083015161322782880182613494565b50506101a08083015161323c828801826134c6565b50506101c080830151613251828801826134c6565b50506101e080830151613266828801826134c6565b50506102008083015161327b828801826134c6565b505061022080830151613290828801826134c6565b5050610240808301516132a5828801826134d3565b5050610260808301516132ba8288018261310f565b5050610280808301516132cf8288018261310f565b50506102a0808301516132e48288018261310f565b50506102c0808301516132f98288018261310f565b50506102e08281015190860152610300808301519086015261032080830151908601526103408083015190860152610360808301519086015261038080830151908601526103a080830151908601526103c080830151908601526103e08083015190860152610400808301519086015261042080830151908601526104408083015190860152610460808301519086015261048080830151908601526104a080830151908601526104c080830151908601526104e0808301519086015261050080830151908601526105209182015191909401529783019790830190600101613137565b5090979650505050505050565b6000815180845260208085019450808401835b8381101561348957815161341288825161310f565b838101518489015260408082015161342c828b0182613494565b5050606081810151908901526080808201519089015260a0808201519089015260c0808201519089015260e080820151908901526101008082015190890152610120908101519088015261014090960195908201906001016133fd565b509495945050505050565b15159052565b600081518084526134b2816020860160208601613622565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561354d5783516001600160a01b031683529284019291840191600101613528565b50909695505050505050565b600060a0825261356c60a083018761311c565b828103602084015261357e81876133ea565b915050836040830152825160608301526020830151608083015295945050505050565b6000606082526135b4606083018661311c565b60208301949094525060400152919050565b6000604082526135d960408301856133ea565b90508260208301529392505050565b60006020825261158d602083018461349a565b60405181810167ffffffffffffffff8111828210171561361a57600080fd5b604052919050565b60005b8381101561363d578181015183820152602001613625565b8381111561364c576000848401525b50505050565b6001600160a01b038116811461366757600080fd5b50565b64ffffffffff8116811461366757600080fdfea2646970667358221220a2a8daff06dbc645bcbf5036dd0dd49af337a8e18d8508c4eebef9dce69a115064736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UiPoolDataProviderV2.json b/eth_defi/abi/aave_v2/UiPoolDataProviderV2.json new file mode 100644 index 00000000..c78cc6a8 --- /dev/null +++ b/eth_defi/abi/aave_v2/UiPoolDataProviderV2.json @@ -0,0 +1,391 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UiPoolDataProviderV2", + "sourceName": "contracts/misc/UiPoolDataProviderV2.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IChainlinkAggregator", + "name": "_networkBaseTokenPriceInUsdProxyAggregator", + "type": "address" + }, + { + "internalType": "contract IChainlinkAggregator", + "name": "_marketReferenceCurrencyPriceInUsdProxyAggregator", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ETH_CURRENCY_UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MKRAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_bytes32", + "type": "bytes32" + } + ], + "name": "bytes32ToString", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInMarketReferenceCurrency", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProviderV2.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "marketReferenceCurrencyUnit", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "marketReferenceCurrencyPriceInUsd", + "type": "int256" + }, + { + "internalType": "int256", + "name": "networkBaseTokenPriceInUsd", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "networkBaseTokenPriceDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiPoolDataProviderV2.BaseCurrencyInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProviderV2.UserReserveData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "marketReferenceCurrencyPriceInUsdProxyAggregator", + "outputs": [ + { + "internalType": "contract IChainlinkAggregator", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "networkBaseTokenPriceInUsdProxyAggregator", + "outputs": [ + { + "internalType": "contract IChainlinkAggregator", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b506040516200234c3803806200234c833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c612264620000e8600039806109d252806112fd52806113bb52508061015f528061111452806111ae52506122646000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639201de551161005b5780639201de55146101005780639dd9e2ce14610120578063d22cf68a14610128578063ec489c211461013057610088565b80630496f53a1461008d5780633c1740ed146100ab57806351974cc0146100c0578063586c1442146100e0575b600080fd5b610095610151565b6040516100a29190612197565b60405180910390f35b6100b361015d565b6040516100a29190612006565b6100d36100ce366004611b30565b610181565b6040516100a291906120f8565b6100f36100ee366004611b14565b6107bf565b6040516100a2919061201a565b61011361010e366004611ae4565b6108b2565b6040516100a29190612184565b6100b36109b8565b6100b36109d0565b61014361013e366004611b14565b6109f4565b6040516100a2929190612067565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606000836001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101be57600080fd5b505afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190611a1d565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023357600080fd5b505afa158015610247573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261026f9190810190611a39565b9050610279611760565b604051634417a58360e01b81526001600160a01b03841690634417a583906102a5908890600401612006565b60206040518083038186803b1580156102bd57600080fd5b505afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190611cef565b905060606001600160a01b03861661030e576000610311565b82515b67ffffffffffffffff8111801561032757600080fd5b5060405190808252806020026020018201604052801561036157816020015b61034e611773565b8152602001906001900390816103465790505b50905060005b83518110156107b2576103786117bb565b856001600160a01b03166335ea6a7586848151811061039357fe5b60200260200101516040518263ffffffff1660e01b81526004016103b79190612006565b6101806040518083038186803b1580156103d057600080fd5b505afa1580156103e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104089190611bf4565b905084828151811061041657fe5b602002602001015183838151811061042a57fe5b60209081029190910101516001600160a01b03918216905260e0820151604051630ed1279f60e11b8152911690631da24f3e9061046b908b90600401612006565b60206040518083038186803b15801561048357600080fd5b505afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190611afc565b8383815181106104c757fe5b60209081029190910181015101526104df848361146e565b8383815181106104eb57fe5b602090810291909101015190151560409091015261050984836114cf565b156107a9578061012001516001600160a01b0316631da24f3e896040518263ffffffff1660e01b815260040161053f9190612006565b60206040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f9190611afc565b83838151811061059b57fe5b602002602001015160800181815250508061010001516001600160a01b031663c634dfaa896040518263ffffffff1660e01b81526004016105dc9190612006565b60206040518083038186803b1580156105f457600080fd5b505afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190611afc565b83838151811061063857fe5b602002602001015160a001818152505082828151811061065457fe5b602002602001015160a001516000146107a9578061010001516001600160a01b031663e78c9b3b896040518263ffffffff1660e01b81526004016106989190612006565b60206040518083038186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190611afc565b8383815181106106f457fe5b602002602001015160600181815250508061010001516001600160a01b03166379ce6b8c896040518263ffffffff1660e01b81526004016107359190612006565b60206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611d4a565b64ffffffffff1683838151811061079857fe5b602002602001015160c00181815250505b50600101610367565b5093505050505b92915050565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fc57600080fd5b505afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611a1d565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ab9190810190611a39565b9392505050565b606060005b60208160ff161080156108e55750828160ff16602081106108d457fe5b1a60f81b6001600160f81b03191615155b156108f2576001016108b7565b60608160ff1667ffffffffffffffff8111801561090e57600080fd5b506040519080825280601f01601f191660200182016040528015610939576020820181803683370190505b509050600091505b60208260ff1610801561096f5750838260ff166020811061095e57fe5b1a60f81b6001600160f81b03191615155b156108ab57838260ff166020811061098357fe5b1a60f81b818360ff168151811061099657fe5b60200101906001600160f81b031916908160001a905350600190910190610941565b739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606109fe611826565b6000836001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3957600080fd5b505afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a719190611a1d565b90506000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190611a1d565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610b2357600080fd5b505afa158015610b37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b5f9190810190611a39565b90506060815167ffffffffffffffff81118015610b7b57600080fd5b50604051908082528060200260200182016040528015610bb557816020015b610ba2611851565b815260200190600190039081610b9a5790505b50905060005b825181101561110957610bcc611851565b828281518110610bd857fe5b60200260200101519050838281518110610bee57fe5b60209081029190910101516001600160a01b03168152610c0c6117bb565b81516040516335ea6a7560e01b81526001600160a01b038816916335ea6a7591610c399190600401612006565b6101806040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a9190611bf4565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b815292935089169163b3596f0791610d4e91600401612006565b60206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e9190611afc565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a0823191610dd791600401612006565b60206040518083038186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e279190611afc565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015610e6f57600080fd5b505afa158015610e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea79190611d0a565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190611afc565b61036083015281516001600160a01b0316739f8f72aa9304c8b593d555f12ef6589cc3a579a21415610ffa57600082600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160206040518083038186803b158015610fac57600080fd5b505afa158015610fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe49190611afc565b9050610fef816108b2565b604084015250611079565b81600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110739190810190611b68565b60408301525b805161108490611520565b60e0870152606086015260c085015260a0840152608083015280516110a89061154b565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c08201516110e490611587565b6104008601526103e08501526103c08401526103a09092019190915250600101610bbb565b50611112611826565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190611afc565b8160400181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190611d66565b60ff16606082015260408051638c89b64f60e01b815290516001600160a01b03871691638c89b64f916004808301926020929190829003018186803b15801561128557600080fd5b505afa9250505080156112b5575060408051601f3d908101601f191682019092526112b291810190611afc565b60015b611397573d8080156112e3576040519150601f19603f3d011682016040523d82523d6000602084013e6112e8565b606091505b50670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138c9190611afc565b602083015250611461565b80670de0b6b3a7640000141561145457670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141257600080fd5b505afa158015611426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144a9190611afc565b602083015261145f565b808252602082018190525b505b9095509350505050915091565b60006080821060405180604001604052806002815260200161373760f01b815250906114b65760405162461bcd60e51b81526004016114ad9190612184565b60405180910390fd5b5050815160016002830281019190911c16151592915050565b60006080821060405180604001604052806002815260200161373760f01b8152509061150e5760405162461bcd60e51b81526004016114ad9190612184565b50509051600160029092021c16151590565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe9190611afc565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561163757600080fd5b505afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f9190611afc565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116a857600080fd5b505afa1580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e09190611afc565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561171957600080fd5b505afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117519190611afc565b93509350935093509193509193565b6040518060200160405280600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b6040518061018001604052806117cf611760565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b60405180610420016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80516107b981612203565b6000602082840312156119cc578081fd5b6119d660206121a0565b9151825250919050565b80516001600160801b03811681146107b957600080fd5b805164ffffffffff811681146107b957600080fd5b805160ff811681146107b957600080fd5b600060208284031215611a2e578081fd5b81516108ab81612203565b60006020808385031215611a4b578182fd5b825167ffffffffffffffff80821115611a62578384fd5b818501915085601f830112611a75578384fd5b815181811115611a83578485fd5b8381029150611a938483016121a0565b8181528481019084860184860187018a1015611aad578788fd5b8795505b83861015611ad757611ac38a826119b0565b835260019590950194918601918601611ab1565b5098975050505050505050565b600060208284031215611af5578081fd5b5035919050565b600060208284031215611b0d578081fd5b5051919050565b600060208284031215611b25578081fd5b81356108ab81612203565b60008060408385031215611b42578081fd5b8235611b4d81612203565b91506020830135611b5d81612203565b809150509250929050565b600060208284031215611b79578081fd5b815167ffffffffffffffff80821115611b90578283fd5b818401915084601f830112611ba3578283fd5b815181811115611bb1578384fd5b611bc4601f8201601f19166020016121a0565b9150808252856020828501011115611bda578384fd5b611beb8160208401602086016121d3565b50949350505050565b6000610180808385031215611c07578182fd5b611c10816121a0565b9050611c1c84846119bb565b8152611c2b84602085016119e0565b6020820152611c3d84604085016119e0565b6040820152611c4f84606085016119e0565b6060820152611c6184608085016119e0565b6080820152611c738460a085016119e0565b60a0820152611c858460c085016119f7565b60c0820152611c978460e085016119b0565b60e0820152610100611cab858286016119b0565b90820152610120611cbe858583016119b0565b90820152610140611cd1858583016119b0565b90820152610160611ce485858301611a0c565b908201529392505050565b600060208284031215611d00578081fd5b6108ab83836119bb565b60008060008060808587031215611d1f578182fd5b8451935060208501519250604085015191506060850151611d3f8161221b565b939692955090935050565b600060208284031215611d5b578081fd5b81516108ab8161221b565b600060208284031215611d77578081fd5b6108ab8383611a0c565b6000610420611d91848451611fa8565b6020830151816020860152611da882860182611fbb565b91505060408301518482036040860152611dc28282611fbb565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151611e0a82870182611fb5565b505061012080840151611e1f82870182611fb5565b505061014080840151611e3482870182611fb5565b505061016080840151611e4982870182611fb5565b505061018080840151611e5e82870182611fb5565b50506101a080840151611e7382870182611fe7565b50506101c080840151611e8882870182611fe7565b50506101e080840151611e9d82870182611fe7565b505061020080840151611eb282870182611fe7565b505061022080840151611ec782870182611fe7565b505061024080840151611edc82870182611ff4565b505061026080840151611ef182870182611fa8565b505061028080840151611f0682870182611fa8565b50506102a080840151611f1b82870182611fa8565b50506102c080840151611f3082870182611fa8565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a080840151908501526103c080840151908501526103e080840151908501526104009283015192909301919091525090565b6001600160a01b03169052565b15159052565b60008151808452611fd38160208601602086016121d3565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b60ff169052565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b8181101561205b5783516001600160a01b031683529284019291840191600101612036565b50909695505050505050565b600060a0820160a0835280855180835260c0850191506020925060c0838202860101838801855b838110156120bc5760bf198884030185526120aa838351611d81565b9486019492509085019060010161208e565b5050809450505050835181840152808401516040840152506040830151606083015260608301516120f06080840182611fff565b509392505050565b602080825282518282018190526000919060409081850190868401855b8281101561217757815161212981516121c7565b8552808701518786015285810151151586860152606080820151908601526080808201519086015260a0808201519086015260c0908101519085015260e09093019290850190600101612115565b5091979650505050505050565b6000602082526108ab6020830184611fbb565b90815260200190565b60405181810167ffffffffffffffff811182821017156121bf57600080fd5b604052919050565b6001600160a01b031690565b60005b838110156121ee5781810151838201526020016121d6565b838111156121fd576000848401525b50505050565b6001600160a01b038116811461221857600080fd5b50565b64ffffffffff8116811461221857600080fdfea26469706673582212202904bd24e0f01891572048b59b76059c0739624378351fad6ebd6c4ad4194d1464736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639201de551161005b5780639201de55146101005780639dd9e2ce14610120578063d22cf68a14610128578063ec489c211461013057610088565b80630496f53a1461008d5780633c1740ed146100ab57806351974cc0146100c0578063586c1442146100e0575b600080fd5b610095610151565b6040516100a29190612197565b60405180910390f35b6100b361015d565b6040516100a29190612006565b6100d36100ce366004611b30565b610181565b6040516100a291906120f8565b6100f36100ee366004611b14565b6107bf565b6040516100a2919061201a565b61011361010e366004611ae4565b6108b2565b6040516100a29190612184565b6100b36109b8565b6100b36109d0565b61014361013e366004611b14565b6109f4565b6040516100a2929190612067565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606000836001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101be57600080fd5b505afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190611a1d565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023357600080fd5b505afa158015610247573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261026f9190810190611a39565b9050610279611760565b604051634417a58360e01b81526001600160a01b03841690634417a583906102a5908890600401612006565b60206040518083038186803b1580156102bd57600080fd5b505afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190611cef565b905060606001600160a01b03861661030e576000610311565b82515b67ffffffffffffffff8111801561032757600080fd5b5060405190808252806020026020018201604052801561036157816020015b61034e611773565b8152602001906001900390816103465790505b50905060005b83518110156107b2576103786117bb565b856001600160a01b03166335ea6a7586848151811061039357fe5b60200260200101516040518263ffffffff1660e01b81526004016103b79190612006565b6101806040518083038186803b1580156103d057600080fd5b505afa1580156103e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104089190611bf4565b905084828151811061041657fe5b602002602001015183838151811061042a57fe5b60209081029190910101516001600160a01b03918216905260e0820151604051630ed1279f60e11b8152911690631da24f3e9061046b908b90600401612006565b60206040518083038186803b15801561048357600080fd5b505afa158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190611afc565b8383815181106104c757fe5b60209081029190910181015101526104df848361146e565b8383815181106104eb57fe5b602090810291909101015190151560409091015261050984836114cf565b156107a9578061012001516001600160a01b0316631da24f3e896040518263ffffffff1660e01b815260040161053f9190612006565b60206040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f9190611afc565b83838151811061059b57fe5b602002602001015160800181815250508061010001516001600160a01b031663c634dfaa896040518263ffffffff1660e01b81526004016105dc9190612006565b60206040518083038186803b1580156105f457600080fd5b505afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190611afc565b83838151811061063857fe5b602002602001015160a001818152505082828151811061065457fe5b602002602001015160a001516000146107a9578061010001516001600160a01b031663e78c9b3b896040518263ffffffff1660e01b81526004016106989190612006565b60206040518083038186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190611afc565b8383815181106106f457fe5b602002602001015160600181815250508061010001516001600160a01b03166379ce6b8c896040518263ffffffff1660e01b81526004016107359190612006565b60206040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107859190611d4a565b64ffffffffff1683838151811061079857fe5b602002602001015160c00181815250505b50600101610367565b5093505050505b92915050565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fc57600080fd5b505afa158015610810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108349190611a1d565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ab9190810190611a39565b9392505050565b606060005b60208160ff161080156108e55750828160ff16602081106108d457fe5b1a60f81b6001600160f81b03191615155b156108f2576001016108b7565b60608160ff1667ffffffffffffffff8111801561090e57600080fd5b506040519080825280601f01601f191660200182016040528015610939576020820181803683370190505b509050600091505b60208260ff1610801561096f5750838260ff166020811061095e57fe5b1a60f81b6001600160f81b03191615155b156108ab57838260ff166020811061098357fe5b1a60f81b818360ff168151811061099657fe5b60200101906001600160f81b031916908160001a905350600190910190610941565b739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606109fe611826565b6000836001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3957600080fd5b505afa158015610a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a719190611a1d565b90506000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190611a1d565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610b2357600080fd5b505afa158015610b37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b5f9190810190611a39565b90506060815167ffffffffffffffff81118015610b7b57600080fd5b50604051908082528060200260200182016040528015610bb557816020015b610ba2611851565b815260200190600190039081610b9a5790505b50905060005b825181101561110957610bcc611851565b828281518110610bd857fe5b60200260200101519050838281518110610bee57fe5b60209081029190910101516001600160a01b03168152610c0c6117bb565b81516040516335ea6a7560e01b81526001600160a01b038816916335ea6a7591610c399190600401612006565b6101806040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a9190611bf4565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b815292935089169163b3596f0791610d4e91600401612006565b60206040518083038186803b158015610d6657600080fd5b505afa158015610d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9e9190611afc565b61038083015281516102608301516040516370a0823160e01b81526001600160a01b03909216916370a0823191610dd791600401612006565b60206040518083038186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e279190611afc565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015610e6f57600080fd5b505afa158015610e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea79190611d0a565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b158015610f0957600080fd5b505afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f419190611afc565b61036083015281516001600160a01b0316739f8f72aa9304c8b593d555f12ef6589cc3a579a21415610ffa57600082600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160206040518083038186803b158015610fac57600080fd5b505afa158015610fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe49190611afc565b9050610fef816108b2565b604084015250611079565b81600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110739190810190611b68565b60408301525b805161108490611520565b60e0870152606086015260c085015260a0840152608083015280516110a89061154b565b1515610140860152151561012085015215156101808401521515610160830152608082015115156101008301526102c08201516110e490611587565b6104008601526103e08501526103c08401526103a09092019190915250600101610bbb565b50611112611826565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a39190611afc565b8160400181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190611d66565b60ff16606082015260408051638c89b64f60e01b815290516001600160a01b03871691638c89b64f916004808301926020929190829003018186803b15801561128557600080fd5b505afa9250505080156112b5575060408051601f3d908101601f191682019092526112b291810190611afc565b60015b611397573d8080156112e3576040519150601f19603f3d011682016040523d82523d6000602084013e6112e8565b606091505b50670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561135457600080fd5b505afa158015611368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138c9190611afc565b602083015250611461565b80670de0b6b3a7640000141561145457670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141257600080fd5b505afa158015611426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144a9190611afc565b602083015261145f565b808252602082018190525b505b9095509350505050915091565b60006080821060405180604001604052806002815260200161373760f01b815250906114b65760405162461bcd60e51b81526004016114ad9190612184565b60405180910390fd5b5050815160016002830281019190911c16151592915050565b60006080821060405180604001604052806002815260200161373760f01b8152509061150e5760405162461bcd60e51b81526004016114ad9190612184565b50509051600160029092021c16151590565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b600080600080846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156115c657600080fd5b505afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe9190611afc565b856001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561163757600080fd5b505afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f9190611afc565b866001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116a857600080fd5b505afa1580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e09190611afc565b876001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561171957600080fd5b505afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117519190611afc565b93509350935093509193509193565b6040518060200160405280600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b6040518061018001604052806117cf611760565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b60405180610420016040528060006001600160a01b031681526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160001515815260200160001515815260200160001515815260200160001515815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b03168152602001600064ffffffffff16815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80516107b981612203565b6000602082840312156119cc578081fd5b6119d660206121a0565b9151825250919050565b80516001600160801b03811681146107b957600080fd5b805164ffffffffff811681146107b957600080fd5b805160ff811681146107b957600080fd5b600060208284031215611a2e578081fd5b81516108ab81612203565b60006020808385031215611a4b578182fd5b825167ffffffffffffffff80821115611a62578384fd5b818501915085601f830112611a75578384fd5b815181811115611a83578485fd5b8381029150611a938483016121a0565b8181528481019084860184860187018a1015611aad578788fd5b8795505b83861015611ad757611ac38a826119b0565b835260019590950194918601918601611ab1565b5098975050505050505050565b600060208284031215611af5578081fd5b5035919050565b600060208284031215611b0d578081fd5b5051919050565b600060208284031215611b25578081fd5b81356108ab81612203565b60008060408385031215611b42578081fd5b8235611b4d81612203565b91506020830135611b5d81612203565b809150509250929050565b600060208284031215611b79578081fd5b815167ffffffffffffffff80821115611b90578283fd5b818401915084601f830112611ba3578283fd5b815181811115611bb1578384fd5b611bc4601f8201601f19166020016121a0565b9150808252856020828501011115611bda578384fd5b611beb8160208401602086016121d3565b50949350505050565b6000610180808385031215611c07578182fd5b611c10816121a0565b9050611c1c84846119bb565b8152611c2b84602085016119e0565b6020820152611c3d84604085016119e0565b6040820152611c4f84606085016119e0565b6060820152611c6184608085016119e0565b6080820152611c738460a085016119e0565b60a0820152611c858460c085016119f7565b60c0820152611c978460e085016119b0565b60e0820152610100611cab858286016119b0565b90820152610120611cbe858583016119b0565b90820152610140611cd1858583016119b0565b90820152610160611ce485858301611a0c565b908201529392505050565b600060208284031215611d00578081fd5b6108ab83836119bb565b60008060008060808587031215611d1f578182fd5b8451935060208501519250604085015191506060850151611d3f8161221b565b939692955090935050565b600060208284031215611d5b578081fd5b81516108ab8161221b565b600060208284031215611d77578081fd5b6108ab8383611a0c565b6000610420611d91848451611fa8565b6020830151816020860152611da882860182611fbb565b91505060408301518482036040860152611dc28282611fbb565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151611e0a82870182611fb5565b505061012080840151611e1f82870182611fb5565b505061014080840151611e3482870182611fb5565b505061016080840151611e4982870182611fb5565b505061018080840151611e5e82870182611fb5565b50506101a080840151611e7382870182611fe7565b50506101c080840151611e8882870182611fe7565b50506101e080840151611e9d82870182611fe7565b505061020080840151611eb282870182611fe7565b505061022080840151611ec782870182611fe7565b505061024080840151611edc82870182611ff4565b505061026080840151611ef182870182611fa8565b505061028080840151611f0682870182611fa8565b50506102a080840151611f1b82870182611fa8565b50506102c080840151611f3082870182611fa8565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a080840151908501526103c080840151908501526103e080840151908501526104009283015192909301919091525090565b6001600160a01b03169052565b15159052565b60008151808452611fd38160208601602086016121d3565b601f01601f19169290920160200192915050565b6001600160801b03169052565b64ffffffffff169052565b60ff169052565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b8181101561205b5783516001600160a01b031683529284019291840191600101612036565b50909695505050505050565b600060a0820160a0835280855180835260c0850191506020925060c0838202860101838801855b838110156120bc5760bf198884030185526120aa838351611d81565b9486019492509085019060010161208e565b5050809450505050835181840152808401516040840152506040830151606083015260608301516120f06080840182611fff565b509392505050565b602080825282518282018190526000919060409081850190868401855b8281101561217757815161212981516121c7565b8552808701518786015285810151151586860152606080820151908601526080808201519086015260a0808201519086015260c0908101519085015260e09093019290850190600101612115565b5091979650505050505050565b6000602082526108ab6020830184611fbb565b90815260200190565b60405181810167ffffffffffffffff811182821017156121bf57600080fd5b604052919050565b6001600160a01b031690565b60005b838110156121ee5781810151838201526020016121d6565b838111156121fd576000848401525b50505050565b6001600160a01b038116811461221857600080fd5b50565b64ffffffffff8116811461221857600080fdfea26469706673582212202904bd24e0f01891572048b59b76059c0739624378351fad6ebd6c4ad4194d1464736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UiPoolDataProviderV2V3.json b/eth_defi/abi/aave_v2/UiPoolDataProviderV2V3.json new file mode 100644 index 00000000..d9f65671 --- /dev/null +++ b/eth_defi/abi/aave_v2/UiPoolDataProviderV2V3.json @@ -0,0 +1,501 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UiPoolDataProviderV2V3", + "sourceName": "contracts/misc/UiPoolDataProviderV2V3.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IChainlinkAggregator", + "name": "_networkBaseTokenPriceInUsdProxyAggregator", + "type": "address" + }, + { + "internalType": "contract IChainlinkAggregator", + "name": "_marketReferenceCurrencyPriceInUsdProxyAggregator", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ETH_CURRENCY_UNIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MKRAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_bytes32", + "type": "bytes32" + } + ], + "name": "bytes32ToString", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseLTVasCollateral", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveLiquidationBonus", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactor", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "borrowingEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "stableBorrowRateEnabled", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isActive", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isFrozen", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "liquidityIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowIndex", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "liquidityRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "variableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "stableBorrowRate", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "lastUpdateTimestamp", + "type": "uint40" + }, + { + "internalType": "address", + "name": "aTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "stableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "variableDebtTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "interestRateStrategyAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "availableLiquidity", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPrincipalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "averageStableRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableDebtLastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalScaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "priceInMarketReferenceCurrency", + "type": "uint256" + }, + { + "internalType": "address", + "name": "priceOracle", + "type": "address" + }, + { + "internalType": "uint256", + "name": "variableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "variableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableRateSlope2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseStableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseVariableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "optimalUsageRatio", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isSiloedBorrowing", + "type": "bool" + }, + { + "internalType": "uint128", + "name": "accruedToTreasury", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "unbacked", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "isolationModeTotalDebt", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "flashLoanEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "debtCeiling", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "debtCeilingDecimals", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "eModeCategoryId", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "borrowCap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyCap", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "eModeLtv", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "eModeLiquidationThreshold", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "eModeLiquidationBonus", + "type": "uint16" + }, + { + "internalType": "address", + "name": "eModePriceSource", + "type": "address" + }, + { + "internalType": "string", + "name": "eModeLabel", + "type": "string" + }, + { + "internalType": "bool", + "name": "borrowableInIsolation", + "type": "bool" + } + ], + "internalType": "struct IUiPoolDataProviderV3.AggregatedReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "marketReferenceCurrencyUnit", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "marketReferenceCurrencyPriceInUsd", + "type": "int256" + }, + { + "internalType": "int256", + "name": "networkBaseTokenPriceInUsd", + "type": "int256" + }, + { + "internalType": "uint8", + "name": "networkBaseTokenPriceDecimals", + "type": "uint8" + } + ], + "internalType": "struct IUiPoolDataProviderV3.BaseCurrencyInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + } + ], + "name": "getReservesList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserReservesData", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "scaledATokenBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "usageAsCollateralEnabledOnUser", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stableBorrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "scaledVariableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "principalStableDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stableBorrowLastUpdateTimestamp", + "type": "uint256" + } + ], + "internalType": "struct IUiPoolDataProviderV3.UserReserveData[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "marketReferenceCurrencyPriceInUsdProxyAggregator", + "outputs": [ + { + "internalType": "contract IChainlinkAggregator", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "networkBaseTokenPriceInUsdProxyAggregator", + "outputs": [ + { + "internalType": "contract IChainlinkAggregator", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c06040523480156200001157600080fd5b506040516200294a3803806200294a833981016040819052620000349162000053565b6001600160601b0319606092831b8116608052911b1660a052620000aa565b6000806040838503121562000066578182fd5b8251620000738162000091565b6020840151909250620000868162000091565b809150509250929050565b6001600160a01b0381168114620000a757600080fd5b50565b60805160601c60a05160601c612862620000e8600039806109d652806114d7528061159552508061016052806112ee528061138852506128626000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639201de551161005b5780639201de55146101015780639dd9e2ce14610121578063d22cf68a14610129578063ec489c211461013157610088565b80630496f53a1461008d5780633c1740ed146100ab57806351974cc0146100c0578063586c1442146100e1575b600080fd5b610095610152565b6040516100a291906127a1565b60405180910390f35b6100b361015e565b6040516100a29190612603565b6100d36100ce366004611fab565b610182565b6040516100a29291906126f5565b6100f46100ef366004611f8f565b6107c3565b6040516100a29190612617565b61011461010f366004611f5f565b6108b6565b6040516100a2919061278e565b6100b36109bc565b6100b36109d4565b61014461013f366004611f8f565b6109f8565b6040516100a2929190612664565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600080846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c057600080fd5b505afa1580156101d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f89190611e98565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023557600080fd5b505afa158015610249573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102719190810190611eb4565b905061027b611b47565b604051634417a58360e01b81526001600160a01b03841690634417a583906102a7908990600401612603565b60206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f7919061216a565b905060606001600160a01b038716610310576000610313565b82515b67ffffffffffffffff8111801561032957600080fd5b5060405190808252806020026020018201604052801561036357816020015b610350611b5a565b8152602001906001900390816103485790505b50905060005b83518110156107b45761037a611ba2565b856001600160a01b03166335ea6a7586848151811061039557fe5b60200260200101516040518263ffffffff1660e01b81526004016103b99190612603565b6101806040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040a919061206f565b905084828151811061041857fe5b602002602001015183838151811061042c57fe5b60209081029190910101516001600160a01b03918216905260e0820151604051630ed1279f60e11b8152911690631da24f3e9061046d908c90600401612603565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd9190611f77565b8383815181106104c957fe5b60209081029190910181015101526104e18483611648565b8383815181106104ed57fe5b602090810291909101015190151560409091015261050b84836116aa565b156107ab578061012001516001600160a01b0316631da24f3e8a6040518263ffffffff1660e01b81526004016105419190612603565b60206040518083038186803b15801561055957600080fd5b505afa15801561056d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105919190611f77565b83838151811061059d57fe5b602002602001015160800181815250508061010001516001600160a01b031663c634dfaa8a6040518263ffffffff1660e01b81526004016105de9190612603565b60206040518083038186803b1580156105f657600080fd5b505afa15801561060a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062e9190611f77565b83838151811061063a57fe5b602002602001015160a001818152505082828151811061065657fe5b602002602001015160a001516000146107ab578061010001516001600160a01b031663e78c9b3b8a6040518263ffffffff1660e01b815260040161069a9190612603565b60206040518083038186803b1580156106b257600080fd5b505afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ea9190611f77565b8383815181106106f657fe5b602002602001015160600181815250508061010001516001600160a01b03166379ce6b8c8a6040518263ffffffff1660e01b81526004016107379190612603565b60206040518083038186803b15801561074f57600080fd5b505afa158015610763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078791906121c5565b64ffffffffff1683838151811061079a57fe5b602002602001015160c00181815250505b50600101610369565b50976000975095505050505050565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561080057600080fd5b505afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190611e98565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561087357600080fd5b505afa158015610887573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108af9190810190611eb4565b9392505050565b606060005b60208160ff161080156108e95750828160ff16602081106108d857fe5b1a60f81b6001600160f81b03191615155b156108f6576001016108bb565b60608160ff1667ffffffffffffffff8111801561091257600080fd5b506040519080825280601f01601f19166020018201604052801561093d576020820181803683370190505b509050600091505b60208260ff161080156109735750838260ff166020811061096257fe5b1a60f81b6001600160f81b03191615155b156108af57838260ff166020811061098757fe5b1a60f81b818360ff168151811061099a57fe5b60200101906001600160f81b031916908160001a905350600190910190610945565b739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610a02611c0d565b6000836001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190611e98565b90506000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ab257600080fd5b505afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea9190611e98565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610b2757600080fd5b505afa158015610b3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b639190810190611eb4565b90506060815167ffffffffffffffff81118015610b7f57600080fd5b50604051908082528060200260200182016040528015610bb957816020015b610ba6611c38565b815260200190600190039081610b9e5790505b50905060005b82518110156112e357610bd0611c38565b828281518110610bdc57fe5b60200260200101519050838281518110610bf257fe5b60209081029190910101516001600160a01b03168152610c10611ba2565b81516040516335ea6a7560e01b81526001600160a01b038816916335ea6a7591610c3d9190600401612603565b6101806040518083038186803b158015610c5657600080fd5b505afa158015610c6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8e919061206f565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b815292935089169163b3596f0791610d5291600401612603565b60206040518083038186803b158015610d6a57600080fd5b505afa158015610d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da29190611f77565b6103808301528151604051630495f95f60e51b81526001600160a01b038916916392bf2be091610dd59190600401612603565b60206040518083038186803b158015610ded57600080fd5b505afa158015610e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e259190611e98565b6001600160a01b039081166103a084015282516102608401516040516370a0823160e01b815291909216916370a0823191610e639190600401612603565b60206040518083038186803b158015610e7b57600080fd5b505afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190611f77565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f339190612185565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b158015610f9557600080fd5b505afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190611f77565b61036083015281516001600160a01b0316739f8f72aa9304c8b593d555f12ef6589cc3a579a2141561110f57600082600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160206040518083038186803b15801561103857600080fd5b505afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611f77565b9050600083600001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e99190611f77565b90506110f4826108b6565b6040850152611102816108b6565b60208501525061120f9050565b81600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561114c57600080fd5b505afa158015611160573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111889190810190611fe3565b826040018190525081600001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156111cd57600080fd5b505afa1580156111e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112099190810190611fe3565b60208301525b805161121a906116fb565b60e0870152606086015260c085015260a08401526080830152805161123e90611726565b151561014086015215156101208501521515610180840152151561016083015260808201511515610100830152611273611dee565b611287836102c001518c8560000151611762565b80516103c085015260208101516103e085015260408101516104008501526060810151610420850152608081015161044085015260a081015161046085015260c001516104808401525050600161054090910181905201610bbf565b506112ec611c0d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561134557600080fd5b505afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d9190611f77565b8160400181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141791906121e1565b60ff16606082015260408051638c89b64f60e01b815290516001600160a01b03871691638c89b64f916004808301926020929190829003018186803b15801561145f57600080fd5b505afa92505050801561148f575060408051601f3d908101601f1916820190925261148c91810190611f77565b60015b611571573d8080156114bd576040519150601f19603f3d011682016040523d82523d6000602084013e6114c2565b606091505b50670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561152e57600080fd5b505afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190611f77565b60208301525061163b565b80670de0b6b3a7640000141561162e57670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ec57600080fd5b505afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190611f77565b6020830152611639565b808252602082018190525b505b9095509350505050915091565b60006080821060405180604001604052806002815260200161373760f01b815250906116905760405162461bcd60e51b8152600401611687919061278e565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b815250906116e95760405162461bcd60e51b8152600401611687919061278e565b50509051600160029092021c16151590565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b61176a611dee565b611772611dee565b846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190611f77565b816000018181525050846001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561182557600080fd5b505afa158015611839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185d9190611f77565b816020018181525050846001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561189f57600080fd5b505afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d79190611f77565b816040018181525050846001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561191957600080fd5b505afa15801561192d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119519190611f77565b816060018181525050846001600160a01b031663b25895446040518163ffffffff1660e01b815260040160206040518083038186803b15801561199357600080fd5b505afa1580156119a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cb9190611f77565b8160a0018181525050846001600160a01b031663a15f30ac6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0d57600080fd5b505afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190611f77565b8160c0018181525050836001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8757600080fd5b505afa158015611a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abf9190611e98565b6001600160a01b031663bb85c0bb846040518263ffffffff1660e01b8152600401611aea9190612603565b60206040518083038186803b158015611b0257600080fd5b505afa158015611b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3a9190611f77565b6080820152949350505050565b6040518060200160405280600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280611bb6611b47565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b604080516106c08101825260008082526060602083018190529282018390528282018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082018190526105e0820181905261060082018190526106208201819052610640820181905261066082018190526106808201929092526106a081019190915290565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80516116a481612801565b600060208284031215611e47578081fd5b611e5160206127aa565b9151825250919050565b80516001600160801b03811681146116a457600080fd5b805164ffffffffff811681146116a457600080fd5b805160ff811681146116a457600080fd5b600060208284031215611ea9578081fd5b81516108af81612801565b60006020808385031215611ec6578182fd5b825167ffffffffffffffff80821115611edd578384fd5b818501915085601f830112611ef0578384fd5b815181811115611efe578485fd5b8381029150611f0e8483016127aa565b8181528481019084860184860187018a1015611f28578788fd5b8795505b83861015611f5257611f3e8a82611e2b565b835260019590950194918601918601611f2c565b5098975050505050505050565b600060208284031215611f70578081fd5b5035919050565b600060208284031215611f88578081fd5b5051919050565b600060208284031215611fa0578081fd5b81356108af81612801565b60008060408385031215611fbd578081fd5b8235611fc881612801565b91506020830135611fd881612801565b809150509250929050565b600060208284031215611ff4578081fd5b815167ffffffffffffffff8082111561200b578283fd5b818401915084601f83011261201e578283fd5b81518181111561202c578384fd5b61203f601f8201601f19166020016127aa565b9150808252856020828501011115612055578384fd5b6120668160208401602086016127d1565b50949350505050565b6000610180808385031215612082578182fd5b61208b816127aa565b90506120978484611e36565b81526120a68460208501611e5b565b60208201526120b88460408501611e5b565b60408201526120ca8460608501611e5b565b60608201526120dc8460808501611e5b565b60808201526120ee8460a08501611e5b565b60a08201526121008460c08501611e72565b60c08201526121128460e08501611e2b565b60e082015261010061212685828601611e2b565b9082015261012061213985858301611e2b565b9082015261014061214c85858301611e2b565b9082015261016061215f85858301611e87565b908201529392505050565b60006020828403121561217b578081fd5b6108af8383611e36565b6000806000806080858703121561219a578182fd5b84519350602085015192506040850151915060608501516121ba81612819565b939692955090935050565b6000602082840312156121d6578081fd5b81516108af81612819565b6000602082840312156121f2578081fd5b6108af8383611e87565b60006106c061220c84845161259d565b6020830151816020860152612223828601826125b0565b9150506040830151848203604086015261223d82826125b0565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151612285828701826125aa565b50506101208084015161229a828701826125aa565b5050610140808401516122af828701826125aa565b5050610160808401516122c4828701826125aa565b5050610180808401516122d9828701826125aa565b50506101a0808401516122ee828701826125dc565b50506101c080840151612303828701826125dc565b50506101e080840151612318828701826125dc565b50506102008084015161232d828701826125dc565b505061022080840151612342828701826125dc565b505061024080840151612357828701826125f1565b50506102608084015161236c8287018261259d565b5050610280808401516123818287018261259d565b50506102a0808401516123968287018261259d565b50506102c0808401516123ab8287018261259d565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a0808401516124028287018261259d565b50506103c083810151908501526103e08084015190850152610400808401519085015261042080840151908501526104408084015190850152610460808401519085015261048080840151908501526104a080840151612464828701826125aa565b50506104c080840151612479828701826125aa565b50506104e08084015161248e828701826125dc565b5050610500808401516124a3828701826125dc565b5050610520808401516124b8828701826125dc565b5050610540808401516124cd828701826125aa565b5050610560838101519085015261058080840151908501526105a0808401516124f8828701826125fc565b50506105c083810151908501526105e0808401519085015261060080840151612523828701826125e9565b505061062080840151612538828701826125e9565b50506106408084015161254d828701826125e9565b5050610660808401516125628287018261259d565b5050610680808401518583038287015261257c83826125b0565b925050506106a080840151612593828701826125aa565b5090949350505050565b6001600160a01b03169052565b15159052565b600081518084526125c88160208601602086016127d1565b601f01601f19169290920160200192915050565b6001600160801b03169052565b61ffff169052565b64ffffffffff169052565b60ff169052565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156126585783516001600160a01b031683529284019291840191600101612633565b50909695505050505050565b600060a0820160a0835280855180835260c0850191506020925060c0838202860101838801855b838110156126b95760bf198884030185526126a78383516121fc565b9486019492509085019060010161268b565b5050809450505050835181840152808401516040840152506040830151606083015260608301516126ed60808401826125fc565b509392505050565b6040808252835182820181905260009190606090818501906020808901865b8381101561277557815180516001600160a01b0316865283810151848701528781015115158887015286810151878701526080808201519087015260a0808201519087015260c0908101519086015260e09094019390820190600101612714565b505082955060ff88168188015250505050509392505050565b6000602082526108af60208301846125b0565b90815260200190565b60405181810167ffffffffffffffff811182821017156127c957600080fd5b604052919050565b60005b838110156127ec5781810151838201526020016127d4565b838111156127fb576000848401525b50505050565b6001600160a01b038116811461281657600080fd5b50565b64ffffffffff8116811461281657600080fdfea2646970667358221220fe9c83629f6266588bd0555fefeb2c34552d642c0f14f447714eff9acdee087c64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639201de551161005b5780639201de55146101015780639dd9e2ce14610121578063d22cf68a14610129578063ec489c211461013157610088565b80630496f53a1461008d5780633c1740ed146100ab57806351974cc0146100c0578063586c1442146100e1575b600080fd5b610095610152565b6040516100a291906127a1565b60405180910390f35b6100b361015e565b6040516100a29190612603565b6100d36100ce366004611fab565b610182565b6040516100a29291906126f5565b6100f46100ef366004611f8f565b6107c3565b6040516100a29190612617565b61011461010f366004611f5f565b6108b6565b6040516100a2919061278e565b6100b36109bc565b6100b36109d4565b61014461013f366004611f8f565b6109f8565b6040516100a2929190612664565b670de0b6b3a764000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600080846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101c057600080fd5b505afa1580156101d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f89190611e98565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023557600080fd5b505afa158015610249573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102719190810190611eb4565b905061027b611b47565b604051634417a58360e01b81526001600160a01b03841690634417a583906102a7908990600401612603565b60206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f7919061216a565b905060606001600160a01b038716610310576000610313565b82515b67ffffffffffffffff8111801561032957600080fd5b5060405190808252806020026020018201604052801561036357816020015b610350611b5a565b8152602001906001900390816103485790505b50905060005b83518110156107b45761037a611ba2565b856001600160a01b03166335ea6a7586848151811061039557fe5b60200260200101516040518263ffffffff1660e01b81526004016103b99190612603565b6101806040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040a919061206f565b905084828151811061041857fe5b602002602001015183838151811061042c57fe5b60209081029190910101516001600160a01b03918216905260e0820151604051630ed1279f60e11b8152911690631da24f3e9061046d908c90600401612603565b60206040518083038186803b15801561048557600080fd5b505afa158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bd9190611f77565b8383815181106104c957fe5b60209081029190910181015101526104e18483611648565b8383815181106104ed57fe5b602090810291909101015190151560409091015261050b84836116aa565b156107ab578061012001516001600160a01b0316631da24f3e8a6040518263ffffffff1660e01b81526004016105419190612603565b60206040518083038186803b15801561055957600080fd5b505afa15801561056d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105919190611f77565b83838151811061059d57fe5b602002602001015160800181815250508061010001516001600160a01b031663c634dfaa8a6040518263ffffffff1660e01b81526004016105de9190612603565b60206040518083038186803b1580156105f657600080fd5b505afa15801561060a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062e9190611f77565b83838151811061063a57fe5b602002602001015160a001818152505082828151811061065657fe5b602002602001015160a001516000146107ab578061010001516001600160a01b031663e78c9b3b8a6040518263ffffffff1660e01b815260040161069a9190612603565b60206040518083038186803b1580156106b257600080fd5b505afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ea9190611f77565b8383815181106106f657fe5b602002602001015160600181815250508061010001516001600160a01b03166379ce6b8c8a6040518263ffffffff1660e01b81526004016107379190612603565b60206040518083038186803b15801561074f57600080fd5b505afa158015610763573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078791906121c5565b64ffffffffff1683838151811061079a57fe5b602002602001015160c00181815250505b50600101610369565b50976000975095505050505050565b60606000826001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561080057600080fd5b505afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108389190611e98565b9050806001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561087357600080fd5b505afa158015610887573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108af9190810190611eb4565b9392505050565b606060005b60208160ff161080156108e95750828160ff16602081106108d857fe5b1a60f81b6001600160f81b03191615155b156108f6576001016108bb565b60608160ff1667ffffffffffffffff8111801561091257600080fd5b506040519080825280601f01601f19166020018201604052801561093d576020820181803683370190505b509050600091505b60208260ff161080156109735750838260ff166020811061096257fe5b1a60f81b6001600160f81b03191615155b156108af57838260ff166020811061098757fe5b1a60f81b818360ff168151811061099a57fe5b60200101906001600160f81b031916908160001a905350600190910190610945565b739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610a02611c0d565b6000836001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190611e98565b90506000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ab257600080fd5b505afa158015610ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aea9190611e98565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b158015610b2757600080fd5b505afa158015610b3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b639190810190611eb4565b90506060815167ffffffffffffffff81118015610b7f57600080fd5b50604051908082528060200260200182016040528015610bb957816020015b610ba6611c38565b815260200190600190039081610b9e5790505b50905060005b82518110156112e357610bd0611c38565b828281518110610bdc57fe5b60200260200101519050838281518110610bf257fe5b60209081029190910101516001600160a01b03168152610c10611ba2565b81516040516335ea6a7560e01b81526001600160a01b038816916335ea6a7591610c3d9190600401612603565b6101806040518083038186803b158015610c5657600080fd5b505afa158015610c6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8e919061206f565b60208101516001600160801b039081166101a085015260408083015182166101c0860152606083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015260e08201516001600160a01b03908116610260860152610100830151811661028086015261012083015181166102a086015261014083015181166102c08601528451915163b3596f0760e01b815292935089169163b3596f0791610d5291600401612603565b60206040518083038186803b158015610d6a57600080fd5b505afa158015610d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da29190611f77565b6103808301528151604051630495f95f60e51b81526001600160a01b038916916392bf2be091610dd59190600401612603565b60206040518083038186803b158015610ded57600080fd5b505afa158015610e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e259190611e98565b6001600160a01b039081166103a084015282516102608401516040516370a0823160e01b815291909216916370a0823191610e639190600401612603565b60206040518083038186803b158015610e7b57600080fd5b505afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190611f77565b826102e00181815250508161028001516001600160a01b031663797743386040518163ffffffff1660e01b815260040160806040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f339190612185565b64ffffffffff16610340860152610320850152506103008301526102a08201516040805163b1bf962d60e01b815290516001600160a01b039092169163b1bf962d91600480820192602092909190829003018186803b158015610f9557600080fd5b505afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcd9190611f77565b61036083015281516001600160a01b0316739f8f72aa9304c8b593d555f12ef6589cc3a579a2141561110f57600082600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160206040518083038186803b15801561103857600080fd5b505afa15801561104c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110709190611f77565b9050600083600001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e99190611f77565b90506110f4826108b6565b6040850152611102816108b6565b60208501525061120f9050565b81600001516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561114c57600080fd5b505afa158015611160573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111889190810190611fe3565b826040018190525081600001516001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156111cd57600080fd5b505afa1580156111e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112099190810190611fe3565b60208301525b805161121a906116fb565b60e0870152606086015260c085015260a08401526080830152805161123e90611726565b151561014086015215156101208501521515610180840152151561016083015260808201511515610100830152611273611dee565b611287836102c001518c8560000151611762565b80516103c085015260208101516103e085015260408101516104008501526060810151610420850152608081015161044085015260a081015161046085015260c001516104808401525050600161054090910181905201610bbf565b506112ec611c0d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561134557600080fd5b505afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d9190611f77565b8160400181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141791906121e1565b60ff16606082015260408051638c89b64f60e01b815290516001600160a01b03871691638c89b64f916004808301926020929190829003018186803b15801561145f57600080fd5b505afa92505050801561148f575060408051601f3d908101601f1916820190925261148c91810190611f77565b60015b611571573d8080156114bd576040519150601f19603f3d011682016040523d82523d6000602084013e6114c2565b606091505b50670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561152e57600080fd5b505afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190611f77565b60208301525061163b565b80670de0b6b3a7640000141561162e57670de0b6b3a76400008260000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ec57600080fd5b505afa158015611600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116249190611f77565b6020830152611639565b808252602082018190525b505b9095509350505050915091565b60006080821060405180604001604052806002815260200161373760f01b815250906116905760405162461bcd60e51b8152600401611687919061278e565b60405180910390fd5b5050815160016002830281019190911c1615155b92915050565b60006080821060405180604001604052806002815260200161373760f01b815250906116e95760405162461bcd60e51b8152600401611687919061278e565b50509051600160029092021c16151590565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b61176a611dee565b611772611dee565b846001600160a01b0316637b832f586040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e39190611f77565b816000018181525050846001600160a01b03166365614f816040518163ffffffff1660e01b815260040160206040518083038186803b15801561182557600080fd5b505afa158015611839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185d9190611f77565b816020018181525050846001600160a01b0316630bdf953f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561189f57600080fd5b505afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d79190611f77565b816040018181525050846001600160a01b031663ccab01a36040518163ffffffff1660e01b815260040160206040518083038186803b15801561191957600080fd5b505afa15801561192d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119519190611f77565b816060018181525050846001600160a01b031663b25895446040518163ffffffff1660e01b815260040160206040518083038186803b15801561199357600080fd5b505afa1580156119a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cb9190611f77565b8160a0018181525050846001600160a01b031663a15f30ac6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a0d57600080fd5b505afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190611f77565b8160c0018181525050836001600160a01b0316633618abba6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8757600080fd5b505afa158015611a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abf9190611e98565b6001600160a01b031663bb85c0bb846040518263ffffffff1660e01b8152600401611aea9190612603565b60206040518083038186803b158015611b0257600080fd5b505afa158015611b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3a9190611f77565b6080820152949350505050565b6040518060200160405280600081525090565b6040518060e0016040528060006001600160a01b0316815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280611bb6611b47565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b604080516106c08101825260008082526060602083018190529282018390528282018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082018190526105e0820181905261060082018190526106208201819052610640820181905261066082018190526106808201929092526106a081019190915290565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80516116a481612801565b600060208284031215611e47578081fd5b611e5160206127aa565b9151825250919050565b80516001600160801b03811681146116a457600080fd5b805164ffffffffff811681146116a457600080fd5b805160ff811681146116a457600080fd5b600060208284031215611ea9578081fd5b81516108af81612801565b60006020808385031215611ec6578182fd5b825167ffffffffffffffff80821115611edd578384fd5b818501915085601f830112611ef0578384fd5b815181811115611efe578485fd5b8381029150611f0e8483016127aa565b8181528481019084860184860187018a1015611f28578788fd5b8795505b83861015611f5257611f3e8a82611e2b565b835260019590950194918601918601611f2c565b5098975050505050505050565b600060208284031215611f70578081fd5b5035919050565b600060208284031215611f88578081fd5b5051919050565b600060208284031215611fa0578081fd5b81356108af81612801565b60008060408385031215611fbd578081fd5b8235611fc881612801565b91506020830135611fd881612801565b809150509250929050565b600060208284031215611ff4578081fd5b815167ffffffffffffffff8082111561200b578283fd5b818401915084601f83011261201e578283fd5b81518181111561202c578384fd5b61203f601f8201601f19166020016127aa565b9150808252856020828501011115612055578384fd5b6120668160208401602086016127d1565b50949350505050565b6000610180808385031215612082578182fd5b61208b816127aa565b90506120978484611e36565b81526120a68460208501611e5b565b60208201526120b88460408501611e5b565b60408201526120ca8460608501611e5b565b60608201526120dc8460808501611e5b565b60808201526120ee8460a08501611e5b565b60a08201526121008460c08501611e72565b60c08201526121128460e08501611e2b565b60e082015261010061212685828601611e2b565b9082015261012061213985858301611e2b565b9082015261014061214c85858301611e2b565b9082015261016061215f85858301611e87565b908201529392505050565b60006020828403121561217b578081fd5b6108af8383611e36565b6000806000806080858703121561219a578182fd5b84519350602085015192506040850151915060608501516121ba81612819565b939692955090935050565b6000602082840312156121d6578081fd5b81516108af81612819565b6000602082840312156121f2578081fd5b6108af8383611e87565b60006106c061220c84845161259d565b6020830151816020860152612223828601826125b0565b9150506040830151848203604086015261223d82826125b0565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e085015261010080840151612285828701826125aa565b50506101208084015161229a828701826125aa565b5050610140808401516122af828701826125aa565b5050610160808401516122c4828701826125aa565b5050610180808401516122d9828701826125aa565b50506101a0808401516122ee828701826125dc565b50506101c080840151612303828701826125dc565b50506101e080840151612318828701826125dc565b50506102008084015161232d828701826125dc565b505061022080840151612342828701826125dc565b505061024080840151612357828701826125f1565b50506102608084015161236c8287018261259d565b5050610280808401516123818287018261259d565b50506102a0808401516123968287018261259d565b50506102c0808401516123ab8287018261259d565b50506102e08381015190850152610300808401519085015261032080840151908501526103408084015190850152610360808401519085015261038080840151908501526103a0808401516124028287018261259d565b50506103c083810151908501526103e08084015190850152610400808401519085015261042080840151908501526104408084015190850152610460808401519085015261048080840151908501526104a080840151612464828701826125aa565b50506104c080840151612479828701826125aa565b50506104e08084015161248e828701826125dc565b5050610500808401516124a3828701826125dc565b5050610520808401516124b8828701826125dc565b5050610540808401516124cd828701826125aa565b5050610560838101519085015261058080840151908501526105a0808401516124f8828701826125fc565b50506105c083810151908501526105e0808401519085015261060080840151612523828701826125e9565b505061062080840151612538828701826125e9565b50506106408084015161254d828701826125e9565b5050610660808401516125628287018261259d565b5050610680808401518583038287015261257c83826125b0565b925050506106a080840151612593828701826125aa565b5090949350505050565b6001600160a01b03169052565b15159052565b600081518084526125c88160208601602086016127d1565b601f01601f19169290920160200192915050565b6001600160801b03169052565b61ffff169052565b64ffffffffff169052565b60ff169052565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156126585783516001600160a01b031683529284019291840191600101612633565b50909695505050505050565b600060a0820160a0835280855180835260c0850191506020925060c0838202860101838801855b838110156126b95760bf198884030185526126a78383516121fc565b9486019492509085019060010161268b565b5050809450505050835181840152808401516040840152506040830151606083015260608301516126ed60808401826125fc565b509392505050565b6040808252835182820181905260009190606090818501906020808901865b8381101561277557815180516001600160a01b0316865283810151848701528781015115158887015286810151878701526080808201519087015260a0808201519087015260c0908101519086015260e09094019390820190600101612714565b505082955060ff88168188015250505050509392505050565b6000602082526108af60208301846125b0565b90815260200190565b60405181810167ffffffffffffffff811182821017156127c957600080fd5b604052919050565b60005b838110156127ec5781810151838201526020016127d4565b838111156127fb576000848401525b50505050565b6001600160a01b038116811461281657600080fd5b50565b64ffffffffff8116811461281657600080fdfea2646970667358221220fe9c83629f6266588bd0555fefeb2c34552d642c0f14f447714eff9acdee087c64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UniswapLiquiditySwapAdapter.json b/eth_defi/abi/aave_v2/UniswapLiquiditySwapAdapter.json new file mode 100644 index 00000000..572783cc --- /dev/null +++ b/eth_defi/abi/aave_v2/UniswapLiquiditySwapAdapter.json @@ -0,0 +1,434 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapLiquiditySwapAdapter", + "sourceName": "contracts/adapters/UniswapLiquiditySwapAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + }, + { + "internalType": "contract IUniswapV2Router02", + "name": "uniswapRouter", + "type": "address" + }, + { + "internalType": "address", + "name": "wethAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FLASHLOAN_PREMIUM_TOTAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNISWAP_ROUTER", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "USD_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WETH_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assetToSwapFromList", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "assetToSwapToList", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amountToSwapList", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "minAmountsToReceive", + "type": "uint256[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct IBaseUniswapAdapter.PermitSignature[]", + "name": "permitParams", + "type": "tuple[]" + }, + { + "internalType": "bool[]", + "name": "useEthPath", + "type": "bool[]" + } + ], + "name": "swapAndDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101206040523480156200001257600080fd5b50604051620038dd380380620038dd8339810160408190526200003591620001fd565b82828282806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb9190620001d7565b60601b6001600160601b03191660a052506000620000e8620001d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350826001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a79190620001d7565b6001600160601b0319606091821b811660e05292811b8316610100521b1660c052506200026992505050565b3390565b600060208284031215620001e9578081fd5b8151620001f68162000250565b9392505050565b60008060006060848603121562000212578182fd5b83516200021f8162000250565b6020850151909350620002328162000250565b6040850151909250620002458162000250565b809150509250925092565b6001600160a01b03811681146200026657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6135a36200033a60003980610b605280611217528061130b528061199452806119c95280611b5d528061210352806121f45250806103a2528061235e52508061034f52806110f1528061112e52806111985280611a475280611fdd528061201a528061208452508061045f52806107355280610a075280610a615280610a975280610dbb5280610df75280610e385280610ef25280610f2e5280611715528061185a52508061037352506135a36000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d51c9ed7146101db578063d8264920146101ee578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b6101176101123660046129fe565b610209565b005b61012161034d565b60405161012e9190613038565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613433565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612b50565b610452565b60405161012e919061315d565b61012161071b565b610121610733565b6101b76101b2366004612f7c565b610757565b60405161012e959493929190613491565b6101b76101d6366004612f7c565b61079d565b6101176101e9366004612a1a565b6107b8565b610121610b5e565b6101176102043660046129fe565b610b82565b610211610c38565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e906132fa565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401613038565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612f64565b6040518363ffffffff1660e01b81526004016102f79291906130f4565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612df4565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc610c38565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e906132fa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e9061319b565b6104a46125d9565b6104e384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c3c92505050565b8051519091508a1480156104fb57506020810151518a145b801561050b57506040810151518a145b801561051c5750606081015151518a145b80156105305750606081015160200151518a145b80156105445750606081015160400151518a145b801561055757506060808201510151518a145b801561056b5750606081015160800151518a145b801561057b57506080810151518a145b6105975760405162461bcd60e51b815260040161023e9061332f565b60005b8a811015610709576107018c8c838181106105b157fe5b90506020020160208101906105c691906129fe565b83518051849081106105d457fe5b60200260200101518c8c858181106105e857fe5b905060200201358b8b868181106105fb57fe5b905060200201358a8760200151878151811061061357fe5b60200260200101518860400151888151811061062b57fe5b60200260200101516040518060a001604052808b60600151600001518b8151811061065257fe5b602002602001015181526020018b60600151602001518b8151811061067357fe5b602002602001015181526020018b60600151604001518b8151811061069457fe5b602002602001015160ff1681526020018b60600151606001518b815181106106b857fe5b602002602001015181526020018b60600151608001518b815181106106d957fe5b60200260200101518152508a608001518a815181106106f457fe5b6020026020010151610cc5565b60010161059a565b5060019b9a5050505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080606061076761260e565b61077288888b610f5f565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606107ad61260e565b61077288888b61151c565b8a891480156107c657508a87145b80156107d157508a85145b80156107dc57508a83145b6107f85760405162461bcd60e51b815260040161023e9061332f565b61080061263d565b600081525b80518c1115610b4f5761083b8d8d836000015181811061082157fe5b905060200201602081019061083691906129fe565b6116f6565b60e001516001600160a01b0316608082018190526040516370a0823160e01b81526370a0823190610870903390600401613038565b60206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c09190612f64565b6020820181905281518a908a908181106108d657fe5b90506020020135116108fe57888882600001518181106108f257fe5b90506020020135610904565b80602001515b60408201528051610967908e908e9081811061091c57fe5b905060200201602081019061093191906129fe565b82608001513384604001518989876000015181811061094c57fe5b905060a002018036038101906109629190612e10565b6117a1565b6109fa8d8d836000015181811061097a57fe5b905060200201602081019061098f91906129fe565b8c8c846000015181811061099f57fe5b90506020020160208101906109b491906129fe565b83604001518a8a86600001518181106109c957fe5b90506020020135878787600001518181106109e057fe5b90506020020160208101906109f59190612dd8565b6118ed565b60608201528051610a5c907f0000000000000000000000000000000000000000000000000000000000000000906000908e908e90818110610a3757fe5b9050602002016020810190610a4c91906129fe565b6001600160a01b03169190611c84565b610a957f000000000000000000000000000000000000000000000000000000000000000082606001518d8d8560000151818110610a3757fe5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8eda9df8c8c8460000151818110610ad457fe5b9050602002016020810190610ae991906129fe565b83606001513360006040518563ffffffff1660e01b8152600401610b109493929190613130565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505082516001018352506108059050565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b8a610c38565b6000546001600160a01b03908116911614610bb75760405162461bcd60e51b815260040161023e906132fa565b6001600160a01b038116610bdd5760405162461bcd60e51b815260040161023e906131d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b610c446125d9565b60608060608060608060608060608a806020019051810190610c669190612c4c565b6040805160a080820183529a815260208082019a909a52808201989098528051998a018152958952968801939093529286015260608086019290925260808086019190915290820193909352918201529b9a5050505050505050505050565b610ccd612675565b610cd68a6116f6565b60e001516001600160a01b03168082526040516370a0823160e01b81526370a0823190610d07908990600401613038565b60206040518083038186803b158015610d1f57600080fd5b505afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d579190612f64565b6020820152838015610d78575060208101518890610d759089611d83565b11155b610d825787610d91565b6020810151610d919088611d83565b60408201819052610da7908b908b9088866118ed565b6060820152610de16001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6060810151610e1c906001600160a01b038b16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b606081015160405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e8eda9df91610e72918d918b90600090600401613130565b600060405180830381600087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b50505050610eb78789611dc590919063ffffffff16565b60808201526040810151610ecb9088611dc5565b60a082018190528151610ee3918c91908990876117a1565b610f186001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6080810151610f53906001600160a01b038c16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b50505050505050505050565b610f6761260e565b6000610f8a610f83612710610f7d866009611dea565b90611e24565b8490611d83565b9050836001600160a01b0316856001600160a01b03161415611056576000610fb186611e66565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610fe557fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161102387610f7d87670de0b6b3a7640000611dea565b8152602001611033898886611ee2565b8152602001611043898686611ee2565b8152602001828152509350505050611515565b6040805160028082526060808301845292602083019080368337019050509050858160008151811061108457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106110b257fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561116357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156112cf57888160008151811061117657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106111c457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106111f257fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90611250908890859060040161343c565b60006040518083038186803b15801561126857600080fd5b505afa92505050801561129d57506040513d6000823e601f3d908101601f1916820160405261129a9190810190612da6565b60015b6112c7576040805160038082526080820190925290602082016060803683370190505091506112ca565b91505b6112f1565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f90611342908990899060040161343c565b60006040518083038186803b15801561135a57600080fd5b505afa92505050801561138f57506040513d6000823e601f3d908101601f1916820160405261138c9190810190612da6565b60015b6113cf576040805160028082526060820183529091602083019080368337019050509350826002815181106113c057fe5b60200260200101519050611435565b809450846001815181106113df57fe5b6020026020010151846002815181106113f457fe5b60200260200101511161141b578460018151811061140e57fe5b6020026020010151611431565b8360028151811061142857fe5b60200260200101515b9150505b60006114408b611e66565b9050600061144d8b611e66565b9050600061148261146285600a86900a611dea565b610f7d600a85900a61147c8d670de0b6b3a7640000611dea565b90611dea565b90506040518060a001604052808581526020018281526020016114a68f8e87611ee2565b81526020016114b68e8786611ee2565b815260200185156114e957886001815181106114ce57fe5b602002602001015186146114e257866114e4565b895b611507565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61152461260e565b826001600160a01b0316846001600160a01b031614156115fa57600061155b611554612710610f7d866009611dea565b8490611dc5565b9050600061156886611e66565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061159c57fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016115da85610f7d89670de0b6b3a7640000611dea565b81526020016115ea898686611ee2565b8152602001611043898886611ee2565b606080611608868686611f3b565b91509150600061166261163f612710610f7d60098760008151811061162957fe5b6020026020010151611dea90919063ffffffff16565b8460008151811061164c57fe5b6020026020010151611dc590919063ffffffff16565b9050600061166f88611e66565b9050600061167c88611e66565b905060006116ab61169185600a85900a611dea565b610f7d600a86900a61147c8c670de0b6b3a7640000611dea565b90506040518060a001604052808581526020018281526020016116cf8c8787611ee2565b81526020016116df8b8b86611ee2565b815260200195909552509298975050505050505050565b6116fe6126b4565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a759061174a908590600401613038565b6101806040518083038186803b15801561176357600080fd5b505afa158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612e69565b92915050565b6117aa816122f8565b1561182e57836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016117fb97969594939291906130b3565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b505050505b6118436001600160a01b03851684308561231d565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906118939088908690309060040161310d565b602060405180830381600087803b1580156118ad57600080fd5b505af11580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612f64565b505050505050565b6000806118f987611e66565b9050600061190687611e66565b9050600061191389612344565b9050600061192089612344565b90506000611964611935612710610bb8611d83565b61195e61194685600a8a900a611dea565b610f7d61195788600a8b900a611dea565b8e90611dea565b906123e3565b90508781106119855760405162461bcd60e51b815260040161023e90613284565b6119ba6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6119ee6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611c84565b60608715611ac6576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611a2557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611a7357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611aa157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611b43565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611af457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611b2257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516338ed173960e01b81526060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906338ed173990611b9a908e908e90879030904290600401613455565b600060405180830381600087803b158015611bb457600080fd5b505af1158015611bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bf09190810190612da6565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611c2257fe5b602002602001015184600186510381518110611c3a57fe5b6020026020010151604051611c52949392919061308a565b60405180910390a180600182510381518110611c6a57fe5b602002602001015197505050505050505095945050505050565b801580611d0c5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611cba903090869060040161304c565b60206040518083038186803b158015611cd257600080fd5b505afa158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0a9190612f64565b155b611d285760405162461bcd60e51b815260040161023e906133a6565b611d7e8363095ea7b360e01b8484604051602401611d479291906130f4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612455565b505050565b600061151583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253a565b6000828201838110156115155760405162461bcd60e51b815260040161023e90613218565b600082611df95750600061179b565b82820282848281611e0657fe5b04146115155760405162461bcd60e51b815260040161023e906132b9565b600061151583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612566565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612fbd565b60ff1692915050565b600080611f027310f7fc1f91ba351f9c629c5947ad69bd03c05b96612344565b90506000611f0f86612344565b9050611f31670de0b6b3a7640000610f7d8461147c600a89900a838b88611dea565b9695505050505050565b6040805160028082526060828101909352829182918160200160208202803683370190505090508581600081518110611f7057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611f9e57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561204f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156121bb57888160008151811061206257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106120b057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106120de57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca749061213c908a90859060040161343c565b60006040518083038186803b15801561215457600080fd5b505afa92505050801561218957506040513d6000823e601f3d908101601f191682016040526121869190810190612da6565b60015b6121b3576040805160038082526080820190925290602082016060803683370190505091506121b6565b91505b6121dd565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061222b908a90889060040161343c565b60006040518083038186803b15801561224357600080fd5b505afa92505050801561227857506040513d6000823e601f3d908101601f191682016040526122759190810190612da6565b60015b6122895790945092506122f0915050565b8093508360008151811061229957fe5b6020026020010151836000815181106122ae57fe5b60200260200101511080156122d85750826000815181106122cb57fe5b6020026020010151600014155b6122e35783856122e6565b82825b9650965050505050505b935093915050565b6000816040015160ff16826020015114801561231657506020820151155b1592915050565b61233e846323b872dd60e01b858585604051602401611d4793929190613066565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790612393908590600401613038565b60206040518083038186803b1580156123ab57600080fd5b505afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612f64565b60008215806123f0575081155b156123fd5750600061179b565b81611388198161240957fe5b0483111560405180604001604052806002815260200161068760f31b815250906124465760405162461bcd60e51b815260040161023e9190613168565b50506127109102611388010490565b612467826001600160a01b031661259d565b6124835760405162461bcd60e51b815260040161023e906133fc565b60006060836001600160a01b03168360405161249f919061301c565b6000604051808303816000865af19150503d80600081146124dc576040519150601f19603f3d011682016040523d82523d6000602084013e6124e1565b606091505b5091509150816125035760405162461bcd60e51b815260040161023e9061324f565b80511561233e578080602001905181019061251e9190612df4565b61233e5760405162461bcd60e51b815260040161023e9061335c565b6000818484111561255e5760405162461bcd60e51b815260040161023e9190613168565b505050900390565b600081836125875760405162461bcd60e51b815260040161023e9190613168565b50600083858161259357fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906125d157508115155b949350505050565b6040518060a0016040528060608152602001606081526020016060815260200161260161271f565b8152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061018001604052806126c861274e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6040518060200160405280600081525090565b805161179b81613538565b60008083601f84011261277d578182fd5b5081356001600160401b03811115612793578182fd5b60208301915083602080830285010111156127ad57600080fd5b9250929050565b600082601f8301126127c4578081fd5b81516127d76127d2826134ed565b6134c7565b8181529150602080830190848101818402860182018710156127f857600080fd5b60005b8481101561282057815161280e81613538565b845292820192908201906001016127fb565b505050505092915050565b600082601f83011261283b578081fd5b81516128496127d2826134ed565b81815291506020808301908481018184028601820187101561286a57600080fd5b60005b8481101561282057815161288081613550565b8452928201929082019060010161286d565b600082601f8301126128a2578081fd5b81516128b06127d2826134ed565b8181529150602080830190848101818402860182018710156128d157600080fd5b60005b84811015612820578151845292820192908201906001016128d4565b60008083601f840112612901578182fd5b5081356001600160401b03811115612917578182fd5b60208301915083602060a0830285010111156127ad57600080fd5b600082601f830112612942578081fd5b81516129506127d2826134ed565b81815291506020808301908481018184028601820187101561297157600080fd5b60005b848110156128205781516129878161355e565b84529282019290820190600101612974565b6000602082840312156129aa578081fd5b6129b460206134c7565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461179b57600080fd5b805164ffffffffff8116811461179b57600080fd5b805161179b8161355e565b600060208284031215612a0f578081fd5b813561151581613538565b60008060008060008060008060008060008060c08d8f031215612a3b578788fd5b6001600160401b038d351115612a4f578788fd5b612a5c8e8e358f0161276c565b909c509a506001600160401b0360208e01351115612a78578788fd5b612a888e60208f01358f0161276c565b909a5098506001600160401b0360408e01351115612aa4578788fd5b612ab48e60408f01358f0161276c565b90985096506001600160401b0360608e01351115612ad0578586fd5b612ae08e60608f01358f0161276c565b90965094506001600160401b0360808e01351115612afc578384fd5b612b0c8e60808f01358f016128f0565b90945092506001600160401b0360a08e01351115612b28578081fd5b612b388e60a08f01358f0161276c565b81935080925050509295989b509295989b509295989b565b600080600080600080600080600060a08a8c031215612b6d578283fd5b89356001600160401b0380821115612b83578485fd5b612b8f8d838e0161276c565b909b50995060208c0135915080821115612ba7578485fd5b612bb38d838e0161276c565b909950975060408c0135915080821115612bcb578485fd5b612bd78d838e0161276c565b909750955060608c01359150612bec82613538565b90935060808b01359080821115612c01578384fd5b818c0191508c601f830112612c14578384fd5b813581811115612c22578485fd5b8d6020828501011115612c33578485fd5b6020830194508093505050509295985092959850929598565b60008060008060008060008060006101208a8c031215612c6a578283fd5b89516001600160401b0380821115612c80578485fd5b612c8c8d838e016127b4565b9a5060208c0151915080821115612ca1578485fd5b612cad8d838e01612892565b995060408c0151915080821115612cc2578485fd5b612cce8d838e0161282b565b985060608c0151915080821115612ce3578485fd5b612cef8d838e01612892565b975060808c0151915080821115612d04578485fd5b612d108d838e01612892565b965060a08c0151915080821115612d25578485fd5b612d318d838e01612932565b955060c08c0151915080821115612d46578485fd5b612d528d838e01612892565b945060e08c0151915080821115612d67578384fd5b612d738d838e01612892565b93506101008c0151915080821115612d89578283fd5b50612d968c828d0161282b565b9150509295985092959850929598565b600060208284031215612db7578081fd5b81516001600160401b03811115612dcc578182fd5b6125d184828501612892565b600060208284031215612de9578081fd5b813561151581613550565b600060208284031215612e05578081fd5b815161151581613550565b600060a08284031215612e21578081fd5b612e2b60a06134c7565b82358152602083013560208201526040830135612e478161355e565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612e7c578182fd5b612e85816134c7565b9050612e918484612999565b8152612ea084602085016129be565b6020820152612eb284604085016129be565b6040820152612ec484606085016129be565b6060820152612ed684608085016129be565b6080820152612ee88460a085016129be565b60a0820152612efa8460c085016129de565b60c0820152612f0c8460e08501612761565b60e0820152610100612f2085828601612761565b90820152610120612f3385858301612761565b90820152610140612f4685858301612761565b90820152610160612f59858583016129f3565b908201529392505050565b600060208284031215612f75578081fd5b5051919050565b600080600060608486031215612f90578081fd5b833592506020840135612fa281613538565b91506040840135612fb281613538565b809150509250925092565b600060208284031215612fce578081fd5b81516115158161355e565b6000815180845260208085019450808401835b838110156130115781516001600160a01b031687529582019590820190600101612fec565b509495945050505050565b6000825161302e81846020870161350c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b600060208252825180602084015261318781604085016020870161350c565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252818101527f6d696e416d6f756e744f757420657863656564206d617820736c697070616765604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526125d16040830184612fd9565b600086825285602083015260a0604083015261347460a0830186612fd9565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526134bc60a0830184612fd9565b979650505050505050565b6040518181016001600160401b03811182821017156134e557600080fd5b604052919050565b60006001600160401b03821115613502578081fd5b5060209081020190565b60005b8381101561352757818101518382015260200161350f565b8381111561233e5750506000910152565b6001600160a01b038116811461354d57600080fd5b50565b801515811461354d57600080fd5b60ff8116811461354d57600080fdfea2646970667358221220def7fdf1490df5ba55d300fb2007044d28b4d90edf7ebe22c7a7039c52ac25b764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d51c9ed7146101db578063d8264920146101ee578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b6101176101123660046129fe565b610209565b005b61012161034d565b60405161012e9190613038565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613433565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612b50565b610452565b60405161012e919061315d565b61012161071b565b610121610733565b6101b76101b2366004612f7c565b610757565b60405161012e959493929190613491565b6101b76101d6366004612f7c565b61079d565b6101176101e9366004612a1a565b6107b8565b610121610b5e565b6101176102043660046129fe565b610b82565b610211610c38565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e906132fa565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401613038565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612f64565b6040518363ffffffff1660e01b81526004016102f79291906130f4565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612df4565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc610c38565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e906132fa565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e9061319b565b6104a46125d9565b6104e384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c3c92505050565b8051519091508a1480156104fb57506020810151518a145b801561050b57506040810151518a145b801561051c5750606081015151518a145b80156105305750606081015160200151518a145b80156105445750606081015160400151518a145b801561055757506060808201510151518a145b801561056b5750606081015160800151518a145b801561057b57506080810151518a145b6105975760405162461bcd60e51b815260040161023e9061332f565b60005b8a811015610709576107018c8c838181106105b157fe5b90506020020160208101906105c691906129fe565b83518051849081106105d457fe5b60200260200101518c8c858181106105e857fe5b905060200201358b8b868181106105fb57fe5b905060200201358a8760200151878151811061061357fe5b60200260200101518860400151888151811061062b57fe5b60200260200101516040518060a001604052808b60600151600001518b8151811061065257fe5b602002602001015181526020018b60600151602001518b8151811061067357fe5b602002602001015181526020018b60600151604001518b8151811061069457fe5b602002602001015160ff1681526020018b60600151606001518b815181106106b857fe5b602002602001015181526020018b60600151608001518b815181106106d957fe5b60200260200101518152508a608001518a815181106106f457fe5b6020026020010151610cc5565b60010161059a565b5060019b9a5050505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600080606061076761260e565b61077288888b610f5f565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606107ad61260e565b61077288888b61151c565b8a891480156107c657508a87145b80156107d157508a85145b80156107dc57508a83145b6107f85760405162461bcd60e51b815260040161023e9061332f565b61080061263d565b600081525b80518c1115610b4f5761083b8d8d836000015181811061082157fe5b905060200201602081019061083691906129fe565b6116f6565b60e001516001600160a01b0316608082018190526040516370a0823160e01b81526370a0823190610870903390600401613038565b60206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c09190612f64565b6020820181905281518a908a908181106108d657fe5b90506020020135116108fe57888882600001518181106108f257fe5b90506020020135610904565b80602001515b60408201528051610967908e908e9081811061091c57fe5b905060200201602081019061093191906129fe565b82608001513384604001518989876000015181811061094c57fe5b905060a002018036038101906109629190612e10565b6117a1565b6109fa8d8d836000015181811061097a57fe5b905060200201602081019061098f91906129fe565b8c8c846000015181811061099f57fe5b90506020020160208101906109b491906129fe565b83604001518a8a86600001518181106109c957fe5b90506020020135878787600001518181106109e057fe5b90506020020160208101906109f59190612dd8565b6118ed565b60608201528051610a5c907f0000000000000000000000000000000000000000000000000000000000000000906000908e908e90818110610a3757fe5b9050602002016020810190610a4c91906129fe565b6001600160a01b03169190611c84565b610a957f000000000000000000000000000000000000000000000000000000000000000082606001518d8d8560000151818110610a3757fe5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8eda9df8c8c8460000151818110610ad457fe5b9050602002016020810190610ae991906129fe565b83606001513360006040518563ffffffff1660e01b8152600401610b109493929190613130565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505082516001018352506108059050565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b8a610c38565b6000546001600160a01b03908116911614610bb75760405162461bcd60e51b815260040161023e906132fa565b6001600160a01b038116610bdd5760405162461bcd60e51b815260040161023e906131d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b610c446125d9565b60608060608060608060608060608a806020019051810190610c669190612c4c565b6040805160a080820183529a815260208082019a909a52808201989098528051998a018152958952968801939093529286015260608086019290925260808086019190915290820193909352918201529b9a5050505050505050505050565b610ccd612675565b610cd68a6116f6565b60e001516001600160a01b03168082526040516370a0823160e01b81526370a0823190610d07908990600401613038565b60206040518083038186803b158015610d1f57600080fd5b505afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d579190612f64565b6020820152838015610d78575060208101518890610d759089611d83565b11155b610d825787610d91565b6020810151610d919088611d83565b60408201819052610da7908b908b9088866118ed565b6060820152610de16001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6060810151610e1c906001600160a01b038b16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b606081015160405163e8eda9df60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e8eda9df91610e72918d918b90600090600401613130565b600060405180830381600087803b158015610e8c57600080fd5b505af1158015610ea0573d6000803e3d6000fd5b50505050610eb78789611dc590919063ffffffff16565b60808201526040810151610ecb9088611dc5565b60a082018190528151610ee3918c91908990876117a1565b610f186001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6080810151610f53906001600160a01b038c16907f000000000000000000000000000000000000000000000000000000000000000090611c84565b50505050505050505050565b610f6761260e565b6000610f8a610f83612710610f7d866009611dea565b90611e24565b8490611d83565b9050836001600160a01b0316856001600160a01b03161415611056576000610fb186611e66565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610fe557fe5b6001600160a01b039092166020928302919091018201526040805160a0810190915284815290810161102387610f7d87670de0b6b3a7640000611dea565b8152602001611033898886611ee2565b8152602001611043898686611ee2565b8152602001828152509350505050611515565b6040805160028082526060808301845292602083019080368337019050509050858160008151811061108457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106110b257fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561116357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156112cf57888160008151811061117657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106111c457fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106111f257fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f90611250908890859060040161343c565b60006040518083038186803b15801561126857600080fd5b505afa92505050801561129d57506040513d6000823e601f3d908101601f1916820160405261129a9190810190612da6565b60015b6112c7576040805160038082526080820190925290602082016060803683370190505091506112ca565b91505b6112f1565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f90611342908990899060040161343c565b60006040518083038186803b15801561135a57600080fd5b505afa92505050801561138f57506040513d6000823e601f3d908101601f1916820160405261138c9190810190612da6565b60015b6113cf576040805160028082526060820183529091602083019080368337019050509350826002815181106113c057fe5b60200260200101519050611435565b809450846001815181106113df57fe5b6020026020010151846002815181106113f457fe5b60200260200101511161141b578460018151811061140e57fe5b6020026020010151611431565b8360028151811061142857fe5b60200260200101515b9150505b60006114408b611e66565b9050600061144d8b611e66565b9050600061148261146285600a86900a611dea565b610f7d600a85900a61147c8d670de0b6b3a7640000611dea565b90611dea565b90506040518060a001604052808581526020018281526020016114a68f8e87611ee2565b81526020016114b68e8786611ee2565b815260200185156114e957886001815181106114ce57fe5b602002602001015186146114e257866114e4565b895b611507565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b61152461260e565b826001600160a01b0316846001600160a01b031614156115fa57600061155b611554612710610f7d866009611dea565b8490611dc5565b9050600061156886611e66565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061159c57fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016115da85610f7d89670de0b6b3a7640000611dea565b81526020016115ea898686611ee2565b8152602001611043898886611ee2565b606080611608868686611f3b565b91509150600061166261163f612710610f7d60098760008151811061162957fe5b6020026020010151611dea90919063ffffffff16565b8460008151811061164c57fe5b6020026020010151611dc590919063ffffffff16565b9050600061166f88611e66565b9050600061167c88611e66565b905060006116ab61169185600a85900a611dea565b610f7d600a86900a61147c8c670de0b6b3a7640000611dea565b90506040518060a001604052808581526020018281526020016116cf8c8787611ee2565b81526020016116df8b8b86611ee2565b815260200195909552509298975050505050505050565b6116fe6126b4565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a759061174a908590600401613038565b6101806040518083038186803b15801561176357600080fd5b505afa158015611777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612e69565b92915050565b6117aa816122f8565b1561182e57836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016117fb97969594939291906130b3565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b505050505b6118436001600160a01b03851684308561231d565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906118939088908690309060040161310d565b602060405180830381600087803b1580156118ad57600080fd5b505af11580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612f64565b505050505050565b6000806118f987611e66565b9050600061190687611e66565b9050600061191389612344565b9050600061192089612344565b90506000611964611935612710610bb8611d83565b61195e61194685600a8a900a611dea565b610f7d61195788600a8b900a611dea565b8e90611dea565b906123e3565b90508781106119855760405162461bcd60e51b815260040161023e90613284565b6119ba6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611c84565b6119ee6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611c84565b60608715611ac6576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611a2557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611a7357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611aa157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611b43565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611af457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611b2257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516338ed173960e01b81526060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906338ed173990611b9a908e908e90879030904290600401613455565b600060405180830381600087803b158015611bb457600080fd5b505af1158015611bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bf09190810190612da6565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611c2257fe5b602002602001015184600186510381518110611c3a57fe5b6020026020010151604051611c52949392919061308a565b60405180910390a180600182510381518110611c6a57fe5b602002602001015197505050505050505095945050505050565b801580611d0c5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611cba903090869060040161304c565b60206040518083038186803b158015611cd257600080fd5b505afa158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0a9190612f64565b155b611d285760405162461bcd60e51b815260040161023e906133a6565b611d7e8363095ea7b360e01b8484604051602401611d479291906130f4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612455565b505050565b600061151583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061253a565b6000828201838110156115155760405162461bcd60e51b815260040161023e90613218565b600082611df95750600061179b565b82820282848281611e0657fe5b04146115155760405162461bcd60e51b815260040161023e906132b9565b600061151583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612566565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612fbd565b60ff1692915050565b600080611f027310f7fc1f91ba351f9c629c5947ad69bd03c05b96612344565b90506000611f0f86612344565b9050611f31670de0b6b3a7640000610f7d8461147c600a89900a838b88611dea565b9695505050505050565b6040805160028082526060828101909352829182918160200160208202803683370190505090508581600081518110611f7057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110611f9e57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561204f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b156121bb57888160008151811061206257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106120b057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106120de57fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca749061213c908a90859060040161343c565b60006040518083038186803b15801561215457600080fd5b505afa92505050801561218957506040513d6000823e601f3d908101601f191682016040526121869190810190612da6565b60015b6121b3576040805160038082526080820190925290602082016060803683370190505091506121b6565b91505b6121dd565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061222b908a90889060040161343c565b60006040518083038186803b15801561224357600080fd5b505afa92505050801561227857506040513d6000823e601f3d908101601f191682016040526122759190810190612da6565b60015b6122895790945092506122f0915050565b8093508360008151811061229957fe5b6020026020010151836000815181106122ae57fe5b60200260200101511080156122d85750826000815181106122cb57fe5b6020026020010151600014155b6122e35783856122e6565b82825b9650965050505050505b935093915050565b6000816040015160ff16826020015114801561231657506020820151155b1592915050565b61233e846323b872dd60e01b858585604051602401611d4793929190613066565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f0790612393908590600401613038565b60206040518083038186803b1580156123ab57600080fd5b505afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179b9190612f64565b60008215806123f0575081155b156123fd5750600061179b565b81611388198161240957fe5b0483111560405180604001604052806002815260200161068760f31b815250906124465760405162461bcd60e51b815260040161023e9190613168565b50506127109102611388010490565b612467826001600160a01b031661259d565b6124835760405162461bcd60e51b815260040161023e906133fc565b60006060836001600160a01b03168360405161249f919061301c565b6000604051808303816000865af19150503d80600081146124dc576040519150601f19603f3d011682016040523d82523d6000602084013e6124e1565b606091505b5091509150816125035760405162461bcd60e51b815260040161023e9061324f565b80511561233e578080602001905181019061251e9190612df4565b61233e5760405162461bcd60e51b815260040161023e9061335c565b6000818484111561255e5760405162461bcd60e51b815260040161023e9190613168565b505050900390565b600081836125875760405162461bcd60e51b815260040161023e9190613168565b50600083858161259357fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906125d157508115155b949350505050565b6040518060a0016040528060608152602001606081526020016060815260200161260161271f565b8152602001606081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b6040518060c0016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061018001604052806126c861274e565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b6040518060200160405280600081525090565b805161179b81613538565b60008083601f84011261277d578182fd5b5081356001600160401b03811115612793578182fd5b60208301915083602080830285010111156127ad57600080fd5b9250929050565b600082601f8301126127c4578081fd5b81516127d76127d2826134ed565b6134c7565b8181529150602080830190848101818402860182018710156127f857600080fd5b60005b8481101561282057815161280e81613538565b845292820192908201906001016127fb565b505050505092915050565b600082601f83011261283b578081fd5b81516128496127d2826134ed565b81815291506020808301908481018184028601820187101561286a57600080fd5b60005b8481101561282057815161288081613550565b8452928201929082019060010161286d565b600082601f8301126128a2578081fd5b81516128b06127d2826134ed565b8181529150602080830190848101818402860182018710156128d157600080fd5b60005b84811015612820578151845292820192908201906001016128d4565b60008083601f840112612901578182fd5b5081356001600160401b03811115612917578182fd5b60208301915083602060a0830285010111156127ad57600080fd5b600082601f830112612942578081fd5b81516129506127d2826134ed565b81815291506020808301908481018184028601820187101561297157600080fd5b60005b848110156128205781516129878161355e565b84529282019290820190600101612974565b6000602082840312156129aa578081fd5b6129b460206134c7565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461179b57600080fd5b805164ffffffffff8116811461179b57600080fd5b805161179b8161355e565b600060208284031215612a0f578081fd5b813561151581613538565b60008060008060008060008060008060008060c08d8f031215612a3b578788fd5b6001600160401b038d351115612a4f578788fd5b612a5c8e8e358f0161276c565b909c509a506001600160401b0360208e01351115612a78578788fd5b612a888e60208f01358f0161276c565b909a5098506001600160401b0360408e01351115612aa4578788fd5b612ab48e60408f01358f0161276c565b90985096506001600160401b0360608e01351115612ad0578586fd5b612ae08e60608f01358f0161276c565b90965094506001600160401b0360808e01351115612afc578384fd5b612b0c8e60808f01358f016128f0565b90945092506001600160401b0360a08e01351115612b28578081fd5b612b388e60a08f01358f0161276c565b81935080925050509295989b509295989b509295989b565b600080600080600080600080600060a08a8c031215612b6d578283fd5b89356001600160401b0380821115612b83578485fd5b612b8f8d838e0161276c565b909b50995060208c0135915080821115612ba7578485fd5b612bb38d838e0161276c565b909950975060408c0135915080821115612bcb578485fd5b612bd78d838e0161276c565b909750955060608c01359150612bec82613538565b90935060808b01359080821115612c01578384fd5b818c0191508c601f830112612c14578384fd5b813581811115612c22578485fd5b8d6020828501011115612c33578485fd5b6020830194508093505050509295985092959850929598565b60008060008060008060008060006101208a8c031215612c6a578283fd5b89516001600160401b0380821115612c80578485fd5b612c8c8d838e016127b4565b9a5060208c0151915080821115612ca1578485fd5b612cad8d838e01612892565b995060408c0151915080821115612cc2578485fd5b612cce8d838e0161282b565b985060608c0151915080821115612ce3578485fd5b612cef8d838e01612892565b975060808c0151915080821115612d04578485fd5b612d108d838e01612892565b965060a08c0151915080821115612d25578485fd5b612d318d838e01612932565b955060c08c0151915080821115612d46578485fd5b612d528d838e01612892565b945060e08c0151915080821115612d67578384fd5b612d738d838e01612892565b93506101008c0151915080821115612d89578283fd5b50612d968c828d0161282b565b9150509295985092959850929598565b600060208284031215612db7578081fd5b81516001600160401b03811115612dcc578182fd5b6125d184828501612892565b600060208284031215612de9578081fd5b813561151581613550565b600060208284031215612e05578081fd5b815161151581613550565b600060a08284031215612e21578081fd5b612e2b60a06134c7565b82358152602083013560208201526040830135612e478161355e565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612e7c578182fd5b612e85816134c7565b9050612e918484612999565b8152612ea084602085016129be565b6020820152612eb284604085016129be565b6040820152612ec484606085016129be565b6060820152612ed684608085016129be565b6080820152612ee88460a085016129be565b60a0820152612efa8460c085016129de565b60c0820152612f0c8460e08501612761565b60e0820152610100612f2085828601612761565b90820152610120612f3385858301612761565b90820152610140612f4685858301612761565b90820152610160612f59858583016129f3565b908201529392505050565b600060208284031215612f75578081fd5b5051919050565b600080600060608486031215612f90578081fd5b833592506020840135612fa281613538565b91506040840135612fb281613538565b809150509250925092565b600060208284031215612fce578081fd5b81516115158161355e565b6000815180845260208085019450808401835b838110156130115781516001600160a01b031687529582019590820190600101612fec565b509495945050505050565b6000825161302e81846020870161350c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b901515815260200190565b600060208252825180602084015261318781604085016020870161350c565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252818101527f6d696e416d6f756e744f757420657863656564206d617820736c697070616765604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272494e434f4e53495354454e545f504152414d5360681b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526125d16040830184612fd9565b600086825285602083015260a0604083015261347460a0830186612fd9565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526134bc60a0830184612fd9565b979650505050505050565b6040518181016001600160401b03811182821017156134e557600080fd5b604052919050565b60006001600160401b03821115613502578081fd5b5060209081020190565b60005b8381101561352757818101518382015260200161350f565b8381111561233e5750506000910152565b6001600160a01b038116811461354d57600080fd5b50565b801515811461354d57600080fd5b60ff8116811461354d57600080fdfea2646970667358221220def7fdf1490df5ba55d300fb2007044d28b4d90edf7ebe22c7a7039c52ac25b764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UniswapRepayAdapter.json b/eth_defi/abi/aave_v2/UniswapRepayAdapter.json new file mode 100644 index 00000000..88ee6ebd --- /dev/null +++ b/eth_defi/abi/aave_v2/UniswapRepayAdapter.json @@ -0,0 +1,439 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UniswapRepayAdapter", + "sourceName": "contracts/adapters/UniswapRepayAdapter.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "addressesProvider", + "type": "address" + }, + { + "internalType": "contract IUniswapV2Router02", + "name": "uniswapRouter", + "type": "address" + }, + { + "internalType": "address", + "name": "wethAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "fromAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toAsset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fromAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + } + ], + "name": "Swapped", + "type": "event" + }, + { + "inputs": [], + "name": "ADDRESSES_PROVIDER", + "outputs": [ + { + "internalType": "contract ILendingPoolAddressesProvider", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FLASHLOAN_PREMIUM_TOTAL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LENDING_POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SLIPPAGE_PERCENT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ORACLE", + "outputs": [ + { + "internalType": "contract IPriceOracleGetter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNISWAP_ROUTER", + "outputs": [ + { + "internalType": "contract IUniswapV2Router02", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "USD_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WETH_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "assets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "premiums", + "type": "uint256[]" + }, + { + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "executeOperation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsIn", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reserveIn", + "type": "address" + }, + { + "internalType": "address", + "name": "reserveOut", + "type": "address" + } + ], + "name": "getAmountsOut", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "collateralAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "debtAsset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "collateralAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "debtRepayAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "debtRateMode", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "internalType": "struct IBaseUniswapAdapter.PermitSignature", + "name": "permitSignature", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "useEthPath", + "type": "bool" + } + ], + "name": "swapAndRepay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6101206040523480156200001257600080fd5b5060405162003618380380620036188339810160408190526200003591620001fd565b82828282806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb9190620001d7565b60601b6001600160601b03191660a052506000620000e8620001d3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350826001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016c57600080fd5b505afa15801562000181573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a79190620001d7565b6001600160601b0319606091821b811660e05292811b8316610100521b1660c052506200026992505050565b3390565b600060208284031215620001e9578081fd5b8151620001f68162000250565b9392505050565b60008060006060848603121562000212578182fd5b83516200021f8162000250565b6020850151909350620002328162000250565b6040850151909250620002458162000250565b809150509250925092565b6001600160a01b03811681146200026657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6132d4620003446000398061060152806110d452806111c852806118475280611acf5280611b045280611c9852806121b552806122a65250806103a2528061244752508061034f5280610fae5280610feb528061105552806117345280611b82528061208f52806120cc528061213652508061045f528061057c5280610817528061084c52806108885280610aa75280610adc5280610b9a5280610db05280610ddb52806115d2528061199552508061037352506132d46000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d8264920146101db578063e6813563146101e3578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b61011761011236600461285d565b610209565b005b61012161034d565b60405161012e9190612d5d565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613162565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612987565b610452565b60405161012e9190612e80565b610121610562565b61012161057a565b6101b76101b2366004612ca1565b61059e565b60405161012e9594939291906131c0565b6101b76101d6366004612ca1565b6105e4565b6101216105ff565b6101176101f1366004612902565b610623565b61011761020436600461285d565b610924565b6102116109da565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e9061302b565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401612d5d565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612c89565b6040518363ffffffff1660e01b81526004016102f7929190612e19565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612b19565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc6109da565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e9061302b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e90612ebe565b6104a461268b565b6104e384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109de92505050565b905061055181600001518c8c60008181106104fa57fe5b905060200201602081019061050f919061285d565b8b8b600081811061051c57fe5b90506020020135846020015185604001518a8d8d600081811061053b57fe5b9050602002013588606001518960800151610a85565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105ae6126c9565b6105b988888b610e22565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606105f46126c9565b6105b988888b6113d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b61062b6126f8565b610634886115b3565b905061063e6126f8565b610647886115b3565b90506000600186600281111561065957fe5b600281111561066457fe5b146106745781610120015161067b565b8161010001515b90506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016106ab9190612d5d565b60206040518083038186803b1580156106c357600080fd5b505afa1580156106d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fb9190612c89565b905060008189111561070d578161070f565b885b90508a6001600160a01b03168c6001600160a01b0316146107ec57898982101561074a576107478a610741838561165e565b90611698565b90505b60606107588e8e858b6116da565b9050818160008151811061076857fe5b6020026020010151111561078e5760405162461bcd60e51b815260040161023e90613060565b6107c38e8860e0015133846000815181106107a557fe5b60200260200101518d8036038101906107be9190612b35565b6118dc565b6107e48e8e836000815181106107d557fe5b6020026020010151868c611a28565b505050610808565b6108088c8660e0015133848b8036038101906107be9190612b35565b61083d6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b6108716001600160a01b038c167f000000000000000000000000000000000000000000000000000000000000000083611dbc565b60405163573ade8160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906108c3908e9085908d903390600401612e55565b602060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190612c89565b50505050505050505050505050565b61092c6109da565b6000546001600160a01b039081169116146109595760405162461bcd60e51b815260040161023e9061302b565b6001600160a01b03811661097f5760405162461bcd60e51b815260040161023e90612ef5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6109e661268b565b60008060008060008060008060008a806020019051810190610a089190612879565b9850985098509850985098509850985098506040518060a001604052808a6001600160a01b031681526020018981526020018881526020016040518060a001604052808981526020018881526020018760ff1681526020018681526020018581525081526020018215158152509950505050505050505050919050565b610a8d6126f8565b610a968a6115b3565b9050610acd6001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610b016001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000008a611dbc565b6040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610b30903090600401612d5d565b60206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190612c89565b60405163573ade8160e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade8190610bd5908d908d908c908c90600401612e55565b602060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c279190612c89565b506040516370a0823160e01b8152610caf906001600160a01b038c16906370a0823190610c58903090600401612d5d565b60206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca89190612c89565b8290611ebb565b9050896001600160a01b03168b6001600160a01b031614610d85578789821015610ce457610ce18a610741838561165e565b90505b6000610cf08388611efd565b90506060610d008e8e84896116da565b90508281600081518110610d1057fe5b60200260200101511115610d365760405162461bcd60e51b815260040161023e90613060565b610d5b8e8660e001518b84600081518110610d4d57fe5b60200260200101518b6118dc565b610d7c8e8e83600081518110610d6d57fe5b6020026020010151858a611a28565b50505050610da1565b60e0820151610da1908c9088610d9b858a611efd565b886118dc565b610dd66001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610e157f0000000000000000000000000000000000000000000000000000000000000000610e048b88611efd565b6001600160a01b038d169190611dbc565b5050505050505050505050565b610e2a6126c9565b6000610e47610e4061271061074186600961165e565b8490611ebb565b9050836001600160a01b0316856001600160a01b03161415610f13576000610e6e86611f22565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610ea257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610ee08761074187670de0b6b3a764000061165e565b8152602001610ef0898886611f9e565b8152602001610f00898686611f9e565b81526020018281525093505050506113d2565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610f4157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610f6f57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561102057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561118c57888160008151811061103357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061108157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106110af57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f9061110d908890859060040161316b565b60006040518083038186803b15801561112557600080fd5b505afa92505050801561115a57506040513d6000823e601f3d908101601f191682016040526111579190810190612a84565b60015b61118457604080516003808252608082019092529060208201606080368337019050509150611187565b91505b6111ae565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f906111ff908990899060040161316b565b60006040518083038186803b15801561121757600080fd5b505afa92505050801561124c57506040513d6000823e601f3d908101601f191682016040526112499190810190612a84565b60015b61128c5760408051600280825260608201835290916020830190803683370190505093508260028151811061127d57fe5b602002602001015190506112f2565b8094508460018151811061129c57fe5b6020026020010151846002815181106112b157fe5b6020026020010151116112d857846001815181106112cb57fe5b60200260200101516112ee565b836002815181106112e557fe5b60200260200101515b9150505b60006112fd8b611f22565b9050600061130a8b611f22565b9050600061133f61131f85600a86900a61165e565b610741600a85900a6113398d670de0b6b3a764000061165e565b9061165e565b90506040518060a001604052808581526020018281526020016113638f8e87611f9e565b81526020016113738e8786611f9e565b815260200185156113a6578860018151811061138b57fe5b6020026020010151861461139f57866113a1565b895b6113c4565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b6113e16126c9565b826001600160a01b0316846001600160a01b031614156114b757600061141861141161271061074186600961165e565b8490611efd565b9050600061142586611f22565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061145957fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016114978561074189670de0b6b3a764000061165e565b81526020016114a7898686611f9e565b8152602001610f00898886611f9e565b6060806114c5868686611fed565b91509150600061151f6114fc6127106107416009876000815181106114e657fe5b602002602001015161165e90919063ffffffff16565b8460008151811061150957fe5b6020026020010151611efd90919063ffffffff16565b9050600061152c88611f22565b9050600061153988611f22565b9050600061156861154e85600a85900a61165e565b610741600a86900a6113398c670de0b6b3a764000061165e565b90506040518060a0016040528085815260200182815260200161158c8c8787611f9e565b815260200161159c8b8b86611f9e565b815260200195909552509298975050505050505050565b6115bb6126f8565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a7590611607908590600401612d5d565b6101806040518083038186803b15801561162057600080fd5b505afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612b8e565b92915050565b60008261166d57506000611658565b8282028284828161167a57fe5b04146113d25760405162461bcd60e51b815260040161023e90612fea565b60006113d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123aa565b60608082156117b357604080516003808252608082019092529060208201606080368337019050509050858160008151811061171257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061176057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061178e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611830565b604080516002808252606082018352909160208301908036833701905050905085816000815181106117e157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061180f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061187e908790859060040161316b565b60006040518083038186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118d29190810190612a84565b9695505050505050565b6118e5816123e1565b1561196957836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016119369796959493929190612dd8565b600060405180830381600087803b15801561195057600080fd5b505af1158015611964573d6000803e3d6000fd5b505050505b61197e6001600160a01b038516843085612406565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906119ce90889086903090600401612e32565b602060405180830381600087803b1580156119e857600080fd5b505af11580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190612c89565b505050505050565b600080611a3487611f22565b90506000611a4187611f22565b90506000611a4e8961242d565b90506000611a5b8961242d565b90506000611a9f611a70612710610bb8611efd565b611a99611a8186600a89900a61165e565b610741611a9287600a8c900a61165e565b8d9061165e565b906124cc565b9050808910611ac05760405162461bcd60e51b815260040161023e90612fa7565b611af56001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b611b296001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611dbc565b60608715611c01576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611b6057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611bae57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611bdc57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611c7e565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611c2f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611c5d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611cd5908d908f90879030904290600401613184565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2b9190810190612a84565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611d5d57fe5b602002602001015184600186510381518110611d7557fe5b6020026020010151604051611d8d9493929190612daf565b60405180910390a180600081518110611da257fe5b602002602001015197505050505050505095945050505050565b801580611e445750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611df29030908690600401612d71565b60206040518083038186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612c89565b155b611e605760405162461bcd60e51b815260040161023e906130d5565b611eb68363095ea7b360e01b8484604051602401611e7f929190612e19565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261253e565b505050565b60006113d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612623565b6000828201838110156113d25760405162461bcd60e51b815260040161023e90612f3b565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5d57600080fd5b505afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f959190612ce2565b60ff1692915050565b600080611fbe7310f7fc1f91ba351f9c629c5947ad69bd03c05b9661242d565b90506000611fcb8661242d565b90506118d2670de0b6b3a764000061074184611339600a89900a838b8861165e565b604080516002808252606082810190935282918291816020016020820280368337019050509050858160008151811061202257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061205057fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561210157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561226d57888160008151811061211457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061216257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878160028151811061219057fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca74906121ee908a90859060040161316b565b60006040518083038186803b15801561220657600080fd5b505afa92505050801561223b57506040513d6000823e601f3d908101601f191682016040526122389190810190612a84565b60015b61226557604080516003808252608082019092529060208201606080368337019050509150612268565b91505b61228f565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca74906122dd908a90889060040161316b565b60006040518083038186803b1580156122f557600080fd5b505afa92505050801561232a57506040513d6000823e601f3d908101601f191682016040526123279190810190612a84565b60015b61233b5790945092506123a2915050565b8093508360008151811061234b57fe5b60200260200101518360008151811061236057fe5b602002602001015110801561238a57508260008151811061237d57fe5b6020026020010151600014155b612395578385612398565b82825b9650965050505050505b935093915050565b600081836123cb5760405162461bcd60e51b815260040161023e9190612e8b565b5060008385816123d757fe5b0495945050505050565b6000816040015160ff1682602001511480156123ff57506020820151155b1592915050565b612427846323b872dd60e01b858585604051602401611e7f93929190612d8b565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f079061247c908590600401612d5d565b60206040518083038186803b15801561249457600080fd5b505afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612c89565b60008215806124d9575081155b156124e657506000611658565b8161138819816124f257fe5b0483111560405180604001604052806002815260200161068760f31b8152509061252f5760405162461bcd60e51b815260040161023e9190612e8b565b50506127109102611388010490565b612550826001600160a01b031661264f565b61256c5760405162461bcd60e51b815260040161023e9061312b565b60006060836001600160a01b0316836040516125889190612d41565b6000604051808303816000865af19150503d80600081146125c5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ca565b606091505b5091509150816125ec5760405162461bcd60e51b815260040161023e90612f72565b80511561242757808060200190518101906126079190612b19565b6124275760405162461bcd60e51b815260040161023e9061308b565b600081848411156126475760405162461bcd60e51b815260040161023e9190612e8b565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061268357508115155b949350505050565b6040518060a0016040528060006001600160a01b0316815260200160008152602001600081526020016126bc612763565b8152600060209091015290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610180016040528061270c612791565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060200160405280600081525090565b805161165881613269565b60008083601f8401126127c0578182fd5b50813567ffffffffffffffff8111156127d7578182fd5b60208301915083602080830285010111156127f157600080fd5b9250929050565b600060208284031215612809578081fd5b61281360206131f6565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461165857600080fd5b805164ffffffffff8116811461165857600080fd5b80516116588161328f565b60006020828403121561286e578081fd5b81356113d281613269565b60008060008060008060008060006101208a8c031215612897578485fd5b89516128a281613269565b8099505060208a0151975060408a0151965060608a0151955060808a0151945060a08a01516128d08161328f565b8094505060c08a0151925060e08a015191506101008a01516128f181613281565b809150509295985092959850929598565b600080600080600080600087890361016081121561291e578182fd5b883561292981613269565b9750602089013561293981613269565b965060408901359550606089013594506080890135935060a0609f1982011215612961578182fd5b5060a08801915061014088013561297781613281565b8091505092959891949750929550565b600080600080600080600080600060a08a8c0312156129a4578283fd5b893567ffffffffffffffff808211156129bb578485fd5b6129c78d838e016127af565b909b50995060208c01359150808211156129df578485fd5b6129eb8d838e016127af565b909950975060408c0135915080821115612a03578485fd5b612a0f8d838e016127af565b909750955060608c01359150612a2482613269565b90935060808b01359080821115612a39578384fd5b818c0191508c601f830112612a4c578384fd5b813581811115612a5a578485fd5b8d6020828501011115612a6b578485fd5b6020830194508093505050509295985092959850929598565b60006020808385031215612a96578182fd5b825167ffffffffffffffff811115612aac578283fd5b8301601f81018513612abc578283fd5b8051612acf612aca8261321d565b6131f6565b8181528381019083850185840285018601891015612aeb578687fd5b8694505b83851015612b0d578051835260019490940193918501918501612aef565b50979650505050505050565b600060208284031215612b2a578081fd5b81516113d281613281565b600060a08284031215612b46578081fd5b612b5060a06131f6565b82358152602083013560208201526040830135612b6c8161328f565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612ba1578182fd5b612baa816131f6565b9050612bb684846127f8565b8152612bc5846020850161281d565b6020820152612bd7846040850161281d565b6040820152612be9846060850161281d565b6060820152612bfb846080850161281d565b6080820152612c0d8460a0850161281d565b60a0820152612c1f8460c0850161283d565b60c0820152612c318460e085016127a4565b60e0820152610100612c45858286016127a4565b90820152610120612c58858583016127a4565b90820152610140612c6b858583016127a4565b90820152610160612c7e85858301612852565b908201529392505050565b600060208284031215612c9a578081fd5b5051919050565b600080600060608486031215612cb5578081fd5b833592506020840135612cc781613269565b91506040840135612cd781613269565b809150509250925092565b600060208284031215612cf3578081fd5b81516113d28161328f565b6000815180845260208085019450808401835b83811015612d365781516001600160a01b031687529582019590820190600101612d11565b509495945050505050565b60008251612d5381846020870161323d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b901515815260200190565b6000602082528251806020840152612eaa81604085016020870161323d565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152700e6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526126836040830184612cfe565b600086825285602083015260a060408301526131a360a0830186612cfe565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526131eb60a0830184612cfe565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561321557600080fd5b604052919050565b600067ffffffffffffffff821115613233578081fd5b5060209081020190565b60005b83811015613258578181015183820152602001613240565b838111156124275750506000910152565b6001600160a01b038116811461327e57600080fd5b50565b801515811461327e57600080fd5b60ff8116811461327e57600080fdfea264697066735822122088d723a5af4f75f58bcb4401863bc7d118a5b6e7b33e169f602a92e48802593264736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c8063920f5c8411610097578063cdf58cd611610066578063cdf58cd6146101c8578063d8264920146101db578063e6813563146101e3578063f2fde38b146101f6576100ff565b8063920f5c84146101745780639d1211bf14610194578063b4dcfc771461019c578063baf7fa99146101a4576100ff565b806332e4b286116100d357806332e4b2861461015457806338013f021461015c578063715018a6146101645780638da5cb5b1461016c576100ff565b8062ae3bf814610104578063040141e5146101195780630542975c14610137578063074b2e431461013f575b600080fd5b61011761011236600461285d565b610209565b005b61012161034d565b60405161012e9190612d5d565b60405180910390f35b610121610371565b610147610395565b60405161012e9190613162565b61014761039a565b6101216103a0565b6101176103c4565b610121610443565b610187610182366004612987565b610452565b60405161012e9190612e80565b610121610562565b61012161057a565b6101b76101b2366004612ca1565b61059e565b60405161012e9594939291906131c0565b6101b76101d6366004612ca1565b6105e4565b6101216105ff565b6101176101f1366004612902565b610623565b61011761020436600461285d565b610924565b6102116109da565b6000546001600160a01b039081169116146102475760405162461bcd60e51b815260040161023e9061302b565b60405180910390fd5b806001600160a01b031663a9059cbb61025e610443565b6040516370a0823160e01b81526001600160a01b038516906370a082319061028a903090600401612d5d565b60206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190612c89565b6040518363ffffffff1660e01b81526004016102f7929190612e19565b602060405180830381600087803b15801561031157600080fd5b505af1158015610325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103499190612b19565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600981565b610bb881565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103cc6109da565b6000546001600160a01b039081169116146103f95760405162461bcd60e51b815260040161023e9061302b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461049c5760405162461bcd60e51b815260040161023e90612ebe565b6104a461268b565b6104e384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109de92505050565b905061055181600001518c8c60008181106104fa57fe5b905060200201602081019061050f919061285d565b8b8b600081811061051c57fe5b90506020020135846020015185604001518a8d8d600081811061053b57fe5b9050602002013588606001518960800151610a85565b5060019a9950505050505050505050565b7310f7fc1f91ba351f9c629c5947ad69bd03c05b9681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008060606105ae6126c9565b6105b988888b610e22565b8051602082015160408301516060840151608090940151929d919c509a509198509650945050505050565b60008060008060606105f46126c9565b6105b988888b6113d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b61062b6126f8565b610634886115b3565b905061063e6126f8565b610647886115b3565b90506000600186600281111561065957fe5b600281111561066457fe5b146106745781610120015161067b565b8161010001515b90506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016106ab9190612d5d565b60206040518083038186803b1580156106c357600080fd5b505afa1580156106d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fb9190612c89565b905060008189111561070d578161070f565b885b90508a6001600160a01b03168c6001600160a01b0316146107ec57898982101561074a576107478a610741838561165e565b90611698565b90505b60606107588e8e858b6116da565b9050818160008151811061076857fe5b6020026020010151111561078e5760405162461bcd60e51b815260040161023e90613060565b6107c38e8860e0015133846000815181106107a557fe5b60200260200101518d8036038101906107be9190612b35565b6118dc565b6107e48e8e836000815181106107d557fe5b6020026020010151868c611a28565b505050610808565b6108088c8660e0015133848b8036038101906107be9190612b35565b61083d6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b6108716001600160a01b038c167f000000000000000000000000000000000000000000000000000000000000000083611dbc565b60405163573ade8160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade81906108c3908e9085908d903390600401612e55565b602060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190612c89565b50505050505050505050505050565b61092c6109da565b6000546001600160a01b039081169116146109595760405162461bcd60e51b815260040161023e9061302b565b6001600160a01b03811661097f5760405162461bcd60e51b815260040161023e90612ef5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6109e661268b565b60008060008060008060008060008a806020019051810190610a089190612879565b9850985098509850985098509850985098506040518060a001604052808a6001600160a01b031681526020018981526020018881526020016040518060a001604052808981526020018881526020018760ff1681526020018681526020018581525081526020018215158152509950505050505050505050919050565b610a8d6126f8565b610a968a6115b3565b9050610acd6001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610b016001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000008a611dbc565b6040516370a0823160e01b81526000906001600160a01b038b16906370a0823190610b30903090600401612d5d565b60206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190612c89565b60405163573ade8160e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063573ade8190610bd5908d908d908c908c90600401612e55565b602060405180830381600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c279190612c89565b506040516370a0823160e01b8152610caf906001600160a01b038c16906370a0823190610c58903090600401612d5d565b60206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca89190612c89565b8290611ebb565b9050896001600160a01b03168b6001600160a01b031614610d85578789821015610ce457610ce18a610741838561165e565b90505b6000610cf08388611efd565b90506060610d008e8e84896116da565b90508281600081518110610d1057fe5b60200260200101511115610d365760405162461bcd60e51b815260040161023e90613060565b610d5b8e8660e001518b84600081518110610d4d57fe5b60200260200101518b6118dc565b610d7c8e8e83600081518110610d6d57fe5b6020026020010151858a611a28565b50505050610da1565b60e0820151610da1908c9088610d9b858a611efd565b886118dc565b610dd66001600160a01b038b167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b610e157f0000000000000000000000000000000000000000000000000000000000000000610e048b88611efd565b6001600160a01b038d169190611dbc565b5050505050505050505050565b610e2a6126c9565b6000610e47610e4061271061074186600961165e565b8490611ebb565b9050836001600160a01b0316856001600160a01b03161415610f13576000610e6e86611f22565b60408051600180825281830190925291925060609190602080830190803683370190505090508681600081518110610ea257fe5b6001600160a01b039092166020928302919091018201526040805160a08101909152848152908101610ee08761074187670de0b6b3a764000061165e565b8152602001610ef0898886611f9e565b8152602001610f00898686611f9e565b81526020018281525093505050506113d2565b60408051600280825260608083018452926020830190803683370190505090508581600081518110610f4157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508481600181518110610f6f57fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561102057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561118c57888160008151811061103357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061108157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505087816002815181106110af57fe5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063d06ca61f9061110d908890859060040161316b565b60006040518083038186803b15801561112557600080fd5b505afa92505050801561115a57506040513d6000823e601f3d908101601f191682016040526111579190810190612a84565b60015b61118457604080516003808252608082019092529060208201606080368337019050509150611187565b91505b6111ae565b6040805160038082526080820190925290602082016060803683370190505091505b60405163d06ca61f60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f906111ff908990899060040161316b565b60006040518083038186803b15801561121757600080fd5b505afa92505050801561124c57506040513d6000823e601f3d908101601f191682016040526112499190810190612a84565b60015b61128c5760408051600280825260608201835290916020830190803683370190505093508260028151811061127d57fe5b602002602001015190506112f2565b8094508460018151811061129c57fe5b6020026020010151846002815181106112b157fe5b6020026020010151116112d857846001815181106112cb57fe5b60200260200101516112ee565b836002815181106112e557fe5b60200260200101515b9150505b60006112fd8b611f22565b9050600061130a8b611f22565b9050600061133f61131f85600a86900a61165e565b610741600a85900a6113398d670de0b6b3a764000061165e565b9061165e565b90506040518060a001604052808581526020018281526020016113638f8e87611f9e565b81526020016113738e8786611f9e565b815260200185156113a6578860018151811061138b57fe5b6020026020010151861461139f57866113a1565b895b6113c4565b60408051600280825260608201835290916020830190803683375050505b905299505050505050505050505b9392505050565b6113e16126c9565b826001600160a01b0316846001600160a01b031614156114b757600061141861141161271061074186600961165e565b8490611efd565b9050600061142586611f22565b6040805160018082528183019092529192506060919060208083019080368337019050509050868160008151811061145957fe5b6001600160a01b039092166020928302919091018201526040805160a081019091528481529081016114978561074189670de0b6b3a764000061165e565b81526020016114a7898686611f9e565b8152602001610f00898886611f9e565b6060806114c5868686611fed565b91509150600061151f6114fc6127106107416009876000815181106114e657fe5b602002602001015161165e90919063ffffffff16565b8460008151811061150957fe5b6020026020010151611efd90919063ffffffff16565b9050600061152c88611f22565b9050600061153988611f22565b9050600061156861154e85600a85900a61165e565b610741600a86900a6113398c670de0b6b3a764000061165e565b90506040518060a0016040528085815260200182815260200161158c8c8787611f9e565b815260200161159c8b8b86611f9e565b815260200195909552509298975050505050505050565b6115bb6126f8565b6040516335ea6a7560e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335ea6a7590611607908590600401612d5d565b6101806040518083038186803b15801561162057600080fd5b505afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612b8e565b92915050565b60008261166d57506000611658565b8282028284828161167a57fe5b04146113d25760405162461bcd60e51b815260040161023e90612fea565b60006113d283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123aa565b60608082156117b357604080516003808252608082019092529060208201606080368337019050509050858160008151811061171257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061176057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061178e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611830565b604080516002808252606082018352909160208301908036833701905050905085816000815181106117e157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061180f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca749061187e908790859060040161316b565b60006040518083038186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118d29190810190612a84565b9695505050505050565b6118e5816123e1565b1561196957836001600160a01b031663d505accf8430846000015185602001518660400151876060015188608001516040518863ffffffff1660e01b81526004016119369796959493929190612dd8565b600060405180830381600087803b15801561195057600080fd5b505af1158015611964573d6000803e3d6000fd5b505050505b61197e6001600160a01b038516843085612406565b604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906369328dec906119ce90889086903090600401612e32565b602060405180830381600087803b1580156119e857600080fd5b505af11580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a209190612c89565b505050505050565b600080611a3487611f22565b90506000611a4187611f22565b90506000611a4e8961242d565b90506000611a5b8961242d565b90506000611a9f611a70612710610bb8611efd565b611a99611a8186600a89900a61165e565b610741611a9287600a8c900a61165e565b8d9061165e565b906124cc565b9050808910611ac05760405162461bcd60e51b815260040161023e90612fa7565b611af56001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000006000611dbc565b611b296001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b611dbc565b60608715611c01576040805160038082526080820190925290602082016060803683370190505090508b81600081518110611b6057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611bae57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600281518110611bdc57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611c7e565b60408051600280825260608201835290916020830190803683370190505090508b81600081518110611c2f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508a81600181518110611c5d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b604051634401edf760e11b81526060906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638803dbee90611cd5908d908f90879030904290600401613184565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d2b9190810190612a84565b90507fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8d8d83600081518110611d5d57fe5b602002602001015184600186510381518110611d7557fe5b6020026020010151604051611d8d9493929190612daf565b60405180910390a180600081518110611da257fe5b602002602001015197505050505050505095945050505050565b801580611e445750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90611df29030908690600401612d71565b60206040518083038186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190612c89565b155b611e605760405162461bcd60e51b815260040161023e906130d5565b611eb68363095ea7b360e01b8484604051602401611e7f929190612e19565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261253e565b505050565b60006113d283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612623565b6000828201838110156113d25760405162461bcd60e51b815260040161023e90612f3b565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5d57600080fd5b505afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f959190612ce2565b60ff1692915050565b600080611fbe7310f7fc1f91ba351f9c629c5947ad69bd03c05b9661242d565b90506000611fcb8661242d565b90506118d2670de0b6b3a764000061074184611339600a89900a838b8861165e565b604080516002808252606082810190935282918291816020016020820280368337019050509050858160008151811061202257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061205057fe5b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092526060928392839291820183803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b03161415801561210157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031614155b1561226d57888160008151811061211457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061216257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050878160028151811061219057fe5b6001600160a01b0392831660209182029290920101526040516307c0329d60e21b81527f000000000000000000000000000000000000000000000000000000000000000090911690631f00ca74906121ee908a90859060040161316b565b60006040518083038186803b15801561220657600080fd5b505afa92505050801561223b57506040513d6000823e601f3d908101601f191682016040526122389190810190612a84565b60015b61226557604080516003808252608082019092529060208201606080368337019050509150612268565b91505b61228f565b6040805160038082526080820190925290602082016060803683370190505091505b6040516307c0329d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f00ca74906122dd908a90889060040161316b565b60006040518083038186803b1580156122f557600080fd5b505afa92505050801561232a57506040513d6000823e601f3d908101601f191682016040526123279190810190612a84565b60015b61233b5790945092506123a2915050565b8093508360008151811061234b57fe5b60200260200101518360008151811061236057fe5b602002602001015110801561238a57508260008151811061237d57fe5b6020026020010151600014155b612395578385612398565b82825b9650965050505050505b935093915050565b600081836123cb5760405162461bcd60e51b815260040161023e9190612e8b565b5060008385816123d757fe5b0495945050505050565b6000816040015160ff1682602001511480156123ff57506020820151155b1592915050565b612427846323b872dd60e01b858585604051602401611e7f93929190612d8b565b50505050565b60405163b3596f0760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b3596f079061247c908590600401612d5d565b60206040518083038186803b15801561249457600080fd5b505afa1580156124a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190612c89565b60008215806124d9575081155b156124e657506000611658565b8161138819816124f257fe5b0483111560405180604001604052806002815260200161068760f31b8152509061252f5760405162461bcd60e51b815260040161023e9190612e8b565b50506127109102611388010490565b612550826001600160a01b031661264f565b61256c5760405162461bcd60e51b815260040161023e9061312b565b60006060836001600160a01b0316836040516125889190612d41565b6000604051808303816000865af19150503d80600081146125c5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ca565b606091505b5091509150816125ec5760405162461bcd60e51b815260040161023e90612f72565b80511561242757808060200190518101906126079190612b19565b6124275760405162461bcd60e51b815260040161023e9061308b565b600081848411156126475760405162461bcd60e51b815260040161023e9190612e8b565b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061268357508115155b949350505050565b6040518060a0016040528060006001600160a01b0316815260200160008152602001600081526020016126bc612763565b8152600060209091015290565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001606081525090565b60405180610180016040528061270c612791565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6040518060200160405280600081525090565b805161165881613269565b60008083601f8401126127c0578182fd5b50813567ffffffffffffffff8111156127d7578182fd5b60208301915083602080830285010111156127f157600080fd5b9250929050565b600060208284031215612809578081fd5b61281360206131f6565b9151825250919050565b80516fffffffffffffffffffffffffffffffff8116811461165857600080fd5b805164ffffffffff8116811461165857600080fd5b80516116588161328f565b60006020828403121561286e578081fd5b81356113d281613269565b60008060008060008060008060006101208a8c031215612897578485fd5b89516128a281613269565b8099505060208a0151975060408a0151965060608a0151955060808a0151945060a08a01516128d08161328f565b8094505060c08a0151925060e08a015191506101008a01516128f181613281565b809150509295985092959850929598565b600080600080600080600087890361016081121561291e578182fd5b883561292981613269565b9750602089013561293981613269565b965060408901359550606089013594506080890135935060a0609f1982011215612961578182fd5b5060a08801915061014088013561297781613281565b8091505092959891949750929550565b600080600080600080600080600060a08a8c0312156129a4578283fd5b893567ffffffffffffffff808211156129bb578485fd5b6129c78d838e016127af565b909b50995060208c01359150808211156129df578485fd5b6129eb8d838e016127af565b909950975060408c0135915080821115612a03578485fd5b612a0f8d838e016127af565b909750955060608c01359150612a2482613269565b90935060808b01359080821115612a39578384fd5b818c0191508c601f830112612a4c578384fd5b813581811115612a5a578485fd5b8d6020828501011115612a6b578485fd5b6020830194508093505050509295985092959850929598565b60006020808385031215612a96578182fd5b825167ffffffffffffffff811115612aac578283fd5b8301601f81018513612abc578283fd5b8051612acf612aca8261321d565b6131f6565b8181528381019083850185840285018601891015612aeb578687fd5b8694505b83851015612b0d578051835260019490940193918501918501612aef565b50979650505050505050565b600060208284031215612b2a578081fd5b81516113d281613281565b600060a08284031215612b46578081fd5b612b5060a06131f6565b82358152602083013560208201526040830135612b6c8161328f565b6040820152606083810135908201526080928301359281019290925250919050565b6000610180808385031215612ba1578182fd5b612baa816131f6565b9050612bb684846127f8565b8152612bc5846020850161281d565b6020820152612bd7846040850161281d565b6040820152612be9846060850161281d565b6060820152612bfb846080850161281d565b6080820152612c0d8460a0850161281d565b60a0820152612c1f8460c0850161283d565b60c0820152612c318460e085016127a4565b60e0820152610100612c45858286016127a4565b90820152610120612c58858583016127a4565b90820152610140612c6b858583016127a4565b90820152610160612c7e85858301612852565b908201529392505050565b600060208284031215612c9a578081fd5b5051919050565b600080600060608486031215612cb5578081fd5b833592506020840135612cc781613269565b91506040840135612cd781613269565b809150509250925092565b600060208284031215612cf3578081fd5b81516113d28161328f565b6000815180845260208085019450808401835b83811015612d365781516001600160a01b031687529582019590820190600101612d11565b509495945050505050565b60008251612d5381846020870161323d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b901515815260200190565b6000602082528251806020840152612eaa81604085016020870161323d565b601f01601f19169190910160400192915050565b6020808252601b908201527f43414c4c45525f4d5553545f42455f4c454e44494e475f504f4f4c0000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b60208082526023908201527f6d6178416d6f756e74546f5377617020657863656564206d617820736c69707060408201526261676560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601190820152700e6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b6020808252601f908201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604082015260600190565b90815260200190565b6000838252604060208301526126836040830184612cfe565b600086825285602083015260a060408301526131a360a0830186612cfe565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015284604083015283606083015260a060808301526131eb60a0830184612cfe565b979650505050505050565b60405181810167ffffffffffffffff8111828210171561321557600080fd5b604052919050565b600067ffffffffffffffff821115613233578081fd5b5060209081020190565b60005b83811015613258578181015183820152602001613240565b838111156124275750506000910152565b6001600160a01b038116811461327e57600080fd5b50565b801515811461327e57600080fd5b60ff8116811461327e57600080fdfea264697066735822122088d723a5af4f75f58bcb4401863bc7d118a5b6e7b33e169f602a92e48802593264736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UpgradeabilityProxy.json b/eth_defi/abi/aave_v2/UpgradeabilityProxy.json new file mode 100644 index 00000000..5008594f --- /dev/null +++ b/eth_defi/abi/aave_v2/UpgradeabilityProxy.json @@ -0,0 +1,44 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UpgradeabilityProxy", + "sourceName": "contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x608060405260405161037b38038061037b8339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ec826101ab565b8051156101a4576000826001600160a01b0316826040518082805190602001908083835b6020831061012f5780518252601f199092019160209182019101610110565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461018f576040519150601f19603f3d011682016040523d82523d6000602084013e610194565b606091505b50509050806101a257600080fd5b505b5050610259565b6101be8161021d60201b6100201760201c565b6101f95760405162461bcd60e51b815260040180806020018281038252603b815260200180610340603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061025157508115155b949350505050565b60d9806102676000396000f3fe6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea264697066735822122016eb1e9dc0c7c516ba3a47eb4d2576f3098ba954b9cc8aa04bc402f582d7a83d64736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373", + "deployedBytecode": "0x6080604052600a600c565b005b6012601e565b601e601a605b565b6080565b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590605357508115155b949350505050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea264697066735822122016eb1e9dc0c7c516ba3a47eb4d2576f3098ba954b9cc8aa04bc402f582d7a83d64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/UserConfiguration.json b/eth_defi/abi/aave_v2/UserConfiguration.json new file mode 100644 index 00000000..38c40a8b --- /dev/null +++ b/eth_defi/abi/aave_v2/UserConfiguration.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UserConfiguration", + "sourceName": "contracts/protocol/libraries/configuration/UserConfiguration.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ce80a6184653964529bff62fe0cb15511b1d5d83fd9a41cecb8ff74155bc52ef64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ce80a6184653964529bff62fe0cb15511b1d5d83fd9a41cecb8ff74155bc52ef64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/ValidationLogic.json b/eth_defi/abi/aave_v2/ValidationLogic.json new file mode 100644 index 00000000..204b3d89 --- /dev/null +++ b/eth_defi/abi/aave_v2/ValidationLogic.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ValidationLogic", + "sourceName": "contracts/protocol/libraries/logic/ValidationLogic.sol", + "abi": [ + { + "inputs": [], + "name": "REBALANCE_UP_LIQUIDITY_RATE_THRESHOLD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REBALANCE_UP_USAGE_RATIO_THRESHOLD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x612061610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063721a92f911610070578063721a92f9146100fb578063a8695b1d1461010e578063abfcc86a14610121578063d09db04a14610129578063fa0c21491461013c5761009d565b80630eca322b146100a2578063548cad09146100b75780635494eb8a146100ca5780635fa297e5146100e8575b600080fd5b6100b56100b0366004611e45565b61014f565b005b6100b56100c5366004611d95565b610217565b6100d261050d565b6040516100df9190611ffc565b60405180910390f35b6100b56100f6366004611d2b565b61051d565b6100b5610109366004611bf9565b6106c2565b6100b561011c366004611dfc565b610b8a565b6100d2610e23565b6100b5610137366004611c9d565b610e29565b6100b561014a366004611e66565b610fc7565b60008061015b8461110d565b50506040805180820190915260018152603160f81b60208201529193509150836101a15760405162461bcd60e51b81526004016101989190611f31565b60405180910390fd5b506040805180820190915260018152601960f91b6020820152826101d85760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603360f81b602082015281156102105760405162461bcd60e51b81526004016101989190611f31565b5050505050565b60006102228661110d565b505050905080604051806040016040528060018152602001601960f91b815250906102605760405162461bcd60e51b81526004016101989190611f31565b506000610356610351856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190611ec0565b876001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031357600080fd5b505afa158015610327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190611ec0565b90611145565b611173565b905060006103d9876001600160a01b03166370a08231866040518263ffffffff1660e01b81526004016103899190611ed8565b60206040518083038186803b1580156103a157600080fd5b505afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103519190611ec0565b9050600082156103fc576103f76103f08385611145565b84906111c3565b6103ff565b60005b60028a015460078b0154604080516380031e3760e01b815290519394506fffffffffffffffffffffffffffffffff909216926000926001600160a01b03909216916380031e37916004808301926020929190829003018186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190611ec0565b90506b0311d253316c79d37600000083101580156104c657506104c281610fa061126e565b8211155b60405180604001604052806002815260200161191960f11b815250906104ff5760405162461bcd60e51b81526004016101989190611f31565b505050505050505050505050565b6b0311d253316c79d37600000081565b6004808901546040516370a0823160e01b81526000926001600160a01b03909216916370a082319161055191339101611ed8565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611ec0565b90506000811160405180604001604052806002815260200161313960f01b815250906105e05760405162461bcd60e51b81526004016101989190611f31565b50868061067d5750604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e61704249061062d908b90339086908c908c908c908c908c90600401611eec565b60206040518083038186803b15801561064557600080fd5b505af4158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190611d0f565b60405180604001604052806002815260200161032360f41b815250906106b65760405162461bcd60e51b81526004016101989190611f31565b50505050505050505050565b6106ca611aee565b6106d38c61110d565b151561014085015215156101208401521515610100830152151560e082018190526040805180820190915260018152601960f91b60208201529061072a5760405162461bcd60e51b81526004016101989190611f31565b5080610100015115604051806040016040528060018152602001603360f81b8152509061076a5760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603160f81b60208201528a6107a15760405162461bcd60e51b81526004016101989190611f31565b50806101200151604051806040016040528060018152602001603760f81b815250906107e05760405162461bcd60e51b81526004016101989190611f31565b5087600214806107f05750876001145b604051806040016040528060018152602001600760fb1b815250906108285760405162461bcd60e51b81526004016101989190611f31565b50604080516020810190915285548152610848908c9088908787876112e0565b60c08601526020808601919091529084526080840191909152606083018290526040805180820190915260018152603960f81b91810191909152906108a05760405162461bcd60e51b81526004016101989190611f31565b50670de0b6b3a76400008160c001511160405180604001604052806002815260200161031360f41b815250906108e95760405162461bcd60e51b81526004016101989190611f31565b50805160808201516109069190610900908c611145565b906117a7565b6040808301829052606083015181518083019092526002825261313160f01b60208301529091111561094b5760405162461bcd60e51b81526004016101989190611f31565b506001881415610b7b5780610140015160405180604001604052806002815260200161189960f11b815250906109945760405162461bcd60e51b81526004016101989190611f31565b5060078c01546040805160208101909152865481526109bc91600160a01b900460ff16611835565b15806109ce57506109cc8c61188d565b155b80610a5857506004808d01546040516370a0823160e01b81526001600160a01b03909116916370a0823191610a05918f9101611ed8565b60206040518083038186803b158015610a1d57600080fd5b505afa158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a559190611ec0565b8a115b60405180604001604052806002815260200161313360f01b81525090610a915760405162461bcd60e51b81526004016101989190611f31565b508c6001600160a01b03166370a082318d60040160009054906101000a90046001600160a01b03166040518263ffffffff1660e01b8152600401610ad59190611ed8565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190611ec0565b60a08201819052600090610b39908961126e565b9050808b1115604051806040016040528060028152602001610c4d60f21b81525090610b785760405162461bcd60e51b81526004016101989190611f31565b50505b50505050505050505050505050565b60008080610b978861110d565b9350509250925082604051806040016040528060018152602001601960f91b81525090610bd75760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603360f81b60208201528215610c0f5760405162461bcd60e51b81526004016101989190611f31565b506001846002811115610c1e57fe5b1415610c6157604080518082019091526002815261313760f01b602082015286610c5b5760405162461bcd60e51b81526004016101989190611f31565b50610e19565b6002846002811115610c6f57fe5b1415610dea57604080518082019091526002815261062760f31b602082015285610cac5760405162461bcd60e51b81526004016101989190611f31565b50604080518082019091526002815261189960f11b602082015281610ce45760405162461bcd60e51b81526004016101989190611f31565b506007880154604080516020810190915288548152610d0c91600160a01b900460ff16611835565b1580610d1e5750610d1c8861188d565b155b80610db157506004808901546040516370a0823160e01b81526001600160a01b03909116916370a0823191610d5591339101611ed8565b60206040518083038186803b158015610d6d57600080fd5b505afa158015610d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da59190611ec0565b610daf8787611145565b115b60405180604001604052806002815260200161313360f01b81525090610c5b5760405162461bcd60e51b81526004016101989190611f31565b60408051808201825260018152600760fb1b6020820152905162461bcd60e51b81526101989190600401611f31565b5050505050505050565b610fa081565b6040805180820190915260018152603160f81b602082015287610e5f5760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603560f81b602082015286881115610e995760405162461bcd60e51b81526004016101989190611f31565b506001600160a01b0388166000908152602086905260408120610ebb9061110d565b505050905080604051806040016040528060018152602001601960f91b81525090610ef95760405162461bcd60e51b81526004016101989190611f31565b50604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e617042490610f3f908c9033908d908c908c908c908c908c90600401611eec565b60206040518083038186803b158015610f5757600080fd5b505af4158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190611d0f565b604051806040016040528060018152602001601b60f91b815250906106b65760405162461bcd60e51b81526004016101989190611f31565b6000610fd287611895565b905080604051806040016040528060018152602001601960f91b8152509061100d5760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603160f81b6020820152866110445760405162461bcd60e51b81526004016101989190611f31565b506000831180156110605750600185600281111561105e57fe5b145b8061108157506000821180156110815750600285600281111561107f57fe5b145b60405180604001604052806002815260200161313560f01b815250906110ba5760405162461bcd60e51b81526004016101989190611f31565b50600019861415806110d45750336001600160a01b038516145b60405180604001604052806002815260200161189b60f11b81525090610e195760405162461bcd60e51b81526004016101989190611f31565b54600160381b811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b60008282018381101561116a5760405162461bcd60e51b815260040161019890611f84565b90505b92915050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906111bc5760405162461bcd60e51b81526004016101989190611f31565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826111fd5760405162461bcd60e51b81526004016101989190611f31565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce800000082190485111561124b5760405162461bcd60e51b81526004016101989190611f31565b5082816b033b2e3c9fd0803ce80000008602018161126557fe5b04949350505050565b600082158061127b575081155b156112885750600061116d565b81611388198161129457fe5b0483111560405180604001604052806002815260200161068760f31b815250906112d15760405162461bcd60e51b81526004016101989190611f31565b50506127109102611388010490565b60008060008060006112f0611b50565b6112f98a6118a1565b15611317576000806000806000199550955095509550955050611799565b600060e08201525b878160e0015110156116f85760e081015161133b908b906118a6565b611344576116e8565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061137b816118f7565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916113cd9190600401611ed8565b60206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190611ec0565b825260c08201511580159061143d575060e082015161143d908c90611835565b15611561578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016114859190611ed8565b60206040518083038186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190611ec0565b60408301819052602083015183516000926114fa92916114f491611922565b9061195c565b61012084015190915061150d9082611145565b61012084015260a083015161153390611527908390611922565b61016085015190611145565b61016084015260c08301516115599061154d908390611922565b61018085015190611145565b610180840152505b60e0820151611571908c9061199e565b156116e6578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016115b99190611ed8565b60206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190611ec0565b8260600181815250506116b38160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016116589190611ed8565b60206040518083038186803b15801561167057600080fd5b505afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190611ec0565b606084015190611145565b60608301819052602083015183516116df926116d392916114f491611922565b61014084015190611145565b6101408301525b505b60e081018051600101905261131f565b60008161012001511161170c576000611721565b6101208101516101608201516117219161195c565b61016082015261012081015161173857600061174d565b61012081015161018082015161174d9161195c565b610180820181905261012082015161014083015161176a926119ef565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b604080518082019091526002815261035360f41b6020820152600090826117e15760405162461bcd60e51b81526004016101989190611f31565b5060408051808201909152600280825261068760f31b60208301528304906127108219048511156118255760405162461bcd60e51b81526004016101989190611f31565b5082816127108602018161126557fe5b60006080821060405180604001604052806002815260200161373760f01b815250906118745760405162461bcd60e51b81526004016101989190611f31565b5050815160016002830281019190911c16151592915050565b5461ffff1690565b54600160381b16151590565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906118e55760405162461bcd60e51b81526004016101989190611f31565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000826119315750600061116d565b8282028284828161193e57fe5b041461116a5760405162461bcd60e51b815260040161019890611fbb565b600061116a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1d565b60006080821060405180604001604052806002815260200161373760f01b815250906119dd5760405162461bcd60e51b81526004016101989190611f31565b50509051600160029092021c16151590565b6000826119ff5750600019611a16565b611a1383611a0d868561126e565b90611a54565b90505b9392505050565b60008183611a3e5760405162461bcd60e51b81526004016101989190611f31565b506000838581611a4a57fe5b0495945050505050565b604080518082019091526002815261035360f41b602082015260009082611a8e5760405162461bcd60e51b81526004016101989190611f31565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115611ad85760405162461bcd60e51b81526004016101989190611f31565b508281670de0b6b3a76400008602018161126557fe5b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b80356003811061116d57600080fd5b6000806000806000806000806000806000806101808d8f031215611c1b578788fd5b8c35611c2681612005565b9b5060208d01359a5060408d0135611c3d81612005565b995060608d0135985060808d0135975060a08d0135965060c08d0135955060e08d013594506101008d013593506101208d013592506101408d013591506101608d0135611c8981612005565b809150509295989b509295989b509295989b565b600080600080600080600080610100898b031215611cb9578384fd5b8835611cc481612005565b97506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e0890135611cfe81612005565b809150509295985092959890939650565b600060208284031215611d20578081fd5b815161116a8161201d565b600080600080600080600080610100898b031215611d47578384fd5b883597506020890135611d5981612005565b96506040890135611d698161201d565b9550606089013594506080890135935060a0890135925060c0890135915060e0890135611cfe81612005565b600080600080600060a08688031215611dac578081fd5b853594506020860135611dbe81612005565b93506040860135611dce81612005565b92506060860135611dde81612005565b91506080860135611dee81612005565b809150509295509295909350565b600080600080600060a08688031215611e13578081fd5b85359450602086013593506040860135925060608601359150611e398760808801611bea565b90509295509295909350565b60008060408385031215611e57578182fd5b50508035926020909101359150565b60008060008060008060c08789031215611e7e578384fd5b8635955060208701359450611e968860408901611bea565b93506060870135611ea681612005565b9598949750929560808101359460a0909101359350915050565b600060208284031215611ed1578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0398891681529688166020880152604087019590955260608601939093529054608085015260a084015260c083015290911660e08201526101000190565b6000602080835283518082850152825b81811015611f5d57858101830151858201604001528201611f41565b81811115611f6e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b6001600160a01b038116811461201a57600080fd5b50565b801515811461201a57600080fdfea2646970667358221220303aaeda3a76c08850dade0a06fe2a9b47ead0c5422fdd3a086c890c77c28c1e64736f6c634300060c0033", + "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061009d5760003560e01c8063721a92f911610070578063721a92f9146100fb578063a8695b1d1461010e578063abfcc86a14610121578063d09db04a14610129578063fa0c21491461013c5761009d565b80630eca322b146100a2578063548cad09146100b75780635494eb8a146100ca5780635fa297e5146100e8575b600080fd5b6100b56100b0366004611e45565b61014f565b005b6100b56100c5366004611d95565b610217565b6100d261050d565b6040516100df9190611ffc565b60405180910390f35b6100b56100f6366004611d2b565b61051d565b6100b5610109366004611bf9565b6106c2565b6100b561011c366004611dfc565b610b8a565b6100d2610e23565b6100b5610137366004611c9d565b610e29565b6100b561014a366004611e66565b610fc7565b60008061015b8461110d565b50506040805180820190915260018152603160f81b60208201529193509150836101a15760405162461bcd60e51b81526004016101989190611f31565b60405180910390fd5b506040805180820190915260018152601960f91b6020820152826101d85760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603360f81b602082015281156102105760405162461bcd60e51b81526004016101989190611f31565b5050505050565b60006102228661110d565b505050905080604051806040016040528060018152602001601960f91b815250906102605760405162461bcd60e51b81526004016101989190611f31565b506000610356610351856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a257600080fd5b505afa1580156102b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102da9190611ec0565b876001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561031357600080fd5b505afa158015610327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034b9190611ec0565b90611145565b611173565b905060006103d9876001600160a01b03166370a08231866040518263ffffffff1660e01b81526004016103899190611ed8565b60206040518083038186803b1580156103a157600080fd5b505afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103519190611ec0565b9050600082156103fc576103f76103f08385611145565b84906111c3565b6103ff565b60005b60028a015460078b0154604080516380031e3760e01b815290519394506fffffffffffffffffffffffffffffffff909216926000926001600160a01b03909216916380031e37916004808301926020929190829003018186803b15801561046557600080fd5b505afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190611ec0565b90506b0311d253316c79d37600000083101580156104c657506104c281610fa061126e565b8211155b60405180604001604052806002815260200161191960f11b815250906104ff5760405162461bcd60e51b81526004016101989190611f31565b505050505050505050505050565b6b0311d253316c79d37600000081565b6004808901546040516370a0823160e01b81526000926001600160a01b03909216916370a082319161055191339101611ed8565b60206040518083038186803b15801561056957600080fd5b505afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611ec0565b90506000811160405180604001604052806002815260200161313960f01b815250906105e05760405162461bcd60e51b81526004016101989190611f31565b50868061067d5750604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e61704249061062d908b90339086908c908c908c908c908c90600401611eec565b60206040518083038186803b15801561064557600080fd5b505af4158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190611d0f565b60405180604001604052806002815260200161032360f41b815250906106b65760405162461bcd60e51b81526004016101989190611f31565b50505050505050505050565b6106ca611aee565b6106d38c61110d565b151561014085015215156101208401521515610100830152151560e082018190526040805180820190915260018152601960f91b60208201529061072a5760405162461bcd60e51b81526004016101989190611f31565b5080610100015115604051806040016040528060018152602001603360f81b8152509061076a5760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603160f81b60208201528a6107a15760405162461bcd60e51b81526004016101989190611f31565b50806101200151604051806040016040528060018152602001603760f81b815250906107e05760405162461bcd60e51b81526004016101989190611f31565b5087600214806107f05750876001145b604051806040016040528060018152602001600760fb1b815250906108285760405162461bcd60e51b81526004016101989190611f31565b50604080516020810190915285548152610848908c9088908787876112e0565b60c08601526020808601919091529084526080840191909152606083018290526040805180820190915260018152603960f81b91810191909152906108a05760405162461bcd60e51b81526004016101989190611f31565b50670de0b6b3a76400008160c001511160405180604001604052806002815260200161031360f41b815250906108e95760405162461bcd60e51b81526004016101989190611f31565b50805160808201516109069190610900908c611145565b906117a7565b6040808301829052606083015181518083019092526002825261313160f01b60208301529091111561094b5760405162461bcd60e51b81526004016101989190611f31565b506001881415610b7b5780610140015160405180604001604052806002815260200161189960f11b815250906109945760405162461bcd60e51b81526004016101989190611f31565b5060078c01546040805160208101909152865481526109bc91600160a01b900460ff16611835565b15806109ce57506109cc8c61188d565b155b80610a5857506004808d01546040516370a0823160e01b81526001600160a01b03909116916370a0823191610a05918f9101611ed8565b60206040518083038186803b158015610a1d57600080fd5b505afa158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a559190611ec0565b8a115b60405180604001604052806002815260200161313360f01b81525090610a915760405162461bcd60e51b81526004016101989190611f31565b508c6001600160a01b03166370a082318d60040160009054906101000a90046001600160a01b03166040518263ffffffff1660e01b8152600401610ad59190611ed8565b60206040518083038186803b158015610aed57600080fd5b505afa158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190611ec0565b60a08201819052600090610b39908961126e565b9050808b1115604051806040016040528060028152602001610c4d60f21b81525090610b785760405162461bcd60e51b81526004016101989190611f31565b50505b50505050505050505050505050565b60008080610b978861110d565b9350509250925082604051806040016040528060018152602001601960f91b81525090610bd75760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603360f81b60208201528215610c0f5760405162461bcd60e51b81526004016101989190611f31565b506001846002811115610c1e57fe5b1415610c6157604080518082019091526002815261313760f01b602082015286610c5b5760405162461bcd60e51b81526004016101989190611f31565b50610e19565b6002846002811115610c6f57fe5b1415610dea57604080518082019091526002815261062760f31b602082015285610cac5760405162461bcd60e51b81526004016101989190611f31565b50604080518082019091526002815261189960f11b602082015281610ce45760405162461bcd60e51b81526004016101989190611f31565b506007880154604080516020810190915288548152610d0c91600160a01b900460ff16611835565b1580610d1e5750610d1c8861188d565b155b80610db157506004808901546040516370a0823160e01b81526001600160a01b03909116916370a0823191610d5591339101611ed8565b60206040518083038186803b158015610d6d57600080fd5b505afa158015610d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da59190611ec0565b610daf8787611145565b115b60405180604001604052806002815260200161313360f01b81525090610c5b5760405162461bcd60e51b81526004016101989190611f31565b60408051808201825260018152600760fb1b6020820152905162461bcd60e51b81526101989190600401611f31565b5050505050505050565b610fa081565b6040805180820190915260018152603160f81b602082015287610e5f5760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603560f81b602082015286881115610e995760405162461bcd60e51b81526004016101989190611f31565b506001600160a01b0388166000908152602086905260408120610ebb9061110d565b505050905080604051806040016040528060018152602001601960f91b81525090610ef95760405162461bcd60e51b81526004016101989190611f31565b50604051633985c10960e21b815273__$52a8a86ab43135662ff256bbc95497e8e3$__9063e617042490610f3f908c9033908d908c908c908c908c908c90600401611eec565b60206040518083038186803b158015610f5757600080fd5b505af4158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190611d0f565b604051806040016040528060018152602001601b60f91b815250906106b65760405162461bcd60e51b81526004016101989190611f31565b6000610fd287611895565b905080604051806040016040528060018152602001601960f91b8152509061100d5760405162461bcd60e51b81526004016101989190611f31565b506040805180820190915260018152603160f81b6020820152866110445760405162461bcd60e51b81526004016101989190611f31565b506000831180156110605750600185600281111561105e57fe5b145b8061108157506000821180156110815750600285600281111561107f57fe5b145b60405180604001604052806002815260200161313560f01b815250906110ba5760405162461bcd60e51b81526004016101989190611f31565b50600019861415806110d45750336001600160a01b038516145b60405180604001604052806002815260200161189b60f11b81525090610e195760405162461bcd60e51b81526004016101989190611f31565b54600160381b811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b60008282018381101561116a5760405162461bcd60e51b815260040161019890611f84565b90505b92915050565b6000633b9aca0082810290839082041460405180604001604052806002815260200161068760f31b815250906111bc5760405162461bcd60e51b81526004016101989190611f31565b5092915050565b604080518082019091526002815261035360f41b6020820152600090826111fd5760405162461bcd60e51b81526004016101989190611f31565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce800000082190485111561124b5760405162461bcd60e51b81526004016101989190611f31565b5082816b033b2e3c9fd0803ce80000008602018161126557fe5b04949350505050565b600082158061127b575081155b156112885750600061116d565b81611388198161129457fe5b0483111560405180604001604052806002815260200161068760f31b815250906112d15760405162461bcd60e51b81526004016101989190611f31565b50506127109102611388010490565b60008060008060006112f0611b50565b6112f98a6118a1565b15611317576000806000806000199550955095509550955050611799565b600060e08201525b878160e0015110156116f85760e081015161133b908b906118a6565b611344576116e8565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061137b816118f7565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916113cd9190600401611ed8565b60206040518083038186803b1580156113e557600080fd5b505afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190611ec0565b825260c08201511580159061143d575060e082015161143d908c90611835565b15611561578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016114859190611ed8565b60206040518083038186803b15801561149d57600080fd5b505afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190611ec0565b60408301819052602083015183516000926114fa92916114f491611922565b9061195c565b61012084015190915061150d9082611145565b61012084015260a083015161153390611527908390611922565b61016085015190611145565b61016084015260c08301516115599061154d908390611922565b61018085015190611145565b610180840152505b60e0820151611571908c9061199e565b156116e6578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016115b99190611ed8565b60206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190611ec0565b8260600181815250506116b38160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b81526004016116589190611ed8565b60206040518083038186803b15801561167057600080fd5b505afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a89190611ec0565b606084015190611145565b60608301819052602083015183516116df926116d392916114f491611922565b61014084015190611145565b6101408301525b505b60e081018051600101905261131f565b60008161012001511161170c576000611721565b6101208101516101608201516117219161195c565b61016082015261012081015161173857600061174d565b61012081015161018082015161174d9161195c565b610180820181905261012082015161014083015161176a926119ef565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b604080518082019091526002815261035360f41b6020820152600090826117e15760405162461bcd60e51b81526004016101989190611f31565b5060408051808201909152600280825261068760f31b60208301528304906127108219048511156118255760405162461bcd60e51b81526004016101989190611f31565b5082816127108602018161126557fe5b60006080821060405180604001604052806002815260200161373760f01b815250906118745760405162461bcd60e51b81526004016101989190611f31565b5050815160016002830281019190911c16151592915050565b5461ffff1690565b54600160381b16151590565b511590565b60006080821060405180604001604052806002815260200161373760f01b815250906118e55760405162461bcd60e51b81526004016101989190611f31565b50509051600360029092021c16151590565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b6000826119315750600061116d565b8282028284828161193e57fe5b041461116a5760405162461bcd60e51b815260040161019890611fbb565b600061116a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1d565b60006080821060405180604001604052806002815260200161373760f01b815250906119dd5760405162461bcd60e51b81526004016101989190611f31565b50509051600160029092021c16151590565b6000826119ff5750600019611a16565b611a1383611a0d868561126e565b90611a54565b90505b9392505050565b60008183611a3e5760405162461bcd60e51b81526004016101989190611f31565b506000838581611a4a57fe5b0495945050505050565b604080518082019091526002815261035360f41b602082015260009082611a8e5760405162461bcd60e51b81526004016101989190611f31565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115611ad85760405162461bcd60e51b81526004016101989190611f31565b508281670de0b6b3a76400008602018161126557fe5b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581526020016000151581526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b80356003811061116d57600080fd5b6000806000806000806000806000806000806101808d8f031215611c1b578788fd5b8c35611c2681612005565b9b5060208d01359a5060408d0135611c3d81612005565b995060608d0135985060808d0135975060a08d0135965060c08d0135955060e08d013594506101008d013593506101208d013592506101408d013591506101608d0135611c8981612005565b809150509295989b509295989b509295989b565b600080600080600080600080610100898b031215611cb9578384fd5b8835611cc481612005565b97506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e0890135611cfe81612005565b809150509295985092959890939650565b600060208284031215611d20578081fd5b815161116a8161201d565b600080600080600080600080610100898b031215611d47578384fd5b883597506020890135611d5981612005565b96506040890135611d698161201d565b9550606089013594506080890135935060a0890135925060c0890135915060e0890135611cfe81612005565b600080600080600060a08688031215611dac578081fd5b853594506020860135611dbe81612005565b93506040860135611dce81612005565b92506060860135611dde81612005565b91506080860135611dee81612005565b809150509295509295909350565b600080600080600060a08688031215611e13578081fd5b85359450602086013593506040860135925060608601359150611e398760808801611bea565b90509295509295909350565b60008060408385031215611e57578182fd5b50508035926020909101359150565b60008060008060008060c08789031215611e7e578384fd5b8635955060208701359450611e968860408901611bea565b93506060870135611ea681612005565b9598949750929560808101359460a0909101359350915050565b600060208284031215611ed1578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0398891681529688166020880152604087019590955260608601939093529054608085015260a084015260c083015290911660e08201526101000190565b6000602080835283518082850152825b81811015611f5d57858101830151858201604001528201611f41565b81811115611f6e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b6001600160a01b038116811461201a57600080fd5b50565b801515811461201a57600080fdfea2646970667358221220303aaeda3a76c08850dade0a06fe2a9b47ead0c5422fdd3a086c890c77c28c1e64736f6c634300060c0033", + "linkReferences": { + "contracts/protocol/libraries/logic/GenericLogic.sol": { + "GenericLogic": [ + { + "length": 20, + "start": 1565 + }, + { + "length": 20, + "start": 3887 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/protocol/libraries/logic/GenericLogic.sol": { + "GenericLogic": [ + { + "length": 20, + "start": 1527 + }, + { + "length": 20, + "start": 3849 + } + ] + } + } +} diff --git a/eth_defi/abi/aave_v2/VariableDebtToken.json b/eth_defi/abi/aave_v2/VariableDebtToken.json new file mode 100644 index 00000000..eaf82457 --- /dev/null +++ b/eth_defi/abi/aave_v2/VariableDebtToken.json @@ -0,0 +1,667 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VariableDebtToken", + "sourceName": "contracts/protocol/tokenization/VariableDebtToken.sol", + "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": "fromUser", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toUser", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "asset", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BorrowAllowanceDelegated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "incentivesController", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "Mint", + "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": [], + "name": "DEBT_TOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "POOL", + "outputs": [ + { + "internalType": "contract ILendingPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNDERLYING_ASSET_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "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": "delegatee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveDelegation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromUser", + "type": "address" + }, + { + "internalType": "address", + "name": "toUser", + "type": "address" + } + ], + "name": "borrowAllowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getIncentivesController", + "outputs": [ + { + "internalType": "contract IAaveIncentivesController", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getScaledUserBalanceAndSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ILendingPool", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "underlyingAsset", + "type": "address" + }, + { + "internalType": "contract IAaveIncentivesController", + "name": "incentivesController", + "type": "address" + }, + { + "internalType": "uint8", + "name": "debtTokenDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "debtTokenName", + "type": "string" + }, + { + "internalType": "string", + "name": "debtTokenSymbol", + "type": "string" + }, + { + "internalType": "bytes", + "name": "params", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "scaledBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "scaledTotalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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" + } + ], + "bytecode": "0x608060405260006006553480156200001657600080fd5b50604080518082018252600e8082526d111150951513d2d15397d253541360921b60208084018281528551808701909652928552840152815191929160009162000064916003919062000098565b5081516200007a90600490602085019062000098565b506005805460ff191660ff9290921691909117905550620001349050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010b565b828001600101855582156200010b579182015b828111156200010b578251825591602001919060010190620000ee565b50620001199291506200011d565b5090565b5b808211156200011957600081556001016200011e565b6117c780620001446000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220837a34e24dc1d0b89f2e51c8ddec7d4278655d0880a5271181da807edd9c3bcf64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806375d26413116100c3578063b3f1c93d1161007c578063b3f1c93d146103d2578063b9a7b6221461040e578063c04a8a1014610416578063c222ec8a14610444578063dd62ed3e146105ed578063f5298aca1461061b5761014d565b806375d264131461038657806395d89b411461038e578063a457c2d7146102e2578063a9059cbb14610396578063b16a19de146103c2578063b1bf962d146103ca5761014d565b806323b872dd1161011557806323b872dd1461028e578063313ce567146102c457806339509351146102e25780636bd76d241461030e57806370a082311461033c5780637535d246146103625761014d565b806306fdde0314610152578063095ea7b3146101cf5780630afbcdc91461020f57806318160ddd1461024e5780631da24f3e14610268575b600080fd5b61015a61064d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fb600480360360408110156101e557600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102356004803603602081101561022557600080fd5b50356001600160a01b031661072b565b6040805192835260208301919091528051918290030190f35b610256610748565b60408051918252519081900360200190f35b6102566004803603602081101561027e57600080fd5b50356001600160a01b03166107db565b6101fb600480360360608110156102a457600080fd5b506001600160a01b038135811691602081013590911690604001356107ee565b6102cc610836565b6040805160ff9092168252519081900360200190f35b6101fb600480360360408110156102f857600080fd5b506001600160a01b03813516906020013561083f565b6102566004803603604081101561032457600080fd5b506001600160a01b038135811691602001351661088e565b6102566004803603602081101561035257600080fd5b50356001600160a01b03166108bb565b61036a610967565b604080516001600160a01b039092168252519081900360200190f35b61036a610976565b61015a610980565b6101fb600480360360408110156103ac57600080fd5b506001600160a01b0381351690602001356107ee565b61036a6109e1565b6102566109f0565b6101fb600480360360808110156103e857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356109fa565b610256610c13565b6104426004803603604081101561042c57600080fd5b506001600160a01b038135169060200135610c18565b005b610442600480360360e081101561045a57600080fd5b6001600160a01b038235811692602081013582169260408201359092169160ff606083013516919081019060a0810160808201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460018302840111640100000000831117156104d457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561052757600080fd5b82018360208201111561053957600080fd5b8035906020019184600183028401116401000000008311171561055b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156105ae57600080fd5b8201836020820111156105c057600080fd5b803590602001918460018302840111640100000000831117156105e257600080fd5b509092509050610cb4565b6102566004803603604081101561060357600080fd5b506001600160a01b038135811691602001351661083f565b6104426004803603606081101561063157600080fd5b506001600160a01b038135169060208101359060400135610f03565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b820191906000526020600020905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60008061073783611097565b61073f6110b2565b91509150915091565b603b54603c546040805163386497fd60e01b81526001600160a01b03928316600482015290516000936107d693169163386497fd916024808301926020929190829003018186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d60208110156107c657600080fd5b50516107d06110b2565b906110b8565b905090565b60006107e682611097565b90505b919050565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60055460ff1690565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b038083166000908152603a60209081526040808320938516835292905220545b92915050565b6000806108c783611097565b9050806108d85760009150506107e9565b603b54603c546040805163386497fd60e01b81526001600160a01b039283166004820152905161096093929092169163386497fd91602480820192602092909190829003018186803b15801561092d57600080fd5b505afa158015610941573d6000803e3d6000fd5b505050506040513d602081101561095757600080fd5b505182906110b8565b9392505050565b603b546001600160a01b031690565b60006107d6611176565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106d95780601f106106ae576101008083540402835291602001916106d9565b603c546001600160a01b031690565b60006107d66110b2565b6000610a04610967565b6001600160a01b0316610a15611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610ac35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a88578181015183820152602001610a70565b50505050905090810190601f168015610ab55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50836001600160a01b0316856001600160a01b031614610ae857610ae8848685611189565b6000610af385611097565b90506000610b018585611251565b6040805180820190915260028152611a9b60f11b602082015290915081610b695760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50610b748682611358565b6040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3856001600160a01b0316876001600160a01b03167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee8787604051808381526020018281526020019250505060405180910390a3501595945050505050565b600181565b80603a6000610c25611185565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912091909155610c5d611185565b6001600160a01b03167fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e1610c8f6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a35050565b6000610cbe6114a9565b60075490915060ff1680610cd55750610cd56114ae565b80610ce1575060065481115b610d1c5760405162461bcd60e51b815260040180806020018281038252602e815260200180611743602e913960400191505060405180910390fd5b60075460ff16158015610d3c576007805460ff1916600117905560068290555b610d45866114b4565b610d4e856114cb565b610d57876114de565b603b80546001600160a01b03808d166001600160a01b03199283168117909355603c80548d83169084168117909155603d8054928d169290931682179092556040805191825260ff8b1660208084019190915260a09183018281528b51928401929092528a517f40251fbfb6656cfa65a00d7879029fec1fad21d28fdcff2f4f68f52795b74f2c938e938e938e938e938e938e93919290916060840191608085019160c0860191908a019080838360005b83811015610e20578181015183820152602001610e08565b50505050905090810190601f168015610e4d5780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b83811015610e80578181015183820152602001610e68565b50505050905090810190601f168015610ead5780820380516001836020036101000a031916815260200191505b508481038252858152602001868680828437600083820152604051601f909101601f19169092018290039b50909950505050505050505050a38015610ef7576007805460ff191690555b50505050505050505050565b610f0b610967565b6001600160a01b0316610f1c611185565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090610f8d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b506000610f9a8383611251565b60408051808201909152600281526106a760f31b6020820152909150816110025760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5061100d84826114f4565b6040805184815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080518481526020810184905281516001600160a01b038716927f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a928290030190a250505050565b6001600160a01b031660009081526020819052604090205490565b60025490565b60008215806110c5575081155b156110d2575060006108b5565b816b019d971e4fe8401e7400000019816110e857fe5b0483111560405180604001604052806002815260200161068760f31b815250906111535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b603d546001600160a01b031690565b3390565b6040805180820182526002815261353960f01b6020808301919091526001600160a01b038087166000908152603a835284812091871681529152918220546111d2918490611592565b6001600160a01b038086166000818152603a60209081526040808320948916808452949091529020839055919250907fda919360433220e13b51e8c211e490d148e61a3bd53de8c097194e458b97f3e161122a6109e1565b604080516001600160a01b039092168252602082018690528051918290030190a350505050565b604080518082019091526002815261035360f41b6020820152600090826112b95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce80000008219048511156113355760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b5082816b033b2e3c9fd0803ce80000008602018161134f57fe5b04949350505050565b6001600160a01b0382166113b3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6113bf600083836115ec565b6002546113cc81836115f1565b6002556001600160a01b0383166000908152602081905260409020546113f281846115f1565b6001600160a01b038516600090815260208190526040812091909155611416611176565b6001600160a01b0316146114a35761142c611176565b6001600160a01b03166331873e2e8584846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050505b50505050565b600190565b303b1590565b80516114c790600390602084019061168d565b5050565b80516114c790600490602084019061168d565b6005805460ff191660ff92909216919091179055565b6001600160a01b0382166115395760405162461bcd60e51b81526004018080602001828103825260218152602001806117716021913960400191505060405180910390fd5b611545826000836115ec565b600254611552818361164b565b6002556001600160a01b0383166000908152602081815260409182902054825160608101909352602280845290926113f292869290611721908301398391905b600081848411156115e45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a88578181015183820152602001610a70565b505050900390565b505050565b600082820183811015610960576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061096083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611592565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116ce57805160ff19168380011785556116fb565b828001600101855582156116fb579182015b828111156116fb5782518255916020019190600101906116e0565b5061170792915061170b565b5090565b5b80821115611707576000815560010161170c56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f2061646472657373a2646970667358221220837a34e24dc1d0b89f2e51c8ddec7d4278655d0880a5271181da807edd9c3bcf64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/VersionedInitializable.json b/eth_defi/abi/aave_v2/VersionedInitializable.json new file mode 100644 index 00000000..8433a907 --- /dev/null +++ b/eth_defi/abi/aave_v2/VersionedInitializable.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "VersionedInitializable", + "sourceName": "contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/WETH9.json b/eth_defi/abi/aave_v2/WETH9.json new file mode 100644 index 00000000..8901c064 --- /dev/null +++ b/eth_defi/abi/aave_v2/WETH9.json @@ -0,0 +1,295 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WETH9", + "sourceName": "contracts/mocks/dependencies/weth/WETH9.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6106fa8061011c6000396000f3fe6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce5671461021f57806370a082311461024a57806395d89b411461027d578063a9059cbb14610292578063d0e30db0146102cb578063dd62ed3e146102d3576100af565b806306fdde03146100b4578063095ea7b31461013e57806318160ddd1461018b57806323b872dd146101b25780632e1a7d4d146101f5576100af565b366100af576100ad61030e565b005b600080fd5b3480156100c057600080fd5b506100c961035d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101035781810151838201526020016100eb565b50505050905090810190601f1680156101305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014a57600080fd5b506101776004803603604081101561016157600080fd5b506001600160a01b0381351690602001356103eb565b604080519115158252519081900360200190f35b34801561019757600080fd5b506101a0610451565b60408051918252519081900360200190f35b3480156101be57600080fd5b50610177600480360360608110156101d557600080fd5b506001600160a01b03813581169160208101359091169060400135610455565b34801561020157600080fd5b506100ad6004803603602081101561021857600080fd5b5035610589565b34801561022b57600080fd5b5061023461061e565b6040805160ff9092168252519081900360200190f35b34801561025657600080fd5b506101a06004803603602081101561026d57600080fd5b50356001600160a01b0316610627565b34801561028957600080fd5b506100c9610639565b34801561029e57600080fd5b50610177600480360360408110156102b557600080fd5b506001600160a01b038135169060200135610693565b6100ad61030e565b3480156102df57600080fd5b506101a0600480360360408110156102f657600080fd5b506001600160a01b03813581169160200135166106a7565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561047a57600080fd5b6001600160a01b03841633148015906104b857506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b15610518576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104ed57600080fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105a557600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105e4573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b60006106a0338484610455565b9392505050565b60046020908152600092835260408084209091529082529020548156fea26469706673582212207d805ed60d611de1e6f1ffcc152ad40cd83e00f0827a30bd1abd441130adbaf164736f6c634300060c0033", + "deployedBytecode": "0x6080604052600436106100a05760003560e01c8063313ce56711610064578063313ce5671461021f57806370a082311461024a57806395d89b411461027d578063a9059cbb14610292578063d0e30db0146102cb578063dd62ed3e146102d3576100af565b806306fdde03146100b4578063095ea7b31461013e57806318160ddd1461018b57806323b872dd146101b25780632e1a7d4d146101f5576100af565b366100af576100ad61030e565b005b600080fd5b3480156100c057600080fd5b506100c961035d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101035781810151838201526020016100eb565b50505050905090810190601f1680156101305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014a57600080fd5b506101776004803603604081101561016157600080fd5b506001600160a01b0381351690602001356103eb565b604080519115158252519081900360200190f35b34801561019757600080fd5b506101a0610451565b60408051918252519081900360200190f35b3480156101be57600080fd5b50610177600480360360608110156101d557600080fd5b506001600160a01b03813581169160208101359091169060400135610455565b34801561020157600080fd5b506100ad6004803603602081101561021857600080fd5b5035610589565b34801561022b57600080fd5b5061023461061e565b6040805160ff9092168252519081900360200190f35b34801561025657600080fd5b506101a06004803603602081101561026d57600080fd5b50356001600160a01b0316610627565b34801561028957600080fd5b506100c9610639565b34801561029e57600080fd5b50610177600480360360408110156102b557600080fd5b506001600160a01b038135169060200135610693565b6100ad61030e565b3480156102df57600080fd5b506101a0600480360360408110156102f657600080fd5b506001600160a01b03813581169160200135166106a7565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561047a57600080fd5b6001600160a01b03841633148015906104b857506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b15610518576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104ed57600080fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105a557600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105e4573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b60006106a0338484610455565b9392505050565b60046020908152600092835260408084209091529082529020548156fea26469706673582212207d805ed60d611de1e6f1ffcc152ad40cd83e00f0827a30bd1abd441130adbaf164736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/WETH9Mocked.json b/eth_defi/abi/aave_v2/WETH9Mocked.json new file mode 100644 index 00000000..d1d9e369 --- /dev/null +++ b/eth_defi/abi/aave_v2/WETH9Mocked.json @@ -0,0 +1,314 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WETH9Mocked", + "sourceName": "contracts/mocks/tokens/WETH9Mocked.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6107808061011c6000396000f3fe6080604052600436106100ab5760003560e01c806370a082311161006457806370a082311461025557806395d89b4114610288578063a0712d681461029d578063a9059cbb146102c7578063d0e30db014610300578063dd62ed3e14610308576100ba565b806306fdde03146100bf578063095ea7b31461014957806318160ddd1461019657806323b872dd146101bd5780632e1a7d4d14610200578063313ce5671461022a576100ba565b366100ba576100b8610343565b005b600080fd5b3480156100cb57600080fd5b506100d4610392565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010e5781810151838201526020016100f6565b50505050905090810190601f16801561013b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015557600080fd5b506101826004803603604081101561016c57600080fd5b506001600160a01b038135169060200135610420565b604080519115158252519081900360200190f35b3480156101a257600080fd5b506101ab610486565b60408051918252519081900360200190f35b3480156101c957600080fd5b50610182600480360360608110156101e057600080fd5b506001600160a01b0381358116916020810135909116906040013561048a565b34801561020c57600080fd5b506100b86004803603602081101561022357600080fd5b50356105be565b34801561023657600080fd5b5061023f610653565b6040805160ff9092168252519081900360200190f35b34801561026157600080fd5b506101ab6004803603602081101561027857600080fd5b50356001600160a01b031661065c565b34801561029457600080fd5b506100d461066e565b3480156102a957600080fd5b50610182600480360360208110156102c057600080fd5b50356106c8565b3480156102d357600080fd5b50610182600480360360408110156102ea57600080fd5b506001600160a01b038135169060200135610719565b6100b8610343565b34801561031457600080fd5b506101ab6004803603604081101561032b57600080fd5b506001600160a01b038135811691602001351661072d565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104185780601f106103ed57610100808354040283529160200191610418565b820191906000526020600020905b8154815290600101906020018083116103fb57829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b0383166000908152600360205260408120548211156104af57600080fd5b6001600160a01b03841633148015906104ed57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b1561054d576001600160a01b038416600090815260046020908152604080832033845290915290205482111561052257600080fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105da57600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610619573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104185780601f106103ed57610100808354040283529160200191610418565b3360008181526003602090815260408083208054860190558051858152905192939284927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3919050565b600061072633848461048a565b9392505050565b60046020908152600092835260408084209091529082529020548156fea26469706673582212204c7488d7e6301b2c94078315f71a113fc51232da62f847c092a3f00bfbd2f03b64736f6c634300060c0033", + "deployedBytecode": "0x6080604052600436106100ab5760003560e01c806370a082311161006457806370a082311461025557806395d89b4114610288578063a0712d681461029d578063a9059cbb146102c7578063d0e30db014610300578063dd62ed3e14610308576100ba565b806306fdde03146100bf578063095ea7b31461014957806318160ddd1461019657806323b872dd146101bd5780632e1a7d4d14610200578063313ce5671461022a576100ba565b366100ba576100b8610343565b005b600080fd5b3480156100cb57600080fd5b506100d4610392565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561010e5781810151838201526020016100f6565b50505050905090810190601f16801561013b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015557600080fd5b506101826004803603604081101561016c57600080fd5b506001600160a01b038135169060200135610420565b604080519115158252519081900360200190f35b3480156101a257600080fd5b506101ab610486565b60408051918252519081900360200190f35b3480156101c957600080fd5b50610182600480360360608110156101e057600080fd5b506001600160a01b0381358116916020810135909116906040013561048a565b34801561020c57600080fd5b506100b86004803603602081101561022357600080fd5b50356105be565b34801561023657600080fd5b5061023f610653565b6040805160ff9092168252519081900360200190f35b34801561026157600080fd5b506101ab6004803603602081101561027857600080fd5b50356001600160a01b031661065c565b34801561029457600080fd5b506100d461066e565b3480156102a957600080fd5b50610182600480360360208110156102c057600080fd5b50356106c8565b3480156102d357600080fd5b50610182600480360360408110156102ea57600080fd5b506001600160a01b038135169060200135610719565b6100b8610343565b34801561031457600080fd5b506101ab6004803603604081101561032b57600080fd5b506001600160a01b038135811691602001351661072d565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104185780601f106103ed57610100808354040283529160200191610418565b820191906000526020600020905b8154815290600101906020018083116103fb57829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b0383166000908152600360205260408120548211156104af57600080fd5b6001600160a01b03841633148015906104ed57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b1561054d576001600160a01b038416600090815260046020908152604080832033845290915290205482111561052257600080fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105da57600080fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610619573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104185780601f106103ed57610100808354040283529160200191610418565b3360008181526003602090815260408083208054860190558051858152905192939284927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3919050565b600061072633848461048a565b9392505050565b60046020908152600092835260408084209091529082529020548156fea26469706673582212204c7488d7e6301b2c94078315f71a113fc51232da62f847c092a3f00bfbd2f03b64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/WETHGateway.json b/eth_defi/abi/aave_v2/WETHGateway.json new file mode 100644 index 00000000..68153623 --- /dev/null +++ b/eth_defi/abi/aave_v2/WETHGateway.json @@ -0,0 +1,251 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WETHGateway", + "sourceName": "contracts/misc/WETHGateway.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "weth", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + } + ], + "name": "authorizeLendingPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "interesRateMode", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "borrowETH", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + }, + { + "internalType": "uint16", + "name": "referralCode", + "type": "uint16" + } + ], + "name": "depositETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyEtherTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "emergencyTokenTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getWETHAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateMode", + "type": "uint256" + }, + { + "internalType": "address", + "name": "onBehalfOf", + "type": "address" + } + ], + "name": "repayETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lendingPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "withdrawETH", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516115c63803806115c683398101604081905261002f9161009c565b6000610039610098565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b0319166080526100ca565b3390565b6000602082840312156100ad578081fd5b81516001600160a01b03811681146100c3578182fd5b9392505050565b60805160601c6114a46101226000398060b05280610263528061035052806103e65280610486528061051c528061059c5280610613528061073252806108e6528061097c5280610abb5280610c2252506114a46000f3fe6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b1461018b578063a3d5b255146101b6578063affa8817146101d6578063eed88b8d146101eb578063f2fde38b1461020b578063fd1495291461022b576100f8565b806302c5fcf814610110578063474cf53d1461012357806366514c9714610136578063715018a61461015657806380500d201461016b576100f8565b366100f857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100f65760405162461bcd60e51b81526004016100ed90611350565b60405180910390fd5b005b60405162461bcd60e51b81526004016100ed906112dc565b6100f661011e366004610fe3565b61024b565b6100f6610131366004610ef2565b610484565b34801561014257600080fd5b506100f661015136600461102c565b610578565b34801561016257600080fd5b506100f661068c565b34801561017757600080fd5b506100f6610186366004610fad565b61070b565b34801561019757600080fd5b506101a06109f5565b6040516101ad91906111dc565b60405180910390f35b3480156101c257600080fd5b506100f66101d1366004610f42565b610a04565b3480156101e257600080fd5b506101a0610ab9565b3480156101f757600080fd5b506100f6610206366004610f82565b610add565b34801561021757600080fd5b506100f6610226366004610ecf565b610b20565b34801561023757600080fd5b506100f6610246366004610ecf565b610bd6565b6000806102f483876001600160a01b03166335ea6a757f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161029e91906111dc565b6101806040518083038186803b1580156102b757600080fd5b505afa1580156102cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190611090565b610cad565b90925090506000600185600281111561030957fe5b600281111561031457fe5b1461031f5781610321565b825b90508086101561032e5750845b8034101561034e5760405162461bcd60e51b81526004016100ed906113df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505060405163573ade8160e01b81526001600160a01b038b16935063573ade81925061041491507f00000000000000000000000000000000000000000000000000000000000000009034908a908a9060040161127d565b602060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610466919061118b565b508034111561047b5761047b33823403610dbd565b50505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b505060405163e8eda9df60e01b81526001600160a01b038716935063e8eda9df925061054a91507f000000000000000000000000000000000000000000000000000000000000000090349087908790600401611250565b600060405180830381600087803b15801561056457600080fd5b505af115801561047b573d6000803e3d6000fd5b60405163a415bcad60e01b81526001600160a01b0385169063a415bcad906105cc907f00000000000000000000000000000000000000000000000000000000000000009087908790879033906004016112a8565b600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632e1a7d4d915061064a908690600401611426565b600060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506106863384610dbd565b50505050565b610694610e4f565b6000546001600160a01b039081169116146106c15760405162461bcd60e51b81526004016100ed9061137d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6040516335ea6a7560e01b81526000906001600160a01b038516906335ea6a759061075a907f0000000000000000000000000000000000000000000000000000000000000000906004016111dc565b6101806040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190611090565b60e0015190506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016107df91906111dc565b60206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f919061118b565b90508360001981141561083f5750805b6040516323b872dd60e01b81526001600160a01b038416906323b872dd9061086f903390309086906004016111f0565b602060405180830381600087803b15801561088957600080fd5b505af115801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c19190611070565b50604051631a4ca37b60e21b81526001600160a01b038716906369328dec90610912907f0000000000000000000000000000000000000000000000000000000000000000908590309060040161122d565b602060405180830381600087803b15801561092c57600080fd5b505af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610964919061118b565b50604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906109b1908490600401611426565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b505050506109ed8482610dbd565b505050505050565b6000546001600160a01b031690565b610a0c610e4f565b6000546001600160a01b03908116911614610a395760405162461bcd60e51b81526004016100ed9061137d565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610a679085908590600401611214565b602060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190611070565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ae5610e4f565b6000546001600160a01b03908116911614610b125760405162461bcd60e51b81526004016100ed9061137d565b610b1c8282610dbd565b5050565b610b28610e4f565b6000546001600160a01b03908116911614610b555760405162461bcd60e51b81526004016100ed9061137d565b6001600160a01b038116610b7b5760405162461bcd60e51b81526004016100ed9061130a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde610e4f565b6000546001600160a01b03908116911614610c0b5760405162461bcd60e51b81526004016100ed9061137d565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610c5b90849060001990600401611214565b602060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611070565b6000808261010001516001600160a01b03166370a08231856040518263ffffffff1660e01b8152600401610ce191906111dc565b60206040518083038186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d31919061118b565b8361012001516001600160a01b03166370a08231866040518263ffffffff1660e01b8152600401610d6291906111dc565b60206040518083038186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db2919061118b565b915091509250929050565b604080516000808252602082019092526001600160a01b038416908390604051610de791906111a3565b60006040518083038185875af1925050503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b5050905080610e4a5760405162461bcd60e51b81526004016100ed906113b2565b505050565b3390565b8051610e5e81611456565b92915050565b600060208284031215610e75578081fd5b610e7f602061142f565b9151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610e5e57600080fd5b805164ffffffffff81168114610e5e57600080fd5b805160ff81168114610e5e57600080fd5b600060208284031215610ee0578081fd5b8135610eeb81611456565b9392505050565b600080600060608486031215610f06578182fd5b8335610f1181611456565b92506020840135610f2181611456565b9150604084013561ffff81168114610f37578182fd5b809150509250925092565b600080600060608486031215610f56578283fd5b8335610f6181611456565b92506020840135610f7181611456565b929592945050506040919091013590565b60008060408385031215610f94578182fd5b8235610f9f81611456565b946020939093013593505050565b600080600060608486031215610fc1578283fd5b8335610fcc81611456565b9250602084013591506040840135610f3781611456565b60008060008060808587031215610ff8578081fd5b843561100381611456565b93506020850135925060408501359150606085013561102181611456565b939692955090935050565b60008060008060808587031215611041578384fd5b843561104c81611456565b93506020850135925060408501359150606085013561ffff81168114611021578182fd5b600060208284031215611081578081fd5b81518015158114610eeb578182fd5b60006101808083850312156110a3578182fd5b6110ac8161142f565b90506110b88484610e64565b81526110c78460208501610e89565b60208201526110d98460408501610e89565b60408201526110eb8460608501610e89565b60608201526110fd8460808501610e89565b608082015261110f8460a08501610e89565b60a08201526111218460c08501610ea9565b60c08201526111338460e08501610e53565b60e082015261010061114785828601610e53565b9082015261012061115a85858301610e53565b9082015261014061116d85858301610e53565b9082015261016061118085858301610ebe565b908201529392505050565b60006020828403121561119c578081fd5b5051919050565b60008251815b818110156111c357602081860181015185830152016111a9565b818111156111d15782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b6001600160a01b0395861681526020810194909452604084019290925261ffff166060830152909116608082015260a00190565b60208082526014908201527311985b1b189858dac81b9bdd08185b1b1bddd95960621b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260139082015272149958d95a5d99481b9bdd08185b1b1bddd959606a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527211551217d514905394d1915497d19052531151606a1b604082015260600190565b60208082526027908201527f6d73672e76616c7565206973206c657373207468616e2072657061796d656e7460408201526608185b5bdd5b9d60ca1b606082015260800190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561144e57600080fd5b604052919050565b6001600160a01b038116811461146b57600080fd5b5056fea2646970667358221220f8094e1b9ee92c256d9c3d9cd67af741fc471591c96ce5e4992b5569295370d564736f6c634300060c0033", + "deployedBytecode": "0x6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b1461018b578063a3d5b255146101b6578063affa8817146101d6578063eed88b8d146101eb578063f2fde38b1461020b578063fd1495291461022b576100f8565b806302c5fcf814610110578063474cf53d1461012357806366514c9714610136578063715018a61461015657806380500d201461016b576100f8565b366100f857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100f65760405162461bcd60e51b81526004016100ed90611350565b60405180910390fd5b005b60405162461bcd60e51b81526004016100ed906112dc565b6100f661011e366004610fe3565b61024b565b6100f6610131366004610ef2565b610484565b34801561014257600080fd5b506100f661015136600461102c565b610578565b34801561016257600080fd5b506100f661068c565b34801561017757600080fd5b506100f6610186366004610fad565b61070b565b34801561019757600080fd5b506101a06109f5565b6040516101ad91906111dc565b60405180910390f35b3480156101c257600080fd5b506100f66101d1366004610f42565b610a04565b3480156101e257600080fd5b506101a0610ab9565b3480156101f757600080fd5b506100f6610206366004610f82565b610add565b34801561021757600080fd5b506100f6610226366004610ecf565b610b20565b34801561023757600080fd5b506100f6610246366004610ecf565b610bd6565b6000806102f483876001600160a01b03166335ea6a757f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161029e91906111dc565b6101806040518083038186803b1580156102b757600080fd5b505afa1580156102cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ef9190611090565b610cad565b90925090506000600185600281111561030957fe5b600281111561031457fe5b1461031f5781610321565b825b90508086101561032e5750845b8034101561034e5760405162461bcd60e51b81526004016100ed906113df565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505060405163573ade8160e01b81526001600160a01b038b16935063573ade81925061041491507f00000000000000000000000000000000000000000000000000000000000000009034908a908a9060040161127d565b602060405180830381600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610466919061118b565b508034111561047b5761047b33823403610dbd565b50505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b505060405163e8eda9df60e01b81526001600160a01b038716935063e8eda9df925061054a91507f000000000000000000000000000000000000000000000000000000000000000090349087908790600401611250565b600060405180830381600087803b15801561056457600080fd5b505af115801561047b573d6000803e3d6000fd5b60405163a415bcad60e01b81526001600160a01b0385169063a415bcad906105cc907f00000000000000000000000000000000000000000000000000000000000000009087908790879033906004016112a8565b600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632e1a7d4d915061064a908690600401611426565b600060405180830381600087803b15801561066457600080fd5b505af1158015610678573d6000803e3d6000fd5b505050506106863384610dbd565b50505050565b610694610e4f565b6000546001600160a01b039081169116146106c15760405162461bcd60e51b81526004016100ed9061137d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6040516335ea6a7560e01b81526000906001600160a01b038516906335ea6a759061075a907f0000000000000000000000000000000000000000000000000000000000000000906004016111dc565b6101806040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190611090565b60e0015190506000816001600160a01b03166370a08231336040518263ffffffff1660e01b81526004016107df91906111dc565b60206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f919061118b565b90508360001981141561083f5750805b6040516323b872dd60e01b81526001600160a01b038416906323b872dd9061086f903390309086906004016111f0565b602060405180830381600087803b15801561088957600080fd5b505af115801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c19190611070565b50604051631a4ca37b60e21b81526001600160a01b038716906369328dec90610912907f0000000000000000000000000000000000000000000000000000000000000000908590309060040161122d565b602060405180830381600087803b15801561092c57600080fd5b505af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610964919061118b565b50604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906109b1908490600401611426565b600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b505050506109ed8482610dbd565b505050505050565b6000546001600160a01b031690565b610a0c610e4f565b6000546001600160a01b03908116911614610a395760405162461bcd60e51b81526004016100ed9061137d565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90610a679085908590600401611214565b602060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190611070565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ae5610e4f565b6000546001600160a01b03908116911614610b125760405162461bcd60e51b81526004016100ed9061137d565b610b1c8282610dbd565b5050565b610b28610e4f565b6000546001600160a01b03908116911614610b555760405162461bcd60e51b81526004016100ed9061137d565b6001600160a01b038116610b7b5760405162461bcd60e51b81526004016100ed9061130a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde610e4f565b6000546001600160a01b03908116911614610c0b5760405162461bcd60e51b81526004016100ed9061137d565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610c5b90849060001990600401611214565b602060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611070565b6000808261010001516001600160a01b03166370a08231856040518263ffffffff1660e01b8152600401610ce191906111dc565b60206040518083038186803b158015610cf957600080fd5b505afa158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d31919061118b565b8361012001516001600160a01b03166370a08231866040518263ffffffff1660e01b8152600401610d6291906111dc565b60206040518083038186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db2919061118b565b915091509250929050565b604080516000808252602082019092526001600160a01b038416908390604051610de791906111a3565b60006040518083038185875af1925050503d8060008114610e24576040519150601f19603f3d011682016040523d82523d6000602084013e610e29565b606091505b5050905080610e4a5760405162461bcd60e51b81526004016100ed906113b2565b505050565b3390565b8051610e5e81611456565b92915050565b600060208284031215610e75578081fd5b610e7f602061142f565b9151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610e5e57600080fd5b805164ffffffffff81168114610e5e57600080fd5b805160ff81168114610e5e57600080fd5b600060208284031215610ee0578081fd5b8135610eeb81611456565b9392505050565b600080600060608486031215610f06578182fd5b8335610f1181611456565b92506020840135610f2181611456565b9150604084013561ffff81168114610f37578182fd5b809150509250925092565b600080600060608486031215610f56578283fd5b8335610f6181611456565b92506020840135610f7181611456565b929592945050506040919091013590565b60008060408385031215610f94578182fd5b8235610f9f81611456565b946020939093013593505050565b600080600060608486031215610fc1578283fd5b8335610fcc81611456565b9250602084013591506040840135610f3781611456565b60008060008060808587031215610ff8578081fd5b843561100381611456565b93506020850135925060408501359150606085013561102181611456565b939692955090935050565b60008060008060808587031215611041578384fd5b843561104c81611456565b93506020850135925060408501359150606085013561ffff81168114611021578182fd5b600060208284031215611081578081fd5b81518015158114610eeb578182fd5b60006101808083850312156110a3578182fd5b6110ac8161142f565b90506110b88484610e64565b81526110c78460208501610e89565b60208201526110d98460408501610e89565b60408201526110eb8460608501610e89565b60608201526110fd8460808501610e89565b608082015261110f8460a08501610e89565b60a08201526111218460c08501610ea9565b60c08201526111338460e08501610e53565b60e082015261010061114785828601610e53565b9082015261012061115a85858301610e53565b9082015261014061116d85858301610e53565b9082015261016061118085858301610ebe565b908201529392505050565b60006020828403121561119c578081fd5b5051919050565b60008251815b818110156111c357602081860181015185830152016111a9565b818111156111d15782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6001600160a01b03948516815260208101939093526040830191909152909116606082015260800190565b6001600160a01b0395861681526020810194909452604084019290925261ffff166060830152909116608082015260a00190565b60208082526014908201527311985b1b189858dac81b9bdd08185b1b1bddd95960621b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260139082015272149958d95a5d99481b9bdd08185b1b1bddd959606a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527211551217d514905394d1915497d19052531151606a1b604082015260600190565b60208082526027908201527f6d73672e76616c7565206973206c657373207468616e2072657061796d656e7460408201526608185b5bdd5b9d60ca1b606082015260800190565b90815260200190565b60405181810167ffffffffffffffff8111828210171561144e57600080fd5b604052919050565b6001600160a01b038116811461146b57600080fd5b5056fea2646970667358221220f8094e1b9ee92c256d9c3d9cd67af741fc471591c96ce5e4992b5569295370d564736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/WadRayMath.json b/eth_defi/abi/aave_v2/WadRayMath.json new file mode 100644 index 00000000..ce41ee7b --- /dev/null +++ b/eth_defi/abi/aave_v2/WadRayMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WadRayMath", + "sourceName": "contracts/protocol/libraries/math/WadRayMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022587d0a15ae0044bc5658b067b1555b9cc4188c69e0c59957cdc065a2c5023a64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022587d0a15ae0044bc5658b067b1555b9cc4188c69e0c59957cdc065a2c5023a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/abi/aave_v2/WalletBalanceProvider.json b/eth_defi/abi/aave_v2/WalletBalanceProvider.json new file mode 100644 index 00000000..d0e96c31 --- /dev/null +++ b/eth_defi/abi/aave_v2/WalletBalanceProvider.json @@ -0,0 +1,92 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WalletBalanceProvider", + "sourceName": "contracts/misc/WalletBalanceProvider.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "users", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "batchBalanceOf", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserWalletBalances", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610a63806100206000396000f3fe6080604052600436106100385760003560e01c80630240534314610072578063b59b28ef146100a9578063f7888aec146100d65761006d565b3661006d5761004633610103565b61006b5760405162461bcd60e51b8152600401610062906109c9565b60405180910390fd5b005b600080fd5b34801561007e57600080fd5b5061009261008d366004610758565b61013f565b6040516100a092919061092f565b60405180910390f35b3480156100b557600080fd5b506100c96100c4366004610790565b6104b1565b6040516100a0919061098f565b3480156100e257600080fd5b506100f66100f1366004610758565b61058d565b6040516100a091906109e5565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061013757508115155b949350505050565b6060806000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b5919061073c565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101f257600080fd5b505afa158015610206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261022e91908101906107f9565b90506060815160010167ffffffffffffffff8111801561024d57600080fd5b50604051908082528060200260200182016040528015610277578160200160208202803683370190505b50905060005b82518110156102c65782818151811061029257fe5b60200260200101518282815181106102a657fe5b6001600160a01b039092166020928302919091019091015260010161027d565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee818351815181106102e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060815167ffffffffffffffff8111801561032357600080fd5b5060405190808252806020026020018201604052801561034d578160200160208202803683370190505b50905060005b835181101561046b576103646106b9565b856001600160a01b031663c44b11f785848151811061037f57fe5b60200260200101516040518263ffffffff1660e01b81526004016103a3919061091b565b60206040518083038186803b1580156103bb57600080fd5b505afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f391906108a4565b905060006104008261067d565b50505090508061042b57600084848151811061041857fe5b6020026020010181815250505050610463565b6104488a86858151811061043b57fe5b602002602001015161058d565b84848151811061045457fe5b60200260200101818152505050505b600101610353565b5061048a8773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61058d565b8184518151811061049757fe5b6020908102919091010152909450925050505b9250929050565b60608084830267ffffffffffffffff811180156104cd57600080fd5b506040519080825280602002602001820160405280156104f7578160200160208202803683370190505b50905060005b858110156105835760005b8481101561057a5761055588888481811061051f57fe5b90506020020160208101906105349190610719565b87878481811061054057fe5b90506020020160208101906100f19190610719565b83518490848802840190811061056757fe5b6020908102919091010152600101610508565b506001016104fd565b5095945050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156105c557506001600160a01b03821631610677565b6105d7826001600160a01b0316610103565b1561065f576040516370a0823160e01b81526001600160a01b038316906370a082319061060890869060040161091b565b60206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065891906108c9565b9050610677565b60405162461bcd60e51b8152600401610062906109a2565b92915050565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518060200160405280600081525090565b805161067781610a15565b60008083601f8401126106e8578182fd5b50813567ffffffffffffffff8111156106ff578182fd5b60208301915083602080830285010111156104aa57600080fd5b60006020828403121561072a578081fd5b813561073581610a15565b9392505050565b60006020828403121561074d578081fd5b815161073581610a15565b6000806040838503121561076a578081fd5b823561077581610a15565b9150602083013561078581610a15565b809150509250929050565b600080600080604085870312156107a5578182fd5b843567ffffffffffffffff808211156107bc578384fd5b6107c8888389016106d7565b909650945060208701359150808211156107e0578384fd5b506107ed878288016106d7565b95989497509550505050565b6000602080838503121561080b578182fd5b825167ffffffffffffffff80821115610822578384fd5b818501915085601f830112610835578384fd5b815181811115610843578485fd5b83810291506108538483016109ee565b8181528481019084860184860187018a101561086d578788fd5b8795505b83861015610897576108838a826106cc565b835260019590950194918601918601610871565b5098975050505050505050565b6000602082840312156108b5578081fd5b6108bf60206109ee565b9151825250919050565b6000602082840312156108da578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610910578151875295820195908201906001016108f4565b509495945050505050565b6001600160a01b0391909116815260200190565b604080825283519082018190526000906020906060840190828701845b828110156109715781516001600160a01b03168452928401929084019060010161094c565b5050508381038285015261098581866108e1565b9695505050505050565b60006020825261073560208301846108e1565b6020808252600d908201526c24a72b20a624a22faa27a5a2a760991b604082015260600190565b602080825260029082015261191960f11b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610a0d57600080fd5b604052919050565b6001600160a01b0381168114610a2a57600080fd5b5056fea26469706673582212207ae67703d49267c117fb5657d5acf71315b42fa382a2989a68cd98ccc5351bc964736f6c634300060c0033", + "deployedBytecode": "0x6080604052600436106100385760003560e01c80630240534314610072578063b59b28ef146100a9578063f7888aec146100d65761006d565b3661006d5761004633610103565b61006b5760405162461bcd60e51b8152600401610062906109c9565b60405180910390fd5b005b600080fd5b34801561007e57600080fd5b5061009261008d366004610758565b61013f565b6040516100a092919061092f565b60405180910390f35b3480156100b557600080fd5b506100c96100c4366004610790565b6104b1565b6040516100a0919061098f565b3480156100e257600080fd5b506100f66100f1366004610758565b61058d565b6040516100a091906109e5565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061013757508115155b949350505050565b6060806000846001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b5919061073c565b90506060816001600160a01b031663d1946dbc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101f257600080fd5b505afa158015610206573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261022e91908101906107f9565b90506060815160010167ffffffffffffffff8111801561024d57600080fd5b50604051908082528060200260200182016040528015610277578160200160208202803683370190505b50905060005b82518110156102c65782818151811061029257fe5b60200260200101518282815181106102a657fe5b6001600160a01b039092166020928302919091019091015260010161027d565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee818351815181106102e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060815167ffffffffffffffff8111801561032357600080fd5b5060405190808252806020026020018201604052801561034d578160200160208202803683370190505b50905060005b835181101561046b576103646106b9565b856001600160a01b031663c44b11f785848151811061037f57fe5b60200260200101516040518263ffffffff1660e01b81526004016103a3919061091b565b60206040518083038186803b1580156103bb57600080fd5b505afa1580156103cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f391906108a4565b905060006104008261067d565b50505090508061042b57600084848151811061041857fe5b6020026020010181815250505050610463565b6104488a86858151811061043b57fe5b602002602001015161058d565b84848151811061045457fe5b60200260200101818152505050505b600101610353565b5061048a8773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61058d565b8184518151811061049757fe5b6020908102919091010152909450925050505b9250929050565b60608084830267ffffffffffffffff811180156104cd57600080fd5b506040519080825280602002602001820160405280156104f7578160200160208202803683370190505b50905060005b858110156105835760005b8481101561057a5761055588888481811061051f57fe5b90506020020160208101906105349190610719565b87878481811061054057fe5b90506020020160208101906100f19190610719565b83518490848802840190811061056757fe5b6020908102919091010152600101610508565b506001016104fd565b5095945050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156105c557506001600160a01b03821631610677565b6105d7826001600160a01b0316610103565b1561065f576040516370a0823160e01b81526001600160a01b038316906370a082319061060890869060040161091b565b60206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065891906108c9565b9050610677565b60405162461bcd60e51b8152600401610062906109a2565b92915050565b51670100000000000000811615159167020000000000000082161515916704000000000000008116151591670800000000000000909116151590565b6040518060200160405280600081525090565b805161067781610a15565b60008083601f8401126106e8578182fd5b50813567ffffffffffffffff8111156106ff578182fd5b60208301915083602080830285010111156104aa57600080fd5b60006020828403121561072a578081fd5b813561073581610a15565b9392505050565b60006020828403121561074d578081fd5b815161073581610a15565b6000806040838503121561076a578081fd5b823561077581610a15565b9150602083013561078581610a15565b809150509250929050565b600080600080604085870312156107a5578182fd5b843567ffffffffffffffff808211156107bc578384fd5b6107c8888389016106d7565b909650945060208701359150808211156107e0578384fd5b506107ed878288016106d7565b95989497509550505050565b6000602080838503121561080b578182fd5b825167ffffffffffffffff80821115610822578384fd5b818501915085601f830112610835578384fd5b815181811115610843578485fd5b83810291506108538483016109ee565b8181528481019084860184860187018a101561086d578788fd5b8795505b83861015610897576108838a826106cc565b835260019590950194918601918601610871565b5098975050505050505050565b6000602082840312156108b5578081fd5b6108bf60206109ee565b9151825250919050565b6000602082840312156108da578081fd5b5051919050565b6000815180845260208085019450808401835b83811015610910578151875295820195908201906001016108f4565b509495945050505050565b6001600160a01b0391909116815260200190565b604080825283519082018190526000906020906060840190828701845b828110156109715781516001600160a01b03168452928401929084019060010161094c565b5050508381038285015261098581866108e1565b9695505050505050565b60006020825261073560208301846108e1565b6020808252600d908201526c24a72b20a624a22faa27a5a2a760991b604082015260600190565b602080825260029082015261191960f11b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610a0d57600080fd5b604052919050565b6001600160a01b0381168114610a2a57600080fd5b5056fea26469706673582212207ae67703d49267c117fb5657d5acf71315b42fa382a2989a68cd98ccc5351bc964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/eth_defi/chain.py b/eth_defi/chain.py index bb835d67..bf227b29 100644 --- a/eth_defi/chain.py +++ b/eth_defi/chain.py @@ -173,6 +173,10 @@ def get_graphql_url(provider: BaseProvider) -> str: else: raise AssertionError(f"Do not know how to extract endpoint URI: {provider}") + # make sure base url contains a trailing slash so urljoin() below works correctly + if not base_url.endswith("/"): + base_url += "/" + graphql_url = urljoin(base_url, "graphql") return graphql_url diff --git a/eth_defi/event_reader/reorganisation_monitor.py b/eth_defi/event_reader/reorganisation_monitor.py index e8c4fd4c..8878bab2 100644 --- a/eth_defi/event_reader/reorganisation_monitor.py +++ b/eth_defi/event_reader/reorganisation_monitor.py @@ -4,20 +4,21 @@ when nodes have not yet reached consensus on the chain tip around the world. """ -import time -from abc import abstractmethod, ABC -from dataclasses import dataclass, asdict, field -from typing import Dict, Iterable, Tuple, Optional, Type, Callable, cast import logging +import time +from abc import ABC, abstractmethod +from dataclasses import asdict, dataclass, field +from typing import Callable, Dict, Iterable, Optional, Tuple, Type, cast from urllib.parse import urljoin import pandas as pd from hexbytes import HexBytes from tqdm import tqdm -from web3 import Web3, HTTPProvider +from web3 import HTTPProvider, Web3 -from eth_defi.chain import has_graphql_support, get_graphql_url +from eth_defi.chain import get_graphql_url, has_graphql_support from eth_defi.event_reader.block_header import BlockHeader, Timestamp +from eth_defi.event_reader.conversion import convert_jsonrpc_value_to_int from eth_defi.provider.fallback import FallbackProvider from eth_defi.provider.mev_blocker import MEVBlockerProvider @@ -617,7 +618,7 @@ def get_last_block_live(self) -> int: ) result = self.client.execute(query) # {'block': {'number': 37634011}} - return result["block"]["number"] + return convert_jsonrpc_value_to_int(result["block"]["number"]) def fetch_block_data(self, start_block, end_block) -> Iterable[BlockHeader]: total = end_block - start_block @@ -638,7 +639,7 @@ def fetch_block_data(self, start_block, end_block) -> Iterable[BlockHeader]: result = self.client.execute(query) for inp in result["blocks"]: - number = inp["number"] + number = convert_jsonrpc_value_to_int(inp["number"]) hash = inp["hash"] timestamp = int(inp["timestamp"], 16) yield BlockHeader(block_number=number, block_hash=hash, timestamp=timestamp) diff --git a/scripts/test-scan-aave-v2.py b/scripts/test-scan-aave-v2.py new file mode 100644 index 00000000..56887516 --- /dev/null +++ b/scripts/test-scan-aave-v2.py @@ -0,0 +1,47 @@ +"""A sample script to manually scan Aave v2 events. + +.. code-block:: shell + + python scripts/test-scan-aave-v2.py + +""" + +import logging +import os + +from web3 import HTTPProvider, Web3 + +from eth_defi.aave_v2.constants import get_aave_v2_network_by_chain_id +from eth_defi.aave_v2.events import aave_v2_fetch_events_to_csv +from eth_defi.event_reader.json_state import JSONFileScanState +from eth_defi.event_reader.reorganisation_monitor import create_reorganisation_monitor + +logging.getLogger().setLevel(logging.INFO) + +json_rpc_url = os.environ["JSON_RPC_URL"] +web3 = Web3(HTTPProvider(json_rpc_url)) + +aave_network = get_aave_v2_network_by_chain_id(web3.eth.chain_id) + +print(f"Detected network {aave_network.name } chain {web3.eth.chain_id} start block {aave_network.pool_created_at_block}") + +# Stores the last block number of event data we store +state = JSONFileScanState(f"/tmp/aave-v2-{aave_network.name.lower()}-scan.json") + +reorg_monitor = create_reorganisation_monitor(web3, check_depth=5) +reorg_monitor.load_initial_block_headers(block_count=10_000) + +# scan the last 10,000 blocks +end_block = reorg_monitor.get_last_block_live() +start_block = end_block - 10_000 +max_workers = 4 + +aave_v2_fetch_events_to_csv( + json_rpc_url, + state, + aave_network.name, + start_block=start_block, + end_block=end_block, + max_workers=max_workers, + reorg_monitor=reorg_monitor, +)