ETH Price: $3,623.99 (-0.07%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ConnectAaveV1Import

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-19
*/

pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;

interface TokenInterface {
    function approve(address, uint256) external;
    function transfer(address, uint) external;
    function transferFrom(address, address, uint) external;
    function deposit() external payable;
    function withdraw(uint) external;
    function balanceOf(address) external view returns (uint);
    function decimals() external view returns (uint);
}

interface AaveInterface {
    function deposit(address _reserve, uint256 _amount, uint16 _referralCode) external payable;
    function redeemUnderlying(
        address _reserve,
        address payable _user,
        uint256 _amount,
        uint256 _aTokenBalanceAfterRedeem
    ) external;
    function setUserUseReserveAsCollateral(address _reserve, bool _useAsCollateral) external;
    function getUserReserveData(address _reserve, address _user) external view returns (
        uint256 currentATokenBalance,
        uint256 currentBorrowBalance,
        uint256 principalBorrowBalance,
        uint256 borrowRateMode,
        uint256 borrowRate,
        uint256 liquidityRate,
        uint256 originationFee,
        uint256 variableBorrowIndex,
        uint256 lastUpdateTimestamp,
        bool usageAsCollateralEnabled
    );
    function borrow(address _reserve, uint256 _amount, uint256 _interestRateMode, uint16 _referralCode) external;
    function repay(address _reserve, uint256 _amount, address payable _onBehalfOf) external payable;
}

interface AaveProviderInterface {
    function getLendingPool() external view returns (address);
    function getLendingPoolCore() external view returns (address);
}

interface AaveCoreInterface {
    function getReserveATokenAddress(address _reserve) external view returns (address);
}

interface ATokenInterface {
    function redeem(uint256 _amount) external;
    function balanceOf(address _user) external view returns(uint256);
    function principalBalanceOf(address _user) external view returns(uint256);
    function transferFrom(address, address, uint) external returns (bool);
}

interface DSAInterface {
    function isAuth(address) external view returns(bool);
}

contract DSMath {

    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, "math-not-safe");
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "math-not-safe");
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }

    uint constant WAD = 10 ** 18;

    function wmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), WAD / 2) / WAD;
    }

    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, WAD), y / 2) / y;
    }

}

contract Helpers is DSMath {
    /**
     * @dev Return ethereum address
     */
    function getEthAddr() internal pure returns (address) {
        return 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; // ETH Address
    }

    /**
     * @dev get Referral Code
    */
    function getReferralCode() internal pure returns (uint16) {
        return 3228;
    }

    /**
     * @dev Connector Details.
     */
    function connectorID() public pure returns(uint model, uint id) {
        (model, id) = (1, 76);
    }
}

contract AaveHelpers is Helpers {

    /**
     * @dev get Aave Provider
    */
    function getAaveProvider() internal pure returns (AaveProviderInterface) {
        return AaveProviderInterface(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8); //mainnet
        // return AaveProviderInterface(0x506B0B2CF20FAA8f38a4E2B524EE43e1f4458Cc5); //kovan
    }

    function getIsColl(AaveInterface aave, address token) internal view returns (bool isCol) {
        (, , , , , , , , , isCol) = aave.getUserReserveData(token, address(this));
    }

    function getPaybackBalance(AaveInterface aave, address token, address user) internal view returns (uint amt) {
        (, uint bal, , , , , uint fee, , , ) = aave.getUserReserveData(token, user);
        amt = add(bal, fee);
    }
}

contract AaveResolver is AaveHelpers {
    function _transferAtoken(
        uint _length,
        AaveInterface aave,
        ATokenInterface[] memory atokenContracts,
        address[] memory tokens,
        uint[] memory amts,
        address userAccount
    ) internal {
        for (uint i = 0; i < _length; i++) {
            if (amts[i] > 0) {
                require(atokenContracts[i].transferFrom(userAccount, address(this), amts[i]), "allowance?");

                if (!getIsColl(aave, tokens[i])) {
                    aave.setUserUseReserveAsCollateral(tokens[i], true);
                }
            }
        }
    }

    function _paybackOne(AaveInterface aave, address token, uint amt, address user) internal {
        if (amt > 0) {
            uint ethAmt;

            if (token == getEthAddr()) {
                ethAmt = amt;
            }

            aave.repay.value(ethAmt)(token, amt, payable(user));
        }
    }

    function _borrow(
        uint _length,
        AaveInterface aave,
        address[] memory tokens,
        uint[] memory amts
    ) internal {
        uint minAmt = 5000000; // 5e6
        for (uint i = 0; i < _length; i++) {
            if (amts[i] > 0) {
                bool isSmallAmt = amts[i] < minAmt;
                uint borrowAmt = isSmallAmt ? minAmt : amts[i];
                uint paybackAmt = isSmallAmt ? sub(minAmt, amts[i]) : 0;

                aave.borrow(tokens[i], borrowAmt, 2, getReferralCode());
                _paybackOne(aave, tokens[i], paybackAmt, address(this));
            }
        }
    }

    function _payback(
        uint _length,
        AaveInterface aave,
        address[] memory tokens,
        uint[] memory amts,
        address user
    ) internal {
        for (uint i = 0; i < _length; i++) {
            _paybackOne(aave, tokens[i], amts[i], user);
        }
    }
}

contract AaveImportResolver is AaveResolver {

    function importAave(address userAccount, address[] calldata tokens) external payable {
        require(DSAInterface(address(this)).isAuth(userAccount), "user-account-not-auth");

        uint minAmt = 5000000; // 5e6

        uint _length = tokens.length;
        require(_length > 0, "0-tokens-not-allowed");

        AaveInterface aave = AaveInterface(getAaveProvider().getLendingPool());
        AaveCoreInterface aaveCore = AaveCoreInterface(getAaveProvider().getLendingPoolCore());

        uint[] memory borrowAmts = new uint[](_length);
        uint[] memory atokensBal = new uint[](_length);
        ATokenInterface[] memory atokenContracts = new ATokenInterface[](_length);

        for (uint i = 0; i < _length; i++) {
            atokenContracts[i] = ATokenInterface(aaveCore.getReserveATokenAddress(tokens[i]));
            borrowAmts[i] = getPaybackBalance(aave, tokens[i], userAccount);
            atokensBal[i] = atokenContracts[i].balanceOf(userAccount);

            if (tokens[i] != getEthAddr()) {
                uint allowance = borrowAmts[i] < minAmt ? minAmt : borrowAmts[i]; 
                TokenInterface(tokens[i]).approve(address(aaveCore), allowance);
            }
        }

        _borrow(_length, aave, tokens, borrowAmts);
        _payback(_length, aave, tokens, borrowAmts, userAccount);
        _transferAtoken(_length, aave, atokenContracts, tokens, atokensBal, userAccount);
    }
}

contract ConnectAaveV1Import is AaveImportResolver {
    string public name = "AaveV1-Import-v1.1";
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"connectorID","outputs":[{"internalType":"uint256","name":"model","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"userAccount","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"importAave","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526040518060400160405280601281526020017f4161766556312d496d706f72742d76312e310000000000000000000000000000815250600090805190602001906200005192919062000066565b503480156200005f57600080fd5b506200010c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000a957805160ff1916838001178555620000da565b82800160010185558215620000da579182015b82811115620000d9578251825591602001919060010190620000bc565b5b509050620000e99190620000ed565b5090565b5b8082111562000108576000816000905550600101620000ee565b5090565b6116fd806200011c6000396000f3fe6080604052600436106100345760003560e01c806306fdde0314610039578063b68ab7ee14610064578063eb15f78114610080575b600080fd5b34801561004557600080fd5b5061004e6100ac565b60405161005b91906114bd565b60405180910390f35b61007e6004803603810190610079919061101c565b61014a565b005b34801561008c57600080fd5b5061009561086f565b6040516100a392919061157f565b60405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101425780601f1061011757610100808354040283529160200191610142565b820191906000526020600020905b81548152906001019060200180831161012557829003601f168201915b505050505081565b3073ffffffffffffffffffffffffffffffffffffffff16632520e7ff846040518263ffffffff1660e01b81526004016101839190611374565b60206040518083038186803b15801561019b57600080fd5b505afa1580156101af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d39190611074565b610212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102099061153f565b60405180910390fd5b6000624c4b409050600083839050905060008111610265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025c9061155f565b60405180910390fd5b600061026f610882565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b457600080fd5b505afa1580156102c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ec9190610ff3565b905060006102f8610882565b73ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561033d57600080fd5b505afa158015610351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103759190610ff3565b905060608367ffffffffffffffff8111801561039057600080fd5b506040519080825280602002602001820160405280156103bf5781602001602082028036833780820191505090505b50905060608467ffffffffffffffff811180156103db57600080fd5b5060405190808252806020026020018201604052801561040a5781602001602082028036833780820191505090505b50905060608567ffffffffffffffff8111801561042657600080fd5b506040519080825280602002602001820160405280156104555781602001602082028036833780820191505090505b50905060005b86811015610778578473ffffffffffffffffffffffffffffffffffffffff166334b3beee8b8b8481811061048b57fe5b90506020020160208101906104a09190610fca565b6040518263ffffffff1660e01b81526004016104bc9190611374565b60206040518083038186803b1580156104d457600080fd5b505afa1580156104e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050c9190610ff3565b82828151811061051857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061057d868b8b8481811061056257fe5b90506020020160208101906105779190610fca565b8d61089e565b84828151811061058957fe5b6020026020010181815250508181815181106105a157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b81526004016105e19190611374565b60206040518083038186803b1580156105f957600080fd5b505afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610631919061109d565b83828151811061063d57fe5b602002602001018181525050610651610950565b73ffffffffffffffffffffffffffffffffffffffff168a8a8381811061067357fe5b90506020020160208101906106889190610fca565b73ffffffffffffffffffffffffffffffffffffffff161461076b576000888583815181106106b257fe5b6020026020010151106106d8578482815181106106cb57fe5b60200260200101516106da565b885b90508a8a838181106106e857fe5b90506020020160208101906106fd9190610fca565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b387836040518363ffffffff1660e01b8152600401610737929190611418565b600060405180830381600087803b15801561075157600080fd5b505af1158015610765573d6000803e3d6000fd5b50505050505b808060010191505061045b565b506107c686868b8b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508661096c565b61081486868b8b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050868e610acb565b6108638686838c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050868f610b1d565b50505050505050505050565b6000806001604c80925081935050509091565b60007324a42fd28c976a61df5d00d0599c34c4f90748c8905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff166328dd2d0186866040518363ffffffff1660e01b81526004016108de92919061138f565b6101406040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f91906110c6565b5050509650505050509250506109458282610cf2565b925050509392505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b6000624c4b40905060005b85811015610ac357600083828151811061098d57fe5b60200260200101511115610ab6576000828483815181106109aa57fe5b60200260200101511090506000816109d5578483815181106109c857fe5b60200260200101516109d7565b835b90506000826109e7576000610a05565b610a04858786815181106109f757fe5b6020026020010151610d42565b5b90508773ffffffffffffffffffffffffffffffffffffffff1663c858f5f9888681518110610a2f57fe5b6020026020010151846002610a42610d92565b6040518563ffffffff1660e01b8152600401610a619493929190611478565b600060405180830381600087803b158015610a7b57600080fd5b505af1158015610a8f573d6000803e3d6000fd5b50505050610ab288888681518110610aa357fe5b60200260200101518330610d9c565b5050505b8080600101915050610977565b505050505050565b60005b85811015610b1557610b0885858381518110610ae657fe5b6020026020010151858481518110610afa57fe5b602002602001015185610d9c565b8080600101915050610ace565b505050505050565b60005b86811015610ce9576000838281518110610b3657fe5b60200260200101511115610cdc57848181518110610b5057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166323b872dd8330868581518110610b8157fe5b60200260200101516040518463ffffffff1660e01b8152600401610ba7939291906113b8565b602060405180830381600087803b158015610bc157600080fd5b505af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf99190611074565b610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f906114df565b60405180910390fd5b610c5586858381518110610c4857fe5b6020026020010151610e5e565b610cdb578573ffffffffffffffffffffffffffffffffffffffff16635a3b74b9858381518110610c8157fe5b602002602001015160016040518363ffffffff1660e01b8152600401610ca89291906113ef565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b505050505b5b8080600101915050610b20565b50505050505050565b6000828284019150811015610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d339061151f565b60405180910390fd5b92915050565b6000828284039150811115610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d83906114ff565b60405180910390fd5b92915050565b6000610c9c905090565b6000821115610e58576000610daf610950565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610de6578290505b8473ffffffffffffffffffffffffffffffffffffffff16635ceae9c4828686866040518563ffffffff1660e01b8152600401610e2493929190611441565b6000604051808303818588803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b5050505050505b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff166328dd2d0183306040518363ffffffff1660e01b8152600401610e9b92919061138f565b6101406040518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec91906110c6565b9091929394959697985090919293949596975090919293949596509091929394955090919293945090919293509091925090915090508091505092915050565b600081359050610f3b81611682565b92915050565b600081519050610f5081611682565b92915050565b60008083601f840112610f6857600080fd5b8235905067ffffffffffffffff811115610f8157600080fd5b602083019150836020820283011115610f9957600080fd5b9250929050565b600081519050610faf81611699565b92915050565b600081519050610fc4816116b0565b92915050565b600060208284031215610fdc57600080fd5b6000610fea84828501610f2c565b91505092915050565b60006020828403121561100557600080fd5b600061101384828501610f41565b91505092915050565b60008060006040848603121561103157600080fd5b600061103f86828701610f2c565b935050602084013567ffffffffffffffff81111561105c57600080fd5b61106886828701610f56565b92509250509250925092565b60006020828403121561108657600080fd5b600061109484828501610fa0565b91505092915050565b6000602082840312156110af57600080fd5b60006110bd84828501610fb5565b91505092915050565b6000806000806000806000806000806101408b8d0312156110e657600080fd5b60006110f48d828e01610fb5565b9a505060206111058d828e01610fb5565b99505060406111168d828e01610fb5565b98505060606111278d828e01610fb5565b97505060806111388d828e01610fb5565b96505060a06111498d828e01610fb5565b95505060c061115a8d828e01610fb5565b94505060e061116b8d828e01610fb5565b93505061010061117d8d828e01610fb5565b92505061012061118f8d828e01610fa0565b9150509295989b9194979a5092959850565b6111aa816115d6565b82525050565b6111b9816115c4565b82525050565b6111c8816115e8565b82525050565b6111d78161162c565b82525050565b60006111e8826115a8565b6111f281856115b3565b935061120281856020860161163e565b61120b81611671565b840191505092915050565b6000611223600a836115b3565b91507f616c6c6f77616e63653f000000000000000000000000000000000000000000006000830152602082019050919050565b60006112636015836115b3565b91507f64732d6d6174682d7375622d756e646572666c6f7700000000000000000000006000830152602082019050919050565b60006112a3600d836115b3565b91507f6d6174682d6e6f742d73616665000000000000000000000000000000000000006000830152602082019050919050565b60006112e36015836115b3565b91507f757365722d6163636f756e742d6e6f742d6175746800000000000000000000006000830152602082019050919050565b60006113236014836115b3565b91507f302d746f6b656e732d6e6f742d616c6c6f7765640000000000000000000000006000830152602082019050919050565b61135f816115f4565b82525050565b61136e81611622565b82525050565b600060208201905061138960008301846111b0565b92915050565b60006040820190506113a460008301856111b0565b6113b160208301846111b0565b9392505050565b60006060820190506113cd60008301866111b0565b6113da60208301856111b0565b6113e76040830184611365565b949350505050565b600060408201905061140460008301856111b0565b61141160208301846111bf565b9392505050565b600060408201905061142d60008301856111b0565b61143a6020830184611365565b9392505050565b600060608201905061145660008301866111b0565b6114636020830185611365565b61147060408301846111a1565b949350505050565b600060808201905061148d60008301876111b0565b61149a6020830186611365565b6114a760408301856111ce565b6114b46060830184611356565b95945050505050565b600060208201905081810360008301526114d781846111dd565b905092915050565b600060208201905081810360008301526114f881611216565b9050919050565b6000602082019050818103600083015261151881611256565b9050919050565b6000602082019050818103600083015261153881611296565b9050919050565b60006020820190508181036000830152611558816112d6565b9050919050565b6000602082019050818103600083015261157881611316565b9050919050565b60006040820190506115946000830185611365565b6115a16020830184611365565b9392505050565b600081519050919050565b600082825260208201905092915050565b60006115cf82611602565b9050919050565b60006115e182611602565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061163782611622565b9050919050565b60005b8381101561165c578082015181840152602081019050611641565b8381111561166b576000848401525b50505050565b6000601f19601f8301169050919050565b61168b816115c4565b811461169657600080fd5b50565b6116a2816115e8565b81146116ad57600080fd5b50565b6116b981611622565b81146116c457600080fd5b5056fea26469706673582212200ce9257a364f594d2adaaefec0ea20812f89120737df136def663e37b213458264736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100345760003560e01c806306fdde0314610039578063b68ab7ee14610064578063eb15f78114610080575b600080fd5b34801561004557600080fd5b5061004e6100ac565b60405161005b91906114bd565b60405180910390f35b61007e6004803603810190610079919061101c565b61014a565b005b34801561008c57600080fd5b5061009561086f565b6040516100a392919061157f565b60405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101425780601f1061011757610100808354040283529160200191610142565b820191906000526020600020905b81548152906001019060200180831161012557829003601f168201915b505050505081565b3073ffffffffffffffffffffffffffffffffffffffff16632520e7ff846040518263ffffffff1660e01b81526004016101839190611374565b60206040518083038186803b15801561019b57600080fd5b505afa1580156101af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d39190611074565b610212576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102099061153f565b60405180910390fd5b6000624c4b409050600083839050905060008111610265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025c9061155f565b60405180910390fd5b600061026f610882565b73ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102b457600080fd5b505afa1580156102c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ec9190610ff3565b905060006102f8610882565b73ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561033d57600080fd5b505afa158015610351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103759190610ff3565b905060608367ffffffffffffffff8111801561039057600080fd5b506040519080825280602002602001820160405280156103bf5781602001602082028036833780820191505090505b50905060608467ffffffffffffffff811180156103db57600080fd5b5060405190808252806020026020018201604052801561040a5781602001602082028036833780820191505090505b50905060608567ffffffffffffffff8111801561042657600080fd5b506040519080825280602002602001820160405280156104555781602001602082028036833780820191505090505b50905060005b86811015610778578473ffffffffffffffffffffffffffffffffffffffff166334b3beee8b8b8481811061048b57fe5b90506020020160208101906104a09190610fca565b6040518263ffffffff1660e01b81526004016104bc9190611374565b60206040518083038186803b1580156104d457600080fd5b505afa1580156104e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050c9190610ff3565b82828151811061051857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061057d868b8b8481811061056257fe5b90506020020160208101906105779190610fca565b8d61089e565b84828151811061058957fe5b6020026020010181815250508181815181106105a157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b81526004016105e19190611374565b60206040518083038186803b1580156105f957600080fd5b505afa15801561060d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610631919061109d565b83828151811061063d57fe5b602002602001018181525050610651610950565b73ffffffffffffffffffffffffffffffffffffffff168a8a8381811061067357fe5b90506020020160208101906106889190610fca565b73ffffffffffffffffffffffffffffffffffffffff161461076b576000888583815181106106b257fe5b6020026020010151106106d8578482815181106106cb57fe5b60200260200101516106da565b885b90508a8a838181106106e857fe5b90506020020160208101906106fd9190610fca565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b387836040518363ffffffff1660e01b8152600401610737929190611418565b600060405180830381600087803b15801561075157600080fd5b505af1158015610765573d6000803e3d6000fd5b50505050505b808060010191505061045b565b506107c686868b8b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508661096c565b61081486868b8b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050868e610acb565b6108638686838c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050868f610b1d565b50505050505050505050565b6000806001604c80925081935050509091565b60007324a42fd28c976a61df5d00d0599c34c4f90748c8905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff166328dd2d0186866040518363ffffffff1660e01b81526004016108de92919061138f565b6101406040518083038186803b1580156108f757600080fd5b505afa15801561090b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092f91906110c6565b5050509650505050509250506109458282610cf2565b925050509392505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b6000624c4b40905060005b85811015610ac357600083828151811061098d57fe5b60200260200101511115610ab6576000828483815181106109aa57fe5b60200260200101511090506000816109d5578483815181106109c857fe5b60200260200101516109d7565b835b90506000826109e7576000610a05565b610a04858786815181106109f757fe5b6020026020010151610d42565b5b90508773ffffffffffffffffffffffffffffffffffffffff1663c858f5f9888681518110610a2f57fe5b6020026020010151846002610a42610d92565b6040518563ffffffff1660e01b8152600401610a619493929190611478565b600060405180830381600087803b158015610a7b57600080fd5b505af1158015610a8f573d6000803e3d6000fd5b50505050610ab288888681518110610aa357fe5b60200260200101518330610d9c565b5050505b8080600101915050610977565b505050505050565b60005b85811015610b1557610b0885858381518110610ae657fe5b6020026020010151858481518110610afa57fe5b602002602001015185610d9c565b8080600101915050610ace565b505050505050565b60005b86811015610ce9576000838281518110610b3657fe5b60200260200101511115610cdc57848181518110610b5057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166323b872dd8330868581518110610b8157fe5b60200260200101516040518463ffffffff1660e01b8152600401610ba7939291906113b8565b602060405180830381600087803b158015610bc157600080fd5b505af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf99190611074565b610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f906114df565b60405180910390fd5b610c5586858381518110610c4857fe5b6020026020010151610e5e565b610cdb578573ffffffffffffffffffffffffffffffffffffffff16635a3b74b9858381518110610c8157fe5b602002602001015160016040518363ffffffff1660e01b8152600401610ca89291906113ef565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b505050505b5b8080600101915050610b20565b50505050505050565b6000828284019150811015610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d339061151f565b60405180910390fd5b92915050565b6000828284039150811115610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d83906114ff565b60405180910390fd5b92915050565b6000610c9c905090565b6000821115610e58576000610daf610950565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610de6578290505b8473ffffffffffffffffffffffffffffffffffffffff16635ceae9c4828686866040518563ffffffff1660e01b8152600401610e2493929190611441565b6000604051808303818588803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b5050505050505b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff166328dd2d0183306040518363ffffffff1660e01b8152600401610e9b92919061138f565b6101406040518083038186803b158015610eb457600080fd5b505afa158015610ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eec91906110c6565b9091929394959697985090919293949596975090919293949596509091929394955090919293945090919293509091925090915090508091505092915050565b600081359050610f3b81611682565b92915050565b600081519050610f5081611682565b92915050565b60008083601f840112610f6857600080fd5b8235905067ffffffffffffffff811115610f8157600080fd5b602083019150836020820283011115610f9957600080fd5b9250929050565b600081519050610faf81611699565b92915050565b600081519050610fc4816116b0565b92915050565b600060208284031215610fdc57600080fd5b6000610fea84828501610f2c565b91505092915050565b60006020828403121561100557600080fd5b600061101384828501610f41565b91505092915050565b60008060006040848603121561103157600080fd5b600061103f86828701610f2c565b935050602084013567ffffffffffffffff81111561105c57600080fd5b61106886828701610f56565b92509250509250925092565b60006020828403121561108657600080fd5b600061109484828501610fa0565b91505092915050565b6000602082840312156110af57600080fd5b60006110bd84828501610fb5565b91505092915050565b6000806000806000806000806000806101408b8d0312156110e657600080fd5b60006110f48d828e01610fb5565b9a505060206111058d828e01610fb5565b99505060406111168d828e01610fb5565b98505060606111278d828e01610fb5565b97505060806111388d828e01610fb5565b96505060a06111498d828e01610fb5565b95505060c061115a8d828e01610fb5565b94505060e061116b8d828e01610fb5565b93505061010061117d8d828e01610fb5565b92505061012061118f8d828e01610fa0565b9150509295989b9194979a5092959850565b6111aa816115d6565b82525050565b6111b9816115c4565b82525050565b6111c8816115e8565b82525050565b6111d78161162c565b82525050565b60006111e8826115a8565b6111f281856115b3565b935061120281856020860161163e565b61120b81611671565b840191505092915050565b6000611223600a836115b3565b91507f616c6c6f77616e63653f000000000000000000000000000000000000000000006000830152602082019050919050565b60006112636015836115b3565b91507f64732d6d6174682d7375622d756e646572666c6f7700000000000000000000006000830152602082019050919050565b60006112a3600d836115b3565b91507f6d6174682d6e6f742d73616665000000000000000000000000000000000000006000830152602082019050919050565b60006112e36015836115b3565b91507f757365722d6163636f756e742d6e6f742d6175746800000000000000000000006000830152602082019050919050565b60006113236014836115b3565b91507f302d746f6b656e732d6e6f742d616c6c6f7765640000000000000000000000006000830152602082019050919050565b61135f816115f4565b82525050565b61136e81611622565b82525050565b600060208201905061138960008301846111b0565b92915050565b60006040820190506113a460008301856111b0565b6113b160208301846111b0565b9392505050565b60006060820190506113cd60008301866111b0565b6113da60208301856111b0565b6113e76040830184611365565b949350505050565b600060408201905061140460008301856111b0565b61141160208301846111bf565b9392505050565b600060408201905061142d60008301856111b0565b61143a6020830184611365565b9392505050565b600060608201905061145660008301866111b0565b6114636020830185611365565b61147060408301846111a1565b949350505050565b600060808201905061148d60008301876111b0565b61149a6020830186611365565b6114a760408301856111ce565b6114b46060830184611356565b95945050505050565b600060208201905081810360008301526114d781846111dd565b905092915050565b600060208201905081810360008301526114f881611216565b9050919050565b6000602082019050818103600083015261151881611256565b9050919050565b6000602082019050818103600083015261153881611296565b9050919050565b60006020820190508181036000830152611558816112d6565b9050919050565b6000602082019050818103600083015261157881611316565b9050919050565b60006040820190506115946000830185611365565b6115a16020830184611365565b9392505050565b600081519050919050565b600082825260208201905092915050565b60006115cf82611602565b9050919050565b60006115e182611602565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061163782611622565b9050919050565b60005b8381101561165c578082015181840152602081019050611641565b8381111561166b576000848401525b50505050565b6000601f19601f8301169050919050565b61168b816115c4565b811461169657600080fd5b50565b6116a2816115e8565b81146116ad57600080fd5b50565b6116b981611622565b81146116c457600080fd5b5056fea26469706673582212200ce9257a364f594d2adaaefec0ea20812f89120737df136def663e37b213458264736f6c634300060c0033

Deployed Bytecode Sourcemap

7713:103:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7771:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6257:1449;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3366:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7771:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6257:1449::-;6382:4;6361:34;;;6396:11;6361:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6353:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;6447:11;6461:7;6447:21;;6488:12;6503:6;;:13;;6488:28;;6545:1;6535:7;:11;6527:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6584:18;6619:17;:15;:17::i;:::-;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6584:70;;6665:26;6712:17;:15;:17::i;:::-;:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6665:86;;6764:24;6802:7;6791:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6764:46;;6821:24;6859:7;6848:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6821:46;;6878:40;6943:7;6921:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6878:73;;6969:6;6964:522;6985:7;6981:1;:11;6964:522;;;7051:8;:32;;;7084:6;;7091:1;7084:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;7051:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7014:15;7030:1;7014:18;;;;;;;;;;;;;:81;;;;;;;;;;;7126:47;7144:4;7150:6;;7157:1;7150:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;7161:11;7126:17;:47::i;:::-;7110:10;7121:1;7110:13;;;;;;;;;;;;;:63;;;;;7204:15;7220:1;7204:18;;;;;;;;;;;;;;:28;;;7233:11;7204:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7188:10;7199:1;7188:13;;;;;;;;;;;;;:57;;;;;7279:12;:10;:12::i;:::-;7266:25;;:6;;7273:1;7266:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;:25;;;7262:213;;7312:14;7345:6;7329:10;7340:1;7329:13;;;;;;;;;;;;;;:22;:47;;7363:10;7374:1;7363:13;;;;;;;;;;;;;;7329:47;;;7354:6;7329:47;7312:64;;7411:6;;7418:1;7411:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;7396:33;;;7438:8;7449:9;7396:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7262:213;;6994:3;;;;;;;6964:522;;;;7498:42;7506:7;7515:4;7521:6;;7498:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7529:10;7498:7;:42::i;:::-;7551:56;7560:7;7569:4;7575:6;;7551:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7583:10;7595:11;7551:8;:56::i;:::-;7618:80;7634:7;7643:4;7649:15;7666:6;;7618:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7674:10;7686:11;7618:15;:80::i;:::-;6257:1449;;;;;;;;;;:::o;3366:104::-;3409:10;3421:7;3456:1;3459:2;3441:21;;;;;;;;3366:104;;:::o;3566:268::-;3616:21;3679:42;3650:72;;3566:268;:::o;4031:233::-;4130:8;4154;4172;4190:4;:23;;;4214:5;4221:4;4190:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4151:75;;;;;;;;;;;;4243:13;4247:3;4252;4243;:13::i;:::-;4237:19;;4031:233;;;;;;;:::o;3027:137::-;3072:7;3099:42;3092:49;;3027:137;:::o;5253:641::-;5412:11;5426:7;5412:21;;5456:6;5451:436;5472:7;5468:1;:11;5451:436;;;5515:1;5505:4;5510:1;5505:7;;;;;;;;;;;;;;:11;5501:375;;;5537:15;5565:6;5555:4;5560:1;5555:7;;;;;;;;;;;;;;:16;5537:34;;5590:14;5607:10;:29;;5629:4;5634:1;5629:7;;;;;;;;;;;;;;5607:29;;;5620:6;5607:29;5590:46;;5655:15;5673:10;:37;;5709:1;5673:37;;;5686:20;5690:6;5698:4;5703:1;5698:7;;;;;;;;;;;;;;5686:3;:20::i;:::-;5673:37;5655:55;;5731:4;:11;;;5743:6;5750:1;5743:9;;;;;;;;;;;;;;5754;5765:1;5768:17;:15;:17::i;:::-;5731:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5805;5817:4;5823:6;5830:1;5823:9;;;;;;;;;;;;;;5834:10;5854:4;5805:11;:55::i;:::-;5501:375;;;;5481:3;;;;;;;5451:436;;;;5253:641;;;;;:::o;5902:295::-;6090:6;6085:105;6106:7;6102:1;:11;6085:105;;;6135:43;6147:4;6153:6;6160:1;6153:9;;;;;;;;;;;;;;6164:4;6169:1;6164:7;;;;;;;;;;;;;;6173:4;6135:11;:43::i;:::-;6115:3;;;;;;;6085:105;;;;5902:295;;;;;:::o;4315:606::-;4568:6;4563:351;4584:7;4580:1;:11;4563:351;;;4627:1;4617:4;4622:1;4617:7;;;;;;;;;;;;;;:11;4613:290;;;4657:15;4673:1;4657:18;;;;;;;;;;;;;;:31;;;4689:11;4710:4;4717;4722:1;4717:7;;;;;;;;;;;;;;4657:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4649:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;4766:26;4776:4;4782:6;4789:1;4782:9;;;;;;;;;;;;;;4766;:26::i;:::-;4761:127;;4817:4;:34;;;4852:6;4859:1;4852:9;;;;;;;;;;;;;;4863:4;4817:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4761:127;4613:290;4593:3;;;;;;;4563:351;;;;4315:606;;;;;;:::o;2251:121::-;2303:6;2345:1;2339;2335;:5;2331:9;;;2330:16;;2322:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:121;;;;:::o;2523:129::-;2575:6;2617:1;2611;2607;:5;2603:9;;;2602:16;;2594:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2523:129;;;;:::o;3220:88::-;3270:6;3296:4;3289:11;;3220:88;:::o;4929:316::-;5039:1;5033:3;:7;5029:209;;;5057:11;5098:12;:10;:12::i;:::-;5089:21;;:5;:21;;;5085:74;;;5140:3;5131:12;;5085:74;5175:4;:10;;;5192:6;5200:5;5207:3;5220:4;5175:51;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:209;;4929:316;;;;:::o;3842:181::-;3919:10;3970:4;:23;;;3994:5;4009:4;3970:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3942:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3842:181;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:134::-;;226:6;220:13;211:22;;238:33;265:5;238:33;:::i;:::-;205:71;;;;:::o;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;482:6;469:20;459:30;;509:18;501:6;498:30;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;:::o;661:128::-;;742:6;736:13;727:22;;754:30;778:5;754:30;:::i;:::-;721:68;;;;:::o;796:134::-;;880:6;874:13;865:22;;892:33;919:5;892:33;:::i;:::-;859:71;;;;:::o;937:241::-;;1041:2;1029:9;1020:7;1016:23;1012:32;1009:2;;;1057:1;1054;1047:12;1009:2;1092:1;1109:53;1154:7;1145:6;1134:9;1130:22;1109:53;:::i;:::-;1099:63;;1071:97;1003:175;;;;:::o;1185:263::-;;1300:2;1288:9;1279:7;1275:23;1271:32;1268:2;;;1316:1;1313;1306:12;1268:2;1351:1;1368:64;1424:7;1415:6;1404:9;1400:22;1368:64;:::i;:::-;1358:74;;1330:108;1262:186;;;;:::o;1455:522::-;;;;1611:2;1599:9;1590:7;1586:23;1582:32;1579:2;;;1627:1;1624;1617:12;1579:2;1662:1;1679:53;1724:7;1715:6;1704:9;1700:22;1679:53;:::i;:::-;1669:63;;1641:97;1797:2;1786:9;1782:18;1769:32;1821:18;1813:6;1810:30;1807:2;;;1853:1;1850;1843:12;1807:2;1881:80;1953:7;1944:6;1933:9;1929:22;1881:80;:::i;:::-;1863:98;;;;1748:219;1573:404;;;;;:::o;1984:257::-;;2096:2;2084:9;2075:7;2071:23;2067:32;2064:2;;;2112:1;2109;2102:12;2064:2;2147:1;2164:61;2217:7;2208:6;2197:9;2193:22;2164:61;:::i;:::-;2154:71;;2126:105;2058:183;;;;:::o;2248:263::-;;2363:2;2351:9;2342:7;2338:23;2334:32;2331:2;;;2379:1;2376;2369:12;2331:2;2414:1;2431:64;2487:7;2478:6;2467:9;2463:22;2431:64;:::i;:::-;2421:74;;2393:108;2325:186;;;;:::o;2518:1488::-;;;;;;;;;;;2783:3;2771:9;2762:7;2758:23;2754:33;2751:2;;;2800:1;2797;2790:12;2751:2;2835:1;2852:64;2908:7;2899:6;2888:9;2884:22;2852:64;:::i;:::-;2842:74;;2814:108;2953:2;2971:64;3027:7;3018:6;3007:9;3003:22;2971:64;:::i;:::-;2961:74;;2932:109;3072:2;3090:64;3146:7;3137:6;3126:9;3122:22;3090:64;:::i;:::-;3080:74;;3051:109;3191:2;3209:64;3265:7;3256:6;3245:9;3241:22;3209:64;:::i;:::-;3199:74;;3170:109;3310:3;3329:64;3385:7;3376:6;3365:9;3361:22;3329:64;:::i;:::-;3319:74;;3289:110;3430:3;3449:64;3505:7;3496:6;3485:9;3481:22;3449:64;:::i;:::-;3439:74;;3409:110;3550:3;3569:64;3625:7;3616:6;3605:9;3601:22;3569:64;:::i;:::-;3559:74;;3529:110;3670:3;3689:64;3745:7;3736:6;3725:9;3721:22;3689:64;:::i;:::-;3679:74;;3649:110;3790:3;3809:64;3865:7;3856:6;3845:9;3841:22;3809:64;:::i;:::-;3799:74;;3769:110;3910:3;3929:61;3982:7;3973:6;3962:9;3958:22;3929:61;:::i;:::-;3919:71;;3889:107;2745:1261;;;;;;;;;;;;;:::o;4013:137::-;4112:32;4138:5;4112:32;:::i;:::-;4107:3;4100:45;4094:56;;:::o;4157:113::-;4240:24;4258:5;4240:24;:::i;:::-;4235:3;4228:37;4222:48;;:::o;4277:104::-;4354:21;4369:5;4354:21;:::i;:::-;4349:3;4342:34;4336:45;;:::o;4388:142::-;4479:45;4518:5;4479:45;:::i;:::-;4474:3;4467:58;4461:69;;:::o;4537:347::-;;4649:39;4682:5;4649:39;:::i;:::-;4700:71;4764:6;4759:3;4700:71;:::i;:::-;4693:78;;4776:52;4821:6;4816:3;4809:4;4802:5;4798:16;4776:52;:::i;:::-;4849:29;4871:6;4849:29;:::i;:::-;4844:3;4840:39;4833:46;;4629:255;;;;;:::o;4892:310::-;;5052:67;5116:2;5111:3;5052:67;:::i;:::-;5045:74;;5152:12;5148:1;5143:3;5139:11;5132:33;5193:2;5188:3;5184:12;5177:19;;5038:164;;;:::o;5211:321::-;;5371:67;5435:2;5430:3;5371:67;:::i;:::-;5364:74;;5471:23;5467:1;5462:3;5458:11;5451:44;5523:2;5518:3;5514:12;5507:19;;5357:175;;;:::o;5541:313::-;;5701:67;5765:2;5760:3;5701:67;:::i;:::-;5694:74;;5801:15;5797:1;5792:3;5788:11;5781:36;5845:2;5840:3;5836:12;5829:19;;5687:167;;;:::o;5863:321::-;;6023:67;6087:2;6082:3;6023:67;:::i;:::-;6016:74;;6123:23;6119:1;6114:3;6110:11;6103:44;6175:2;6170:3;6166:12;6159:19;;6009:175;;;:::o;6193:320::-;;6353:67;6417:2;6412:3;6353:67;:::i;:::-;6346:74;;6453:22;6449:1;6444:3;6440:11;6433:43;6504:2;6499:3;6495:12;6488:19;;6339:174;;;:::o;6521:110::-;6602:23;6619:5;6602:23;:::i;:::-;6597:3;6590:36;6584:47;;:::o;6638:113::-;6721:24;6739:5;6721:24;:::i;:::-;6716:3;6709:37;6703:48;;:::o;6758:222::-;;6885:2;6874:9;6870:18;6862:26;;6899:71;6967:1;6956:9;6952:17;6943:6;6899:71;:::i;:::-;6856:124;;;;:::o;6987:333::-;;7142:2;7131:9;7127:18;7119:26;;7156:71;7224:1;7213:9;7209:17;7200:6;7156:71;:::i;:::-;7238:72;7306:2;7295:9;7291:18;7282:6;7238:72;:::i;:::-;7113:207;;;;;:::o;7327:444::-;;7510:2;7499:9;7495:18;7487:26;;7524:71;7592:1;7581:9;7577:17;7568:6;7524:71;:::i;:::-;7606:72;7674:2;7663:9;7659:18;7650:6;7606:72;:::i;:::-;7689;7757:2;7746:9;7742:18;7733:6;7689:72;:::i;:::-;7481:290;;;;;;:::o;7778:321::-;;7927:2;7916:9;7912:18;7904:26;;7941:71;8009:1;7998:9;7994:17;7985:6;7941:71;:::i;:::-;8023:66;8085:2;8074:9;8070:18;8061:6;8023:66;:::i;:::-;7898:201;;;;;:::o;8106:333::-;;8261:2;8250:9;8246:18;8238:26;;8275:71;8343:1;8332:9;8328:17;8319:6;8275:71;:::i;:::-;8357:72;8425:2;8414:9;8410:18;8401:6;8357:72;:::i;:::-;8232:207;;;;;:::o;8446:476::-;;8645:2;8634:9;8630:18;8622:26;;8659:71;8727:1;8716:9;8712:17;8703:6;8659:71;:::i;:::-;8741:72;8809:2;8798:9;8794:18;8785:6;8741:72;:::i;:::-;8824:88;8908:2;8897:9;8893:18;8884:6;8824:88;:::i;:::-;8616:306;;;;;;:::o;8929:568::-;;9146:3;9135:9;9131:19;9123:27;;9161:71;9229:1;9218:9;9214:17;9205:6;9161:71;:::i;:::-;9243:72;9311:2;9300:9;9296:18;9287:6;9243:72;:::i;:::-;9326:80;9402:2;9391:9;9387:18;9378:6;9326:80;:::i;:::-;9417:70;9483:2;9472:9;9468:18;9459:6;9417:70;:::i;:::-;9117:380;;;;;;;:::o;9504:310::-;;9651:2;9640:9;9636:18;9628:26;;9701:9;9695:4;9691:20;9687:1;9676:9;9672:17;9665:47;9726:78;9799:4;9790:6;9726:78;:::i;:::-;9718:86;;9622:192;;;;:::o;9821:416::-;;10021:2;10010:9;10006:18;9998:26;;10071:9;10065:4;10061:20;10057:1;10046:9;10042:17;10035:47;10096:131;10222:4;10096:131;:::i;:::-;10088:139;;9992:245;;;:::o;10244:416::-;;10444:2;10433:9;10429:18;10421:26;;10494:9;10488:4;10484:20;10480:1;10469:9;10465:17;10458:47;10519:131;10645:4;10519:131;:::i;:::-;10511:139;;10415:245;;;:::o;10667:416::-;;10867:2;10856:9;10852:18;10844:26;;10917:9;10911:4;10907:20;10903:1;10892:9;10888:17;10881:47;10942:131;11068:4;10942:131;:::i;:::-;10934:139;;10838:245;;;:::o;11090:416::-;;11290:2;11279:9;11275:18;11267:26;;11340:9;11334:4;11330:20;11326:1;11315:9;11311:17;11304:47;11365:131;11491:4;11365:131;:::i;:::-;11357:139;;11261:245;;;:::o;11513:416::-;;11713:2;11702:9;11698:18;11690:26;;11763:9;11757:4;11753:20;11749:1;11738:9;11734:17;11727:47;11788:131;11914:4;11788:131;:::i;:::-;11780:139;;11684:245;;;:::o;11936:333::-;;12091:2;12080:9;12076:18;12068:26;;12105:71;12173:1;12162:9;12158:17;12149:6;12105:71;:::i;:::-;12187:72;12255:2;12244:9;12240:18;12231:6;12187:72;:::i;:::-;12062:207;;;;;:::o;12276:122::-;;12370:5;12364:12;12354:22;;12335:63;;;:::o;12406:163::-;;12521:6;12516:3;12509:19;12558:4;12553:3;12549:14;12534:29;;12502:67;;;;:::o;12577:91::-;;12639:24;12657:5;12639:24;:::i;:::-;12628:35;;12622:46;;;:::o;12675:99::-;;12745:24;12763:5;12745:24;:::i;:::-;12734:35;;12728:46;;;:::o;12781:85::-;;12854:5;12847:13;12840:21;12829:32;;12823:43;;;:::o;12873:84::-;;12945:6;12938:5;12934:18;12923:29;;12917:40;;;:::o;12964:121::-;;13037:42;13030:5;13026:54;13015:65;;13009:76;;;:::o;13092:72::-;;13154:5;13143:16;;13137:27;;;:::o;13171:116::-;;13258:24;13276:5;13258:24;:::i;:::-;13245:37;;13239:48;;;:::o;13295:268::-;13360:1;13367:101;13381:6;13378:1;13375:13;13367:101;;;13457:1;13452:3;13448:11;13442:18;13438:1;13433:3;13429:11;13422:39;13403:2;13400:1;13396:10;13391:15;;13367:101;;;13483:6;13480:1;13477:13;13474:2;;;13548:1;13539:6;13534:3;13530:16;13523:27;13474:2;13344:219;;;;:::o;13571:97::-;;13659:2;13655:7;13650:2;13643:5;13639:14;13635:28;13625:38;;13619:49;;;:::o;13676:117::-;13745:24;13763:5;13745:24;:::i;:::-;13738:5;13735:35;13725:2;;13784:1;13781;13774:12;13725:2;13719:74;:::o;13800:111::-;13866:21;13881:5;13866:21;:::i;:::-;13859:5;13856:32;13846:2;;13902:1;13899;13892:12;13846:2;13840:71;:::o;13918:117::-;13987:24;14005:5;13987:24;:::i;:::-;13980:5;13977:35;13967:2;;14026:1;14023;14016:12;13967:2;13961:74;:::o

Swarm Source

ipfs://0ce9257a364f594d2adaaefec0ea20812f89120737df136def663e37b2134582

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.