More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 59,270 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Auto Execute On ... | 54030610 | 2 hrs ago | IN | 0 AVAX | 0.00771973 | ||||
Auto Execute On ... | 54030606 | 2 hrs ago | IN | 0 AVAX | 0.00573938 | ||||
Auto Execute On ... | 54030603 | 2 hrs ago | IN | 0 AVAX | 0.00416328 | ||||
Auto Execute On ... | 54030599 | 2 hrs ago | IN | 0 AVAX | 0.00271817 | ||||
Auto Execute On ... | 54030593 | 2 hrs ago | IN | 0 AVAX | 0.02642945 | ||||
Auto Execute On ... | 54030591 | 2 hrs ago | IN | 0 AVAX | 0.02808335 | ||||
Auto Execute On ... | 54025908 | 5 hrs ago | IN | 0 AVAX | 0.00296043 | ||||
Auto Execute On ... | 54025906 | 5 hrs ago | IN | 0 AVAX | 0.0023076 | ||||
Auto Execute On ... | 54025904 | 5 hrs ago | IN | 0 AVAX | 0.00477355 | ||||
Auto Execute On ... | 54025897 | 5 hrs ago | IN | 0 AVAX | 0.0023085 | ||||
Do Flash Loan On... | 54025893 | 5 hrs ago | IN | 0 AVAX | 0.07079773 | ||||
Auto Execute On ... | 54020625 | 8 hrs ago | IN | 0 AVAX | 0.00771973 | ||||
Auto Execute On ... | 54020623 | 8 hrs ago | IN | 0 AVAX | 0.00578928 | ||||
Auto Execute On ... | 54020620 | 8 hrs ago | IN | 0 AVAX | 0.00416358 | ||||
Auto Execute On ... | 54020615 | 8 hrs ago | IN | 0 AVAX | 0.00271817 | ||||
Auto Execute On ... | 54020610 | 8 hrs ago | IN | 0 AVAX | 0.02642945 | ||||
Auto Execute On ... | 54020607 | 8 hrs ago | IN | 0 AVAX | 0.02808335 | ||||
Auto Execute On ... | 54013034 | 12 hrs ago | IN | 0 AVAX | 0.00771943 | ||||
Auto Execute On ... | 54013030 | 12 hrs ago | IN | 0 AVAX | 0.00574063 | ||||
Auto Execute On ... | 54013025 | 12 hrs ago | IN | 0 AVAX | 0.00421318 | ||||
Auto Execute On ... | 54013021 | 12 hrs ago | IN | 0 AVAX | 0.00271787 | ||||
Auto Execute On ... | 54013016 | 12 hrs ago | IN | 0 AVAX | 0.02642915 | ||||
Auto Execute On ... | 54013014 | 12 hrs ago | IN | 0 AVAX | 0.02808305 | ||||
Auto Execute On ... | 54008487 | 15 hrs ago | IN | 0 AVAX | 0.00296043 | ||||
Auto Execute On ... | 54008484 | 15 hrs ago | IN | 0 AVAX | 0.0023085 |
Loading...
Loading
Contract Name:
Automation
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.8.0 <0.9.0; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/interfaces/IERC3156FlashLender.sol"; import "../controller/IAccount.sol"; import "../verifier/IERC2612Verifier.sol"; import "../verifier/ITokenApprovalVerifier.sol"; contract Automation { address public immutable verifier; address public immutable tokenApprovalVerifier; address public immutable loanProvider; mapping(address => address) public customizedLoanProviders; event SetLoanProvider(address account, address loanProvider); constructor( address _verifier, address _tokenApprovalVerifier, address _loanProvider ) { verifier = _verifier; tokenApprovalVerifier = _tokenApprovalVerifier; loanProvider = _loanProvider; } function setLoanProvider(address account, address customizedLoanProvider) external { require(IAccount(account).owner() == msg.sender, "Owner check failed."); customizedLoanProviders[account] = customizedLoanProvider; emit SetLoanProvider(account, customizedLoanProvider); } function getLoanProvider(address account) public view returns (address) { return customizedLoanProviders[account] == address(0) ? loanProvider : customizedLoanProviders[account]; } function _executeVerifyBasic(address account, uint256 operation) internal view { require( IERC2612Verifier(verifier).isTxPermitted( account, msg.sender, operation ), "denied" ); } function _executeVerifyAdapter(address account, bytes memory callBytes) internal view { address adapter; assembly { adapter := mload(add(callBytes, 32)) } require( IERC2612Verifier(verifier).isTxPermitted( account, msg.sender, adapter ), "denied" ); } function _executeVerifyApproval(address account, address spender) internal view { require( ITokenApprovalVerifier(tokenApprovalVerifier).isWhitelisted( account, spender ), "denied" ); } function _autoExecute( address account, bytes calldata callBytes, bool callType ) internal returns (bytes memory returnData) { _executeVerifyAdapter(account, callBytes); returnData = IAccount(account).executeOnAdapter(callBytes, callType); } function autoExecute( address account, bytes calldata callBytes, bool callType ) external returns (bytes memory) { return _autoExecute(account, callBytes, callType); } function autoExecuteWithPermit( address account, bytes calldata callBytes, bool callType, bytes32 approvalType, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external returns (bytes memory) { IERC2612Verifier(verifier).permit( account, msg.sender, approvalType, deadline, v, r, s ); return _autoExecute(account, callBytes, callType); } function autoExecuteMultiCall( address account, bool[] memory callType, bytes[] memory callBytes, bool[] memory isNeedCallback ) external { require( callType.length == callBytes.length && callBytes.length == isNeedCallback.length ); for (uint256 i = 0; i < callType.length; i++) { _executeVerifyAdapter(account, callBytes[i]); } IAccount(payable(account)).multiCall( callType, callBytes, isNeedCallback ); } function autoApprove( address account, address token, address spender, uint256 amount ) external { _executeVerifyBasic(account, 0); _executeVerifyApproval(account, spender); IAccount(payable(account)).approve(token, spender, amount); } function autoApproveWithPermit( address account, address[] memory tokens, address[] memory spenders, uint256[] memory amounts, address[] memory permitSpenders, bool enable, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external { require( tokens.length == spenders.length && spenders.length == amounts.length, "approve length error." ); _executeVerifyBasic(account, 0); ITokenApprovalVerifier(tokenApprovalVerifier).permit( account, permitSpenders, enable, deadline, v, r, s ); for (uint256 i = 0; i < spenders.length; i++) { _executeVerifyApproval(account, spenders[i]); } IAccount(payable(account)).approveTokens(tokens, spenders, amounts); } function doFlashLoan( address account, address token, uint256 amount, bytes calldata payload ) external { _executeVerifyBasic(account, 1); ( bool[] memory _callType, bytes[] memory _callBytes, bool[] memory _isNeedCallback ) = abi.decode(payload, (bool[], bytes[], bool[])); require( _callType.length == _callBytes.length && _callBytes.length == _isNeedCallback.length ); for (uint256 i = 0; i < _callBytes.length; i++) { _executeVerifyAdapter(account, _callBytes[i]); } IERC3156FlashLender(getLoanProvider(account)).flashLoan( IERC3156FlashBorrower(account), token, amount, payload ); } function autoExecuteOnSubAccount( address account, address subAccount, bytes calldata callArgs, uint256 amountETH ) external { _executeVerifyBasic(account, 2); require(Ownable(subAccount).owner() == account, "invalid account!"); IAccount(payable(account)).callOnSubAccount( subAccount, callArgs, amountETH ); } function doFlashLoanOnSubAccount( address account, address subAccount, address token, uint256 amount, bytes calldata payload ) external { _executeVerifyBasic(account, 3); require(Ownable(subAccount).owner() == account, "invalid account!"); IERC3156FlashLender(getLoanProvider(account)).flashLoan( IERC3156FlashBorrower(subAccount), token, amount, payload ); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.8.0 <0.9.0; interface IERC2612Verifier { event OperatorUpdate( address account, address operator, bytes32 approvalType ); function approve( address account, address operator, bytes32 approvalType, uint256 deadline ) external; function permit( address account, address operator, bytes32 approvalType, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function isTxPermitted( address account, address operator, address adapter ) external view returns (bool); function isTxPermitted( address account, address operator, uint256 operation ) external view returns (bool); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.8.0 <0.9.0; interface IAccount { function owner() external view returns (address); function createSubAccount(bytes memory _data, uint256 _costETH) external payable returns (address newSubAccount); function executeOnAdapter(bytes calldata _callBytes, bool _callType) external payable returns (bytes memory); function multiCall( bool[] calldata _callType, bytes[] calldata _callArgs, bool[] calldata _isNeedCallback ) external; function setAdvancedOption(bool val) external; function callOnSubAccount( address _target, bytes calldata _callArgs, uint256 amountETH ) external; function withdrawAssets( address[] calldata _tokens, address _receiver, uint256[] calldata _amounts ) external; function approve( address tokenAddr, address to, uint256 amount ) external; function approveTokens( address[] calldata _tokens, address[] calldata _spenders, uint256[] calldata _amounts ) external; function isSubAccount(address subAccount) external view returns (bool); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.8.0 <0.9.0; interface ITokenApprovalVerifier { event ApprovalUpdate(address account, address[] spenders, bool isAllowed); function approve( address account, address[] memory spenders, bool enable, uint256 deadline ) external; function permit( address account, address[] memory spenders, bool enable, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function isWhitelisted(address account, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC3156FlashLender.sol) pragma solidity ^0.8.0; import "./IERC3156FlashBorrower.sol"; /** * @dev Interface of the ERC3156 FlashLender, as defined in * https://eips.ethereum.org/EIPS/eip-3156[ERC-3156]. * * _Available since v4.1._ */ interface IERC3156FlashLender { /** * @dev The amount of currency available to be lended. * @param token The loan currency. * @return The amount of `token` that can be borrowed. */ function maxFlashLoan(address token) external view returns (uint256); /** * @dev The fee to be charged for a given loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @return The amount of `token` to be charged for the loan, on top of the returned principal. */ function flashFee(address token, uint256 amount) external view returns (uint256); /** * @dev Initiate a flash loan. * @param receiver The receiver of the tokens in the loan, and the receiver of the callback. * @param token The loan currency. * @param amount The amount of tokens lent. * @param data Arbitrary data structure, intended to contain user-defined parameters. */ function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC3156FlashBorrower.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC3156 FlashBorrower, as defined in * https://eips.ethereum.org/EIPS/eip-3156[ERC-3156]. * * _Available since v4.1._ */ interface IERC3156FlashBorrower { /** * @dev Receive a flash loan. * @param initiator The initiator of the loan. * @param token The loan currency. * @param amount The amount of tokens lent. * @param fee The additional amount of tokens to repay. * @param data Arbitrary data structure, intended to contain user-defined parameters. * @return The keccak256 hash of "ERC3156FlashBorrower.onFlashLoan" */ function onFlashLoan( address initiator, address token, uint256 amount, uint256 fee, bytes calldata data ) external returns (bytes32); }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_verifier","type":"address"},{"internalType":"address","name":"_tokenApprovalVerifier","type":"address"},{"internalType":"address","name":"_loanProvider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"loanProvider","type":"address"}],"name":"SetLoanProvider","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"autoApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"spenders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"permitSpenders","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"},{"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":"autoApproveWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes","name":"callBytes","type":"bytes"},{"internalType":"bool","name":"callType","type":"bool"}],"name":"autoExecute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool[]","name":"callType","type":"bool[]"},{"internalType":"bytes[]","name":"callBytes","type":"bytes[]"},{"internalType":"bool[]","name":"isNeedCallback","type":"bool[]"}],"name":"autoExecuteMultiCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"subAccount","type":"address"},{"internalType":"bytes","name":"callArgs","type":"bytes"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"name":"autoExecuteOnSubAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes","name":"callBytes","type":"bytes"},{"internalType":"bool","name":"callType","type":"bool"},{"internalType":"bytes32","name":"approvalType","type":"bytes32"},{"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":"autoExecuteWithPermit","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"customizedLoanProviders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"doFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"subAccount","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"doFlashLoanOnSubAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getLoanProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"loanProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"customizedLoanProvider","type":"address"}],"name":"setLoanProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenApprovalVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"verifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b5060405162001f0c38038062001f0c83398101604081905262000034916200006f565b6001600160a01b0392831660805290821660a0521660c052620000b9565b80516001600160a01b03811681146200006a57600080fd5b919050565b6000806000606084860312156200008557600080fd5b620000908462000052565b9250620000a06020850162000052565b9150620000b06040850162000052565b90509250925092565b60805160a05160c051611df962000113600039600081816101b701526105d10152600081816101f101528181610c1301526110de0152600081816101320152818161041d01528181610dae0152610edc0152611df96000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639c7a4b8a1161008c578063b9793cb711610066578063b9793cb714610226578063c930f63414610239578063d50f6d5e1461026f578063f811bcdb1461028257600080fd5b80639c7a4b8a146101d9578063a2ce2634146101ec578063afdeedc41461021357600080fd5b806368e1f512116100c857806368e1f512146101795780637b67a87a1461018c5780638d1708241461019f57806393ff268d146101b257600080fd5b806306d025f5146100ef5780630b952b5a146101045780632b7ac3f31461012d575b600080fd5b6101026100fd36600461118b565b610295565b005b610117610112366004611228565b6103aa565b6040516101249190611317565b60405180910390f35b6101547f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b610102610187366004611510565b610495565b61015461019a3660046115ab565b610573565b6101026101ad3660046115c8565b6105f7565b6101547f000000000000000000000000000000000000000000000000000000000000000081565b6101176101e7366004611619565b61066f565b6101547f000000000000000000000000000000000000000000000000000000000000000081565b610102610221366004611681565b610686565b6101026102343660046116ee565b61081f565b6101546102473660046115ab565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61010261027d366004611773565b6109c2565b61010261029036600461186b565b610b53565b6102a0856001610d5c565b600080806102b084860186611969565b925092509250815183511480156102c8575080518251145b6102d157600080fd5b60005b825181101561031257610300898483815181106102f3576102f36119f1565b6020026020010151610e84565b8061030a81611a20565b9150506102d4565b5061031c88610573565b73ffffffffffffffffffffffffffffffffffffffff16635cffe9de89898989896040518663ffffffff1660e01b815260040161035c959493929190611aaa565b6020604051808303816000875af115801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190611af5565b505050505050505050565b6040517f3dba5ba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152336024830152604482018790526064820186905260ff8516608483015260a4820184905260c482018390526060917f000000000000000000000000000000000000000000000000000000000000000090911690633dba5ba89060e401600060405180830381600087803b15801561046357600080fd5b505af1158015610477573d6000803e3d6000fd5b505050506104878a8a8a8a610fb2565b9a9950505050505050505050565b815183511480156104a7575080518251145b6104b057600080fd5b60005b83518110156104e4576104d2858483815181106102f3576102f36119f1565b806104dc81611a20565b9150506104b3565b506040517f405f301d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063405f301d9061053b90869086908690600401611b4f565b600060405180830381600087803b15801561055557600080fd5b505af1158015610569573d6000803e3d6000fd5b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260208190526040812054909116156105cf5773ffffffffffffffffffffffffffffffffffffffff808316600090815260208190526040902054166105f1565b7f00000000000000000000000000000000000000000000000000000000000000005b92915050565b610602846000610d5c565b61060c8483611091565b6040517fe1f21c6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905285169063e1f21c679060640161053b565b606061067d85858585610fb2565b95945050505050565b610691856002610d5c565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107179190611bc6565b73ffffffffffffffffffffffffffffffffffffffff1614610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206163636f756e74210000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fb1ad373400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063b1ad3734906107f1908790879087908790600401611be3565b600060405180830381600087803b15801561080b57600080fd5b505af115801561039f573d6000803e3d6000fd5b61082a866003610d5c565b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190611bc6565b73ffffffffffffffffffffffffffffffffffffffff161461092d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206163636f756e7421000000000000000000000000000000006044820152606401610790565b61093686610573565b73ffffffffffffffffffffffffffffffffffffffff16635cffe9de86868686866040518663ffffffff1660e01b8152600401610976959493929190611aaa565b6020604051808303816000875af1158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190611af5565b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190611bc6565b73ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f776e657220636865636b206661696c65642e000000000000000000000000006044820152606401610790565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152602081815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905581519283528201929092527f76f59fb098883bf4a9377fa57ff4eeccbfa0210ff0dd009b0c9c2b52ff682858910160405180910390a15050565b87518951148015610b65575086518851145b610bcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f617070726f7665206c656e677468206572726f722e00000000000000000000006044820152606401610790565b610bd68a6000610d5c565b6040517fb065048300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b065048390610c54908d908a908a908a908a908a908a90600401611c6a565b600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b5050505060005b8851811015610cc757610cb58b8a8381518110610ca857610ca86119f1565b6020026020010151611091565b80610cbf81611a20565b915050610c89565b506040517f887d379700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b169063887d379790610d1e908c908c908c90600401611cc6565b600060405180830381600087803b158015610d3857600080fd5b505af1158015610d4c573d6000803e3d6000fd5b5050505050505050505050505050565b6040517ff32cb1e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152336024830152604482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f32cb1e7906064015b602060405180830381865afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a9190611af5565b610e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f64656e69656400000000000000000000000000000000000000000000000000006044820152606401610790565b5050565b60208101516040517fa58666d300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015233602483015280831660448301527f0000000000000000000000000000000000000000000000000000000000000000169063a58666d390606401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f479190611af5565b610fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f64656e69656400000000000000000000000000000000000000000000000000006044820152606401610790565b505050565b6060610ff48585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e8492505050565b6040517f95bb2d8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906395bb2d869061104a90879087908790600401611d2f565b6000604051808303816000875af1158015611069573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067d9190810190611d55565b6040517fb6b3527200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063b6b3527290604401610dd9565b73ffffffffffffffffffffffffffffffffffffffff8116811461112f57600080fd5b50565b803561113d8161110d565b919050565b60008083601f84011261115457600080fd5b50813567ffffffffffffffff81111561116c57600080fd5b60208301915083602082850101111561118457600080fd5b9250929050565b6000806000806000608086880312156111a357600080fd5b85356111ae8161110d565b945060208601356111be8161110d565b935060408601359250606086013567ffffffffffffffff8111156111e157600080fd5b6111ed88828901611142565b969995985093965092949392505050565b801515811461112f57600080fd5b803561113d816111fe565b803560ff8116811461113d57600080fd5b60008060008060008060008060006101008a8c03121561124757600080fd5b89356112528161110d565b985060208a013567ffffffffffffffff81111561126e57600080fd5b61127a8c828d01611142565b90995097505060408a013561128e816111fe565b955060608a0135945060808a013593506112aa60a08b01611217565b925060c08a0135915060e08a013590509295985092959850929598565b60005b838110156112e25781810151838201526020016112ca565b50506000910152565b600081518084526113038160208601602086016112c7565b601f01601f19169290920160200192915050565b60208152600061132a60208301846112eb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561138957611389611331565b604052919050565b600067ffffffffffffffff8211156113ab576113ab611331565b5060051b60200190565b600082601f8301126113c657600080fd5b813560206113db6113d683611391565b611360565b82815260059290921b840181019181810190868411156113fa57600080fd5b8286015b8481101561141e578035611411816111fe565b83529183019183016113fe565b509695505050505050565b600067ffffffffffffffff82111561144357611443611331565b50601f01601f191660200190565b600082601f83011261146257600080fd5b813560206114726113d683611391565b82815260059290921b8401810191818101908684111561149157600080fd5b8286015b8481101561141e57803567ffffffffffffffff8111156114b55760008081fd5b8701603f810189136114c75760008081fd5b8481013560406114d96113d683611429565b8281528b828486010111156114ee5760008081fd5b8282850189830137600092810188019290925250845250918301918301611495565b6000806000806080858703121561152657600080fd5b84356115318161110d565b9350602085013567ffffffffffffffff8082111561154e57600080fd5b61155a888389016113b5565b9450604087013591508082111561157057600080fd5b61157c88838901611451565b9350606087013591508082111561159257600080fd5b5061159f878288016113b5565b91505092959194509250565b6000602082840312156115bd57600080fd5b813561132a8161110d565b600080600080608085870312156115de57600080fd5b84356115e98161110d565b935060208501356115f98161110d565b925060408501356116098161110d565b9396929550929360600135925050565b6000806000806060858703121561162f57600080fd5b843561163a8161110d565b9350602085013567ffffffffffffffff81111561165657600080fd5b61166287828801611142565b9094509250506040850135611676816111fe565b939692955090935050565b60008060008060006080868803121561169957600080fd5b85356116a48161110d565b945060208601356116b48161110d565b9350604086013567ffffffffffffffff8111156116d057600080fd5b6116dc88828901611142565b96999598509660600135949350505050565b60008060008060008060a0878903121561170757600080fd5b86356117128161110d565b955060208701356117228161110d565b945060408701356117328161110d565b935060608701359250608087013567ffffffffffffffff81111561175557600080fd5b61176189828a01611142565b979a9699509497509295939492505050565b6000806040838503121561178657600080fd5b82356117918161110d565b915060208301356117a18161110d565b809150509250929050565b600082601f8301126117bd57600080fd5b813560206117cd6113d683611391565b82815260059290921b840181019181810190868411156117ec57600080fd5b8286015b8481101561141e5780356118038161110d565b83529183019183016117f0565b600082601f83011261182157600080fd5b813560206118316113d683611391565b82815260059290921b8401810191818101908684111561185057600080fd5b8286015b8481101561141e5780358352918301918301611854565b6000806000806000806000806000806101408b8d03121561188b57600080fd5b6118948b611132565b995060208b013567ffffffffffffffff808211156118b157600080fd5b6118bd8e838f016117ac565b9a5060408d01359150808211156118d357600080fd5b6118df8e838f016117ac565b995060608d01359150808211156118f557600080fd5b6119018e838f01611810565b985060808d013591508082111561191757600080fd5b506119248d828e016117ac565b96505061193360a08c0161120c565b945060c08b0135935061194860e08c01611217565b92506101008b013591506101208b013590509295989b9194979a5092959850565b60008060006060848603121561197e57600080fd5b833567ffffffffffffffff8082111561199657600080fd5b6119a2878388016113b5565b945060208601359150808211156119b857600080fd5b6119c487838801611451565b935060408601359150808211156119da57600080fd5b506119e7868287016113b5565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a78577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152611aea608083018486611a7f565b979650505050505050565b600060208284031215611b0757600080fd5b815161132a816111fe565b600081518084526020808501945080840160005b83811015611b44578151151587529582019590820190600101611b26565b509495945050505050565b606081526000611b626060830186611b12565b6020838203818501528186518084528284019150828160051b85010183890160005b83811015611bb257601f19878403018552611ba08383516112eb565b94860194925090850190600101611b84565b505086810360408801526104878189611b12565b600060208284031215611bd857600080fd5b815161132a8161110d565b73ffffffffffffffffffffffffffffffffffffffff85168152606060208201526000611c13606083018587611a7f565b905082604083015295945050505050565b600081518084526020808501945080840160005b83811015611b4457815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611c38565b73ffffffffffffffffffffffffffffffffffffffff8816815260e060208201526000611c9960e0830189611c24565b961515604083015250606081019490945260ff92909216608084015260a083015260c09091015292915050565b606081526000611cd96060830186611c24565b602083820381850152611cec8287611c24565b8481036040860152855180825282870193509082019060005b81811015611d2157845183529383019391830191600101611d05565b509098975050505050505050565b604081526000611d43604083018587611a7f565b90508215156020830152949350505050565b600060208284031215611d6757600080fd5b815167ffffffffffffffff811115611d7e57600080fd5b8201601f81018413611d8f57600080fd5b8051611d9d6113d682611429565b818152856020838501011115611db257600080fd5b61067d8260208301602086016112c756fea264697066735822122018fe81e72b0f0fd95b1c090332c931c6640ced4cf64297291cc5f3c1cf24625564736f6c6343000811003300000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f000000000000000000000000b5ff7d0cdd29bfa19ca16cd955e7385be7e52ccf000000000000000000000000f1a5787c21a090d400eb6a78aecdadac07c3533e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639c7a4b8a1161008c578063b9793cb711610066578063b9793cb714610226578063c930f63414610239578063d50f6d5e1461026f578063f811bcdb1461028257600080fd5b80639c7a4b8a146101d9578063a2ce2634146101ec578063afdeedc41461021357600080fd5b806368e1f512116100c857806368e1f512146101795780637b67a87a1461018c5780638d1708241461019f57806393ff268d146101b257600080fd5b806306d025f5146100ef5780630b952b5a146101045780632b7ac3f31461012d575b600080fd5b6101026100fd36600461118b565b610295565b005b610117610112366004611228565b6103aa565b6040516101249190611317565b60405180910390f35b6101547f00000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b610102610187366004611510565b610495565b61015461019a3660046115ab565b610573565b6101026101ad3660046115c8565b6105f7565b6101547f000000000000000000000000f1a5787c21a090d400eb6a78aecdadac07c3533e81565b6101176101e7366004611619565b61066f565b6101547f000000000000000000000000b5ff7d0cdd29bfa19ca16cd955e7385be7e52ccf81565b610102610221366004611681565b610686565b6101026102343660046116ee565b61081f565b6101546102473660046115ab565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61010261027d366004611773565b6109c2565b61010261029036600461186b565b610b53565b6102a0856001610d5c565b600080806102b084860186611969565b925092509250815183511480156102c8575080518251145b6102d157600080fd5b60005b825181101561031257610300898483815181106102f3576102f36119f1565b6020026020010151610e84565b8061030a81611a20565b9150506102d4565b5061031c88610573565b73ffffffffffffffffffffffffffffffffffffffff16635cffe9de89898989896040518663ffffffff1660e01b815260040161035c959493929190611aaa565b6020604051808303816000875af115801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190611af5565b505050505050505050565b6040517f3dba5ba800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152336024830152604482018790526064820186905260ff8516608483015260a4820184905260c482018390526060917f00000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f90911690633dba5ba89060e401600060405180830381600087803b15801561046357600080fd5b505af1158015610477573d6000803e3d6000fd5b505050506104878a8a8a8a610fb2565b9a9950505050505050505050565b815183511480156104a7575080518251145b6104b057600080fd5b60005b83518110156104e4576104d2858483815181106102f3576102f36119f1565b806104dc81611a20565b9150506104b3565b506040517f405f301d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063405f301d9061053b90869086908690600401611b4f565b600060405180830381600087803b15801561055557600080fd5b505af1158015610569573d6000803e3d6000fd5b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff818116600090815260208190526040812054909116156105cf5773ffffffffffffffffffffffffffffffffffffffff808316600090815260208190526040902054166105f1565b7f000000000000000000000000f1a5787c21a090d400eb6a78aecdadac07c3533e5b92915050565b610602846000610d5c565b61060c8483611091565b6040517fe1f21c6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905285169063e1f21c679060640161053b565b606061067d85858585610fb2565b95945050505050565b610691856002610d5c565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107179190611bc6565b73ffffffffffffffffffffffffffffffffffffffff1614610799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206163636f756e74210000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fb1ad373400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063b1ad3734906107f1908790879087908790600401611be3565b600060405180830381600087803b15801561080b57600080fd5b505af115801561039f573d6000803e3d6000fd5b61082a866003610d5c565b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190611bc6565b73ffffffffffffffffffffffffffffffffffffffff161461092d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c6964206163636f756e7421000000000000000000000000000000006044820152606401610790565b61093686610573565b73ffffffffffffffffffffffffffffffffffffffff16635cffe9de86868686866040518663ffffffff1660e01b8152600401610976959493929190611aaa565b6020604051808303816000875af1158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190611af5565b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190611bc6565b73ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f776e657220636865636b206661696c65642e000000000000000000000000006044820152606401610790565b73ffffffffffffffffffffffffffffffffffffffff8281166000818152602081815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905581519283528201929092527f76f59fb098883bf4a9377fa57ff4eeccbfa0210ff0dd009b0c9c2b52ff682858910160405180910390a15050565b87518951148015610b65575086518851145b610bcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f617070726f7665206c656e677468206572726f722e00000000000000000000006044820152606401610790565b610bd68a6000610d5c565b6040517fb065048300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000b5ff7d0cdd29bfa19ca16cd955e7385be7e52ccf169063b065048390610c54908d908a908a908a908a908a908a90600401611c6a565b600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b5050505060005b8851811015610cc757610cb58b8a8381518110610ca857610ca86119f1565b6020026020010151611091565b80610cbf81611a20565b915050610c89565b506040517f887d379700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b169063887d379790610d1e908c908c908c90600401611cc6565b600060405180830381600087803b158015610d3857600080fd5b505af1158015610d4c573d6000803e3d6000fd5b5050505050505050505050505050565b6040517ff32cb1e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152336024830152604482018390527f00000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f169063f32cb1e7906064015b602060405180830381865afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a9190611af5565b610e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f64656e69656400000000000000000000000000000000000000000000000000006044820152606401610790565b5050565b60208101516040517fa58666d300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015233602483015280831660448301527f00000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f169063a58666d390606401602060405180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f479190611af5565b610fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f64656e69656400000000000000000000000000000000000000000000000000006044820152606401610790565b505050565b6060610ff48585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e8492505050565b6040517f95bb2d8600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906395bb2d869061104a90879087908790600401611d2f565b6000604051808303816000875af1158015611069573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261067d9190810190611d55565b6040517fb6b3527200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301527f000000000000000000000000b5ff7d0cdd29bfa19ca16cd955e7385be7e52ccf169063b6b3527290604401610dd9565b73ffffffffffffffffffffffffffffffffffffffff8116811461112f57600080fd5b50565b803561113d8161110d565b919050565b60008083601f84011261115457600080fd5b50813567ffffffffffffffff81111561116c57600080fd5b60208301915083602082850101111561118457600080fd5b9250929050565b6000806000806000608086880312156111a357600080fd5b85356111ae8161110d565b945060208601356111be8161110d565b935060408601359250606086013567ffffffffffffffff8111156111e157600080fd5b6111ed88828901611142565b969995985093965092949392505050565b801515811461112f57600080fd5b803561113d816111fe565b803560ff8116811461113d57600080fd5b60008060008060008060008060006101008a8c03121561124757600080fd5b89356112528161110d565b985060208a013567ffffffffffffffff81111561126e57600080fd5b61127a8c828d01611142565b90995097505060408a013561128e816111fe565b955060608a0135945060808a013593506112aa60a08b01611217565b925060c08a0135915060e08a013590509295985092959850929598565b60005b838110156112e25781810151838201526020016112ca565b50506000910152565b600081518084526113038160208601602086016112c7565b601f01601f19169290920160200192915050565b60208152600061132a60208301846112eb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561138957611389611331565b604052919050565b600067ffffffffffffffff8211156113ab576113ab611331565b5060051b60200190565b600082601f8301126113c657600080fd5b813560206113db6113d683611391565b611360565b82815260059290921b840181019181810190868411156113fa57600080fd5b8286015b8481101561141e578035611411816111fe565b83529183019183016113fe565b509695505050505050565b600067ffffffffffffffff82111561144357611443611331565b50601f01601f191660200190565b600082601f83011261146257600080fd5b813560206114726113d683611391565b82815260059290921b8401810191818101908684111561149157600080fd5b8286015b8481101561141e57803567ffffffffffffffff8111156114b55760008081fd5b8701603f810189136114c75760008081fd5b8481013560406114d96113d683611429565b8281528b828486010111156114ee5760008081fd5b8282850189830137600092810188019290925250845250918301918301611495565b6000806000806080858703121561152657600080fd5b84356115318161110d565b9350602085013567ffffffffffffffff8082111561154e57600080fd5b61155a888389016113b5565b9450604087013591508082111561157057600080fd5b61157c88838901611451565b9350606087013591508082111561159257600080fd5b5061159f878288016113b5565b91505092959194509250565b6000602082840312156115bd57600080fd5b813561132a8161110d565b600080600080608085870312156115de57600080fd5b84356115e98161110d565b935060208501356115f98161110d565b925060408501356116098161110d565b9396929550929360600135925050565b6000806000806060858703121561162f57600080fd5b843561163a8161110d565b9350602085013567ffffffffffffffff81111561165657600080fd5b61166287828801611142565b9094509250506040850135611676816111fe565b939692955090935050565b60008060008060006080868803121561169957600080fd5b85356116a48161110d565b945060208601356116b48161110d565b9350604086013567ffffffffffffffff8111156116d057600080fd5b6116dc88828901611142565b96999598509660600135949350505050565b60008060008060008060a0878903121561170757600080fd5b86356117128161110d565b955060208701356117228161110d565b945060408701356117328161110d565b935060608701359250608087013567ffffffffffffffff81111561175557600080fd5b61176189828a01611142565b979a9699509497509295939492505050565b6000806040838503121561178657600080fd5b82356117918161110d565b915060208301356117a18161110d565b809150509250929050565b600082601f8301126117bd57600080fd5b813560206117cd6113d683611391565b82815260059290921b840181019181810190868411156117ec57600080fd5b8286015b8481101561141e5780356118038161110d565b83529183019183016117f0565b600082601f83011261182157600080fd5b813560206118316113d683611391565b82815260059290921b8401810191818101908684111561185057600080fd5b8286015b8481101561141e5780358352918301918301611854565b6000806000806000806000806000806101408b8d03121561188b57600080fd5b6118948b611132565b995060208b013567ffffffffffffffff808211156118b157600080fd5b6118bd8e838f016117ac565b9a5060408d01359150808211156118d357600080fd5b6118df8e838f016117ac565b995060608d01359150808211156118f557600080fd5b6119018e838f01611810565b985060808d013591508082111561191757600080fd5b506119248d828e016117ac565b96505061193360a08c0161120c565b945060c08b0135935061194860e08c01611217565b92506101008b013591506101208b013590509295989b9194979a5092959850565b60008060006060848603121561197e57600080fd5b833567ffffffffffffffff8082111561199657600080fd5b6119a2878388016113b5565b945060208601359150808211156119b857600080fd5b6119c487838801611451565b935060408601359150808211156119da57600080fd5b506119e7868287016113b5565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a78577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152611aea608083018486611a7f565b979650505050505050565b600060208284031215611b0757600080fd5b815161132a816111fe565b600081518084526020808501945080840160005b83811015611b44578151151587529582019590820190600101611b26565b509495945050505050565b606081526000611b626060830186611b12565b6020838203818501528186518084528284019150828160051b85010183890160005b83811015611bb257601f19878403018552611ba08383516112eb565b94860194925090850190600101611b84565b505086810360408801526104878189611b12565b600060208284031215611bd857600080fd5b815161132a8161110d565b73ffffffffffffffffffffffffffffffffffffffff85168152606060208201526000611c13606083018587611a7f565b905082604083015295945050505050565b600081518084526020808501945080840160005b83811015611b4457815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611c38565b73ffffffffffffffffffffffffffffffffffffffff8816815260e060208201526000611c9960e0830189611c24565b961515604083015250606081019490945260ff92909216608084015260a083015260c09091015292915050565b606081526000611cd96060830186611c24565b602083820381850152611cec8287611c24565b8481036040860152855180825282870193509082019060005b81811015611d2157845183529383019391830191600101611d05565b509098975050505050505050565b604081526000611d43604083018587611a7f565b90508215156020830152949350505050565b600060208284031215611d6757600080fd5b815167ffffffffffffffff811115611d7e57600080fd5b8201601f81018413611d8f57600080fd5b8051611d9d6113d682611429565b818152856020838501011115611db257600080fd5b61067d8260208301602086016112c756fea264697066735822122018fe81e72b0f0fd95b1c090332c931c6640ced4cf64297291cc5f3c1cf24625564736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f000000000000000000000000b5ff7d0cdd29bfa19ca16cd955e7385be7e52ccf000000000000000000000000f1a5787c21a090d400eb6a78aecdadac07c3533e
-----Decoded View---------------
Arg [0] : _verifier (address): 0x25440d9E199974e705a07DF6F2464291D0ba1e2f
Arg [1] : _tokenApprovalVerifier (address): 0xB5fF7d0Cdd29BFa19CA16cd955E7385BE7E52CCf
Arg [2] : _loanProvider (address): 0xF1A5787c21A090D400eb6A78AEcdadaC07C3533e
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000025440d9e199974e705a07df6f2464291d0ba1e2f
Arg [1] : 000000000000000000000000b5ff7d0cdd29bfa19ca16cd955e7385be7e52ccf
Arg [2] : 000000000000000000000000f1a5787c21a090d400eb6a78aecdadac07c3533e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
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.