Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
Latest 10 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
18596312 | 391 days ago | 3.17343625 ETH | ||||
18596312 | 391 days ago | 1.0655 ETH | ||||
18565341 | 396 days ago | 0.29748 ETH | ||||
18558133 | 397 days ago | 0.28927525 ETH | ||||
18558133 | 397 days ago | 0.28927525 ETH | ||||
18552132 | 398 days ago | 0.23125 ETH | ||||
18539641 | 399 days ago | 0.61272 ETH | ||||
18536067 | 400 days ago | 0.38793575 ETH | ||||
15356460 | 849 days ago | 14.25 ETH | ||||
15356460 | 849 days ago | 14.25 ETH |
Loading...
Loading
Contract Name:
PartnerVault
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol"; import "@openzeppelin/contracts/interfaces/IERC1271.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; interface IWrappedEther { function deposit() external payable; function withdraw(uint wad) external; function balanceOf(address account) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); } interface IVaultManager { function close(uint256 tokenId) external payable; } interface IOpenSeaProxy { function registerProxy() external returns (address); } contract PartnerVault is Ownable, ERC721Holder, IERC1271 { using ECDSA for bytes32; address immutable public tokenContract; IWrappedEther immutable public wrappedEther; IVaultManager immutable public vaultManager; IERC20 immutable public landDao; uint256 public tokenId; address public openSeaExchange; address public openSeaConduit; address public updateManager; mapping(address => mapping(uint256 => address)) public updateOperator; event UpdateOperatorSet(address, uint256, address); modifier onlyOwnerOrManager() { require(owner() == msg.sender || address(vaultManager) == msg.sender, "Vault: caller is not the owner or manager"); _; } modifier onlyUpdateManager() { require(updateManager == msg.sender, "Vault: caller is not the update manager"); _; } constructor( address vaultManager_, address tokenContract_, address wrappedEther_, address landDao_, address openSeaExchange_, address openSeaConduit_ ) { vaultManager = IVaultManager(vaultManager_); tokenContract = tokenContract_; wrappedEther = IWrappedEther(wrappedEther_); landDao = IERC20(landDao_); openSeaExchange = openSeaExchange_; openSeaConduit = openSeaConduit_; } function setUpdateManager(address updateManager_) external onlyOwner { require(updateManager_ != address(0)); updateManager = updateManager_; } function setUpdateOperator(uint256 assetId, address operator) external onlyUpdateManager { updateOperator[tokenContract][assetId] = operator; emit UpdateOperatorSet(tokenContract, assetId, operator); } function updateOpenSeaData(address openSeaExchange_, address openSeaConduit_) external onlyOwner { openSeaExchange = openSeaExchange_; openSeaConduit = openSeaConduit_; } function prepareOpenSea() public onlyOwnerOrManager { IERC721(tokenContract).setApprovalForAll(openSeaConduit, true); require(wrappedEther.approve(openSeaConduit, type(uint).max), "Vault: error approving WETH"); } function exchangeOpenSea(bytes calldata _calldata, uint256 value) external onlyOwner { (bool _success,) = openSeaExchange.call{value : value}(_calldata); require(_success, "Vault: error sending data to exchange"); } receive() external payable { } function start(uint256 tokenId_) external payable { require(tokenId_ > 0, "Vault: tokenId can not be 0"); require(tokenId == 0, "Vault: tokenId is already set"); require(msg.value > 0, "Vault: can not be started without funds"); require(msg.sender == address(vaultManager), "Vault: manager should start"); tokenId = tokenId_; wrap(); prepareOpenSea(); } function wrap() public onlyOwnerOrManager { wrappedEther.deposit{value : address(this).balance}(); } function unWrap() public onlyOwnerOrManager { uint256 balance = wrappedEther.balanceOf(address(this)); if (balance > 0) { wrappedEther.withdraw(balance); } } function finish() external onlyOwnerOrManager { require(tokenId > 0, "Vault: tokenId not set"); require(IERC721(tokenContract).balanceOf(address(this)) == 0, "Vault: not all tokens sold"); unWrap(); vaultManager.close{value : address(this).balance}(tokenId); } function isValidSignature(bytes32 _hash, bytes calldata _signature) external override view returns (bytes4) { address signer = _hash.recover(_signature); if (signer == owner()) { return 0x1626ba7e; } return 0x00000000; } function distributeRewards(address account, uint256 balance, uint256 totalSupply) external { require(msg.sender == address(vaultManager)); uint256 landBalance = landDao.balanceOf(address(this)); if (landBalance > 0) { uint256 rewards = (landBalance * balance) / totalSupply; landDao.transfer(account, rewards); } } }
// 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 (last updated v4.5.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.0; import "../Strings.sol"; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Message, created from `s`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/utils/ERC721Holder.sol) pragma solidity ^0.8.0; import "../IERC721Receiver.sol"; /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC1271 standard signature validation method for * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. * * _Available since v4.1._ */ interface IERC1271 { /** * @dev Should return whether the signature provided is valid for the provided data * @param hash Hash of the data to be signed * @param signature Signature byte array associated with _data */ function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// 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 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": false, "runs": 200 }, "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":"vaultManager_","type":"address"},{"internalType":"address","name":"tokenContract_","type":"address"},{"internalType":"address","name":"wrappedEther_","type":"address"},{"internalType":"address","name":"landDao_","type":"address"},{"internalType":"address","name":"openSeaExchange_","type":"address"},{"internalType":"address","name":"openSeaConduit_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"UpdateOperatorSet","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"distributeRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_calldata","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"exchangeOpenSea","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finish","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"landDao","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openSeaConduit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openSeaExchange","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prepareOpenSea","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updateManager_","type":"address"}],"name":"setUpdateManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"}],"name":"setUpdateOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"start","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unWrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"openSeaExchange_","type":"address"},{"internalType":"address","name":"openSeaConduit_","type":"address"}],"name":"updateOpenSeaData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"updateOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultManager","outputs":[{"internalType":"contract IVaultManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrappedEther","outputs":[{"internalType":"contract IWrappedEther","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6101006040523480156200001257600080fd5b50604051620035d3380380620035d38339818101604052810190620000389190620002a5565b620000586200004c620001c260201b60201c565b620001ca60201b60201c565b8573ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b8152505081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000389565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200029f816200036f565b92915050565b60008060008060008060c08789031215620002bf57600080fd5b6000620002cf89828a016200028e565b9650506020620002e289828a016200028e565b9550506040620002f589828a016200028e565b94505060606200030889828a016200028e565b93505060806200031b89828a016200028e565b92505060a06200032e89828a016200028e565b9150509295509295509295565b600062000348826200034f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200037a816200033b565b81146200038657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c61318d6200044660003960008181610de501528181610eb4015261189a01526000818161068a01528181610b8101528181610d3e01528181610d8b015281816110770152818161150c0152818161165a015261180a015260008181610542015281816107b201528181610bfb01528181610caf015261158401526000818161070201528181610a5c015281816112b6015281816113810152611719015261318d6000f3fe60806040526004361061014f5760003560e01c80638a4adf24116100b6578063b0b02c601161006f578063b0b02c6014610446578063c372ca151461046f578063d46eb11914610498578063d56b2889146104af578063da67919b146104c6578063f2fde38b146104f157610156565b80638a4adf24146103455780638da5cb5b146103705780638dc3ec4d1461039b578063904fc26b146103c457806395805dad146104015780639dc553f11461041d57610156565b806323410a3c1161010857806323410a3c1461026d57806343fa7c121461029857806355a373d6146102c1578063715018a6146102ec5780637455953314610303578063824d9f121461032e57610156565b806307a85e281461015b57806314671a2914610186578063150b7a02146101b15780631626ba7e146101ee57806317d70f7c1461022b5780631baa6b661461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061051a565b60405161017d91906126c9565b60405180910390f35b34801561019257600080fd5b5061019b610540565b6040516101a89190612803565b60405180910390f35b3480156101bd57600080fd5b506101d860048036038101906101d39190612167565b610564565b6040516101e591906127b2565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612296565b610578565b60405161022291906127b2565b60405180910390f35b34801561023757600080fd5b5061024061062f565b60405161024d9190612a1e565b60405180910390f35b34801561026257600080fd5b5061026b610635565b005b34801561027957600080fd5b506102826108e0565b60405161028f91906126c9565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906122ee565b610906565b005b3480156102cd57600080fd5b506102d6610a5a565b6040516102e391906126c9565b60405180910390f35b3480156102f857600080fd5b50610301610a7e565b005b34801561030f57600080fd5b50610318610b06565b60405161032591906126c9565b60405180910390f35b34801561033a57600080fd5b50610343610b2c565b005b34801561035157600080fd5b5061035a610d3c565b60405161036791906127e8565b60405180910390f35b34801561037c57600080fd5b50610385610d60565b60405161039291906126c9565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd919061221e565b610d89565b005b3480156103d057600080fd5b506103eb60048036038101906103e691906121e2565b610f68565b6040516103f891906126c9565b60405180910390f35b61041b60048036038101906104169190612346565b610faa565b005b34801561042957600080fd5b50610444600480360381019061043f919061212b565b61111d565b005b34801561045257600080fd5b5061046d60048036038101906104689190612398565b61121f565b005b34801561047b57600080fd5b5061049660048036038101906104919190612102565b6113bd565b005b3480156104a457600080fd5b506104ad6114b7565b005b3480156104bb57600080fd5b506104c4611605565b005b3480156104d257600080fd5b506104db611898565b6040516104e891906127cd565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612102565b6118bc565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600063150b7a0260e01b9050949350505050565b6000806105d284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050866119b490919063ffffffff16565b90506105dc610d60565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561061f57631626ba7e60e01b915050610628565b600060e01b9150505b9392505050565b60015481565b3373ffffffffffffffffffffffffffffffffffffffff16610654610d60565b73ffffffffffffffffffffffffffffffffffffffff1614806106c157503373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f7906128fe565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a22cb465600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b815260040161077e9291906126e4565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161084d92919061270d565b602060405180830381600087803b15801561086757600080fd5b505af115801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061226d565b6108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d5906129de565b60405180910390fd5b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61090e6119db565b73ffffffffffffffffffffffffffffffffffffffff1661092c610d60565b73ffffffffffffffffffffffffffffffffffffffff1614610982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610979906129be565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168285856040516109ce9291906126b0565b60006040518083038185875af1925050503d8060008114610a0b576040519150601f19603f3d011682016040523d82523d6000602084013e610a10565b606091505b5050905080610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b9061291e565b60405180910390fd5b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a866119db565b73ffffffffffffffffffffffffffffffffffffffff16610aa4610d60565b73ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af1906129be565b60405180910390fd5b610b0460006119e3565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610b4b610d60565b73ffffffffffffffffffffffffffffffffffffffff161480610bb857503373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee906128fe565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5291906126c9565b60206040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca2919061236f565b90506000811115610d39577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610d069190612a1e565b600060405180830381600087803b158015610d2057600080fd5b505af1158015610d34573d6000803e3d6000fd5b505050505b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de157600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3c91906126c9565b60206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c919061236f565b90506000811115610f62576000828483610ea69190612b32565b610eb09190612b01565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b8152600401610f0d92919061270d565b602060405180830381600087803b158015610f2757600080fd5b505af1158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f919061226d565b50505b50505050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008111610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906129fe565b60405180910390fd5b600060015414611032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110299061283e565b60405180910390fd5b60003411611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c9061297e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061295e565b60405180910390fd5b806001819055506111126114b7565b61111a610635565b50565b6111256119db565b73ffffffffffffffffffffffffffffffffffffffff16611143610d60565b73ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190906129be565b60405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a69061285e565b60405180910390fd5b80600560007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5e3069ee84fd99170274b240e48cb739b5760a5bce05ad222e822b235db1c7807f000000000000000000000000000000000000000000000000000000000000000083836040516113b193929190612736565b60405180910390a15050565b6113c56119db565b73ffffffffffffffffffffffffffffffffffffffff166113e3610d60565b73ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906129be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561147357600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff166114d6610d60565b73ffffffffffffffffffffffffffffffffffffffff16148061154357503373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579906128fe565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115ea57600080fd5b505af11580156115fe573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16611624610d60565b73ffffffffffffffffffffffffffffffffffffffff16148061169157503373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16145b6116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c7906128fe565b60405180910390fd5b600060015411611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c906128be565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161177091906126c9565b60206040518083038186803b15801561178857600080fd5b505afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c0919061236f565b14611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906128de565b60405180910390fd5b611808610b2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630aebeb4e476001546040518363ffffffff1660e01b81526004016118649190612a1e565b6000604051808303818588803b15801561187d57600080fd5b505af1158015611891573d6000803e3d6000fd5b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6118c46119db565b73ffffffffffffffffffffffffffffffffffffffff166118e2610d60565b73ffffffffffffffffffffffffffffffffffffffff1614611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f906129be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f9061289e565b60405180910390fd5b6119b1816119e3565b50565b60008060006119c38585611aa7565b915091506119d081611b2a565b819250505092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080604183511415611ae95760008060006020860151925060408601519150606086015160001a9050611add87828585611e7b565b94509450505050611b23565b604083511415611b1a576000806020850151915060408501519050611b0f868383611f88565b935093505050611b23565b60006002915091505b9250929050565b60006004811115611b64577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611b9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611ba857611e78565b60016004811115611be2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611c1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c539061281e565b60405180910390fd5b60026004811115611c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611ccf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d079061287e565b60405180910390fd5b60036004811115611d4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611d83577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061293e565b60405180910390fd5b600480811115611dfd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611e36577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6e9061299e565b60405180910390fd5b5b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115611eb6576000600391509150611f7f565b601b8560ff1614158015611ece5750601c8560ff1614155b15611ee0576000600491509150611f7f565b600060018787878760405160008152602001604052604051611f05949392919061276d565b6020604051602081039080840390855afa158015611f27573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f7657600060019250925050611f7f565b80600092509250505b94509492505050565b60008060007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b841690506000601b60ff8660001c901c611fcb9190612aab565b9050611fd987828885611e7b565b935093505050935093915050565b6000611ffa611ff584612a5e565b612a39565b90508281526020810184848401111561201257600080fd5b61201d848285612c83565b509392505050565b600081359050612034816130fb565b92915050565b60008151905061204981613112565b92915050565b60008135905061205e81613129565b92915050565b60008083601f84011261207657600080fd5b8235905067ffffffffffffffff81111561208f57600080fd5b6020830191508360018202830111156120a757600080fd5b9250929050565b600082601f8301126120bf57600080fd5b81356120cf848260208601611fe7565b91505092915050565b6000813590506120e781613140565b92915050565b6000815190506120fc81613140565b92915050565b60006020828403121561211457600080fd5b600061212284828501612025565b91505092915050565b6000806040838503121561213e57600080fd5b600061214c85828601612025565b925050602061215d85828601612025565b9150509250929050565b6000806000806080858703121561217d57600080fd5b600061218b87828801612025565b945050602061219c87828801612025565b93505060406121ad878288016120d8565b925050606085013567ffffffffffffffff8111156121ca57600080fd5b6121d6878288016120ae565b91505092959194509250565b600080604083850312156121f557600080fd5b600061220385828601612025565b9250506020612214858286016120d8565b9150509250929050565b60008060006060848603121561223357600080fd5b600061224186828701612025565b9350506020612252868287016120d8565b9250506040612263868287016120d8565b9150509250925092565b60006020828403121561227f57600080fd5b600061228d8482850161203a565b91505092915050565b6000806000604084860312156122ab57600080fd5b60006122b98682870161204f565b935050602084013567ffffffffffffffff8111156122d657600080fd5b6122e286828701612064565b92509250509250925092565b60008060006040848603121561230357600080fd5b600084013567ffffffffffffffff81111561231d57600080fd5b61232986828701612064565b9350935050602061233c868287016120d8565b9150509250925092565b60006020828403121561235857600080fd5b6000612366848285016120d8565b91505092915050565b60006020828403121561238157600080fd5b600061238f848285016120ed565b91505092915050565b600080604083850312156123ab57600080fd5b60006123b9858286016120d8565b92505060206123ca85828601612025565b9150509250929050565b6123dd81612b8c565b82525050565b6123ec81612b9e565b82525050565b6123fb81612baa565b82525050565b61240a81612bb4565b82525050565b600061241c8385612a8f565b9350612429838584612c83565b82840190509392505050565b61243e81612c17565b82525050565b61244d81612c3b565b82525050565b61245c81612c5f565b82525050565b600061246f601883612a9a565b915061247a82612d61565b602082019050919050565b6000612492601d83612a9a565b915061249d82612d8a565b602082019050919050565b60006124b5602783612a9a565b91506124c082612db3565b604082019050919050565b60006124d8601f83612a9a565b91506124e382612e02565b602082019050919050565b60006124fb602683612a9a565b915061250682612e2b565b604082019050919050565b600061251e601683612a9a565b915061252982612e7a565b602082019050919050565b6000612541601a83612a9a565b915061254c82612ea3565b602082019050919050565b6000612564602983612a9a565b915061256f82612ecc565b604082019050919050565b6000612587602583612a9a565b915061259282612f1b565b604082019050919050565b60006125aa602283612a9a565b91506125b582612f6a565b604082019050919050565b60006125cd601b83612a9a565b91506125d882612fb9565b602082019050919050565b60006125f0602783612a9a565b91506125fb82612fe2565b604082019050919050565b6000612613602283612a9a565b915061261e82613031565b604082019050919050565b6000612636602083612a9a565b915061264182613080565b602082019050919050565b6000612659601b83612a9a565b9150612664826130a9565b602082019050919050565b600061267c601b83612a9a565b9150612687826130d2565b602082019050919050565b61269b81612c00565b82525050565b6126aa81612c0a565b82525050565b60006126bd828486612410565b91508190509392505050565b60006020820190506126de60008301846123d4565b92915050565b60006040820190506126f960008301856123d4565b61270660208301846123e3565b9392505050565b600060408201905061272260008301856123d4565b61272f6020830184612692565b9392505050565b600060608201905061274b60008301866123d4565b6127586020830185612692565b61276560408301846123d4565b949350505050565b600060808201905061278260008301876123f2565b61278f60208301866126a1565b61279c60408301856123f2565b6127a960608301846123f2565b95945050505050565b60006020820190506127c76000830184612401565b92915050565b60006020820190506127e26000830184612435565b92915050565b60006020820190506127fd6000830184612444565b92915050565b60006020820190506128186000830184612453565b92915050565b6000602082019050818103600083015261283781612462565b9050919050565b6000602082019050818103600083015261285781612485565b9050919050565b60006020820190508181036000830152612877816124a8565b9050919050565b60006020820190508181036000830152612897816124cb565b9050919050565b600060208201905081810360008301526128b7816124ee565b9050919050565b600060208201905081810360008301526128d781612511565b9050919050565b600060208201905081810360008301526128f781612534565b9050919050565b6000602082019050818103600083015261291781612557565b9050919050565b600060208201905081810360008301526129378161257a565b9050919050565b600060208201905081810360008301526129578161259d565b9050919050565b60006020820190508181036000830152612977816125c0565b9050919050565b60006020820190508181036000830152612997816125e3565b9050919050565b600060208201905081810360008301526129b781612606565b9050919050565b600060208201905081810360008301526129d781612629565b9050919050565b600060208201905081810360008301526129f78161264c565b9050919050565b60006020820190508181036000830152612a178161266f565b9050919050565b6000602082019050612a336000830184612692565b92915050565b6000612a43612a54565b9050612a4f8282612c92565b919050565b6000604051905090565b600067ffffffffffffffff821115612a7957612a78612d21565b5b612a8282612d50565b9050602081019050919050565b600081905092915050565b600082825260208201905092915050565b6000612ab682612c00565b9150612ac183612c00565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612af657612af5612cc3565b5b828201905092915050565b6000612b0c82612c00565b9150612b1783612c00565b925082612b2757612b26612cf2565b5b828204905092915050565b6000612b3d82612c00565b9150612b4883612c00565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b8157612b80612cc3565b5b828202905092915050565b6000612b9782612be0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612c2282612c29565b9050919050565b6000612c3482612be0565b9050919050565b6000612c4682612c4d565b9050919050565b6000612c5882612be0565b9050919050565b6000612c6a82612c71565b9050919050565b6000612c7c82612be0565b9050919050565b82818337600083830152505050565b612c9b82612d50565b810181811067ffffffffffffffff82111715612cba57612cb9612d21565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f5661756c743a20746f6b656e496420697320616c726561647920736574000000600082015250565b7f5661756c743a2063616c6c6572206973206e6f7420746865207570646174652060008201527f6d616e6167657200000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a20746f6b656e4964206e6f742073657400000000000000000000600082015250565b7f5661756c743a206e6f7420616c6c20746f6b656e7320736f6c64000000000000600082015250565b7f5661756c743a2063616c6c6572206973206e6f7420746865206f776e6572206f60008201527f72206d616e616765720000000000000000000000000000000000000000000000602082015250565b7f5661756c743a206572726f722073656e64696e67206461746120746f2065786360008201527f68616e6765000000000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a206d616e616765722073686f756c642073746172740000000000600082015250565b7f5661756c743a2063616e206e6f74206265207374617274656420776974686f7560008201527f742066756e647300000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5661756c743a206572726f7220617070726f76696e6720574554480000000000600082015250565b7f5661756c743a20746f6b656e49642063616e206e6f7420626520300000000000600082015250565b61310481612b8c565b811461310f57600080fd5b50565b61311b81612b9e565b811461312657600080fd5b50565b61313281612baa565b811461313d57600080fd5b50565b61314981612c00565b811461315457600080fd5b5056fea2646970667358221220d468c79fc7abc98710b146a6e879d7d8b305cca5504623dfb6faf083765fc16464736f6c634300080400330000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d90000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000054aa569005332e4d6f91e27c55307aaef607c0e200000000000000000000000000000000006c3852cbef3e08e8df289169ede5810000000000000000000000001e0049783f008a0085193e00003d00cd54003c71
Deployed Bytecode
0x60806040526004361061014f5760003560e01c80638a4adf24116100b6578063b0b02c601161006f578063b0b02c6014610446578063c372ca151461046f578063d46eb11914610498578063d56b2889146104af578063da67919b146104c6578063f2fde38b146104f157610156565b80638a4adf24146103455780638da5cb5b146103705780638dc3ec4d1461039b578063904fc26b146103c457806395805dad146104015780639dc553f11461041d57610156565b806323410a3c1161010857806323410a3c1461026d57806343fa7c121461029857806355a373d6146102c1578063715018a6146102ec5780637455953314610303578063824d9f121461032e57610156565b806307a85e281461015b57806314671a2914610186578063150b7a02146101b15780631626ba7e146101ee57806317d70f7c1461022b5780631baa6b661461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061051a565b60405161017d91906126c9565b60405180910390f35b34801561019257600080fd5b5061019b610540565b6040516101a89190612803565b60405180910390f35b3480156101bd57600080fd5b506101d860048036038101906101d39190612167565b610564565b6040516101e591906127b2565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612296565b610578565b60405161022291906127b2565b60405180910390f35b34801561023757600080fd5b5061024061062f565b60405161024d9190612a1e565b60405180910390f35b34801561026257600080fd5b5061026b610635565b005b34801561027957600080fd5b506102826108e0565b60405161028f91906126c9565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906122ee565b610906565b005b3480156102cd57600080fd5b506102d6610a5a565b6040516102e391906126c9565b60405180910390f35b3480156102f857600080fd5b50610301610a7e565b005b34801561030f57600080fd5b50610318610b06565b60405161032591906126c9565b60405180910390f35b34801561033a57600080fd5b50610343610b2c565b005b34801561035157600080fd5b5061035a610d3c565b60405161036791906127e8565b60405180910390f35b34801561037c57600080fd5b50610385610d60565b60405161039291906126c9565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd919061221e565b610d89565b005b3480156103d057600080fd5b506103eb60048036038101906103e691906121e2565b610f68565b6040516103f891906126c9565b60405180910390f35b61041b60048036038101906104169190612346565b610faa565b005b34801561042957600080fd5b50610444600480360381019061043f919061212b565b61111d565b005b34801561045257600080fd5b5061046d60048036038101906104689190612398565b61121f565b005b34801561047b57600080fd5b5061049660048036038101906104919190612102565b6113bd565b005b3480156104a457600080fd5b506104ad6114b7565b005b3480156104bb57600080fd5b506104c4611605565b005b3480156104d257600080fd5b506104db611898565b6040516104e891906127cd565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612102565b6118bc565b005b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600063150b7a0260e01b9050949350505050565b6000806105d284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050866119b490919063ffffffff16565b90506105dc610d60565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561061f57631626ba7e60e01b915050610628565b600060e01b9150505b9392505050565b60015481565b3373ffffffffffffffffffffffffffffffffffffffff16610654610d60565b73ffffffffffffffffffffffffffffffffffffffff1614806106c157503373ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff16145b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f7906128fe565b60405180910390fd5b7f0000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c3873ffffffffffffffffffffffffffffffffffffffff1663a22cb465600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016040518363ffffffff1660e01b815260040161077e9291906126e4565b600060405180830381600087803b15801561079857600080fd5b505af11580156107ac573d6000803e3d6000fd5b505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161084d92919061270d565b602060405180830381600087803b15801561086757600080fd5b505af115801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f919061226d565b6108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d5906129de565b60405180910390fd5b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61090e6119db565b73ffffffffffffffffffffffffffffffffffffffff1661092c610d60565b73ffffffffffffffffffffffffffffffffffffffff1614610982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610979906129be565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168285856040516109ce9291906126b0565b60006040518083038185875af1925050503d8060008114610a0b576040519150601f19603f3d011682016040523d82523d6000602084013e610a10565b606091505b5050905080610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b9061291e565b60405180910390fd5b50505050565b7f0000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c3881565b610a866119db565b73ffffffffffffffffffffffffffffffffffffffff16610aa4610d60565b73ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af1906129be565b60405180910390fd5b610b0460006119e3565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16610b4b610d60565b73ffffffffffffffffffffffffffffffffffffffff161480610bb857503373ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff16145b610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee906128fe565b60405180910390fd5b60007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5291906126c9565b60206040518083038186803b158015610c6a57600080fd5b505afa158015610c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca2919061236f565b90506000811115610d39577f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610d069190612a1e565b600060405180830381600087803b158015610d2057600080fd5b505af1158015610d34573d6000803e3d6000fd5b505050505b50565b7f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d981565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de157600080fd5b60007f00000000000000000000000054aa569005332e4d6f91e27c55307aaef607c0e273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e3c91906126c9565b60206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c919061236f565b90506000811115610f62576000828483610ea69190612b32565b610eb09190612b01565b90507f00000000000000000000000054aa569005332e4d6f91e27c55307aaef607c0e273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86836040518363ffffffff1660e01b8152600401610f0d92919061270d565b602060405180830381600087803b158015610f2757600080fd5b505af1158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f919061226d565b50505b50505050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008111610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe4906129fe565b60405180910390fd5b600060015414611032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110299061283e565b60405180910390fd5b60003411611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106c9061297e565b60405180910390fd5b7f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa9061295e565b60405180910390fd5b806001819055506111126114b7565b61111a610635565b50565b6111256119db565b73ffffffffffffffffffffffffffffffffffffffff16611143610d60565b73ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190906129be565b60405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a69061285e565b60405180910390fd5b80600560007f0000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5e3069ee84fd99170274b240e48cb739b5760a5bce05ad222e822b235db1c7807f0000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c3883836040516113b193929190612736565b60405180910390a15050565b6113c56119db565b73ffffffffffffffffffffffffffffffffffffffff166113e3610d60565b73ffffffffffffffffffffffffffffffffffffffff1614611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906129be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561147357600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff166114d6610d60565b73ffffffffffffffffffffffffffffffffffffffff16148061154357503373ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff16145b611582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611579906128fe565b60405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115ea57600080fd5b505af11580156115fe573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff16611624610d60565b73ffffffffffffffffffffffffffffffffffffffff16148061169157503373ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff16145b6116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c7906128fe565b60405180910390fd5b600060015411611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c906128be565b60405180910390fd5b60007f0000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c3873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161177091906126c9565b60206040518083038186803b15801561178857600080fd5b505afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c0919061236f565b14611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f7906128de565b60405180910390fd5b611808610b2c565b7f0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d973ffffffffffffffffffffffffffffffffffffffff16630aebeb4e476001546040518363ffffffff1660e01b81526004016118649190612a1e565b6000604051808303818588803b15801561187d57600080fd5b505af1158015611891573d6000803e3d6000fd5b5050505050565b7f00000000000000000000000054aa569005332e4d6f91e27c55307aaef607c0e281565b6118c46119db565b73ffffffffffffffffffffffffffffffffffffffff166118e2610d60565b73ffffffffffffffffffffffffffffffffffffffff1614611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f906129be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f9061289e565b60405180910390fd5b6119b1816119e3565b50565b60008060006119c38585611aa7565b915091506119d081611b2a565b819250505092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080604183511415611ae95760008060006020860151925060408601519150606086015160001a9050611add87828585611e7b565b94509450505050611b23565b604083511415611b1a576000806020850151915060408501519050611b0f868383611f88565b935093505050611b23565b60006002915091505b9250929050565b60006004811115611b64577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611b9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611ba857611e78565b60016004811115611be2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611c1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c539061281e565b60405180910390fd5b60026004811115611c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611ccf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d079061287e565b60405180910390fd5b60036004811115611d4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611d83577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061293e565b60405180910390fd5b600480811115611dfd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115611e36577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415611e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6e9061299e565b60405180910390fd5b5b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115611eb6576000600391509150611f7f565b601b8560ff1614158015611ece5750601c8560ff1614155b15611ee0576000600491509150611f7f565b600060018787878760405160008152602001604052604051611f05949392919061276d565b6020604051602081039080840390855afa158015611f27573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f7657600060019250925050611f7f565b80600092509250505b94509492505050565b60008060007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b841690506000601b60ff8660001c901c611fcb9190612aab565b9050611fd987828885611e7b565b935093505050935093915050565b6000611ffa611ff584612a5e565b612a39565b90508281526020810184848401111561201257600080fd5b61201d848285612c83565b509392505050565b600081359050612034816130fb565b92915050565b60008151905061204981613112565b92915050565b60008135905061205e81613129565b92915050565b60008083601f84011261207657600080fd5b8235905067ffffffffffffffff81111561208f57600080fd5b6020830191508360018202830111156120a757600080fd5b9250929050565b600082601f8301126120bf57600080fd5b81356120cf848260208601611fe7565b91505092915050565b6000813590506120e781613140565b92915050565b6000815190506120fc81613140565b92915050565b60006020828403121561211457600080fd5b600061212284828501612025565b91505092915050565b6000806040838503121561213e57600080fd5b600061214c85828601612025565b925050602061215d85828601612025565b9150509250929050565b6000806000806080858703121561217d57600080fd5b600061218b87828801612025565b945050602061219c87828801612025565b93505060406121ad878288016120d8565b925050606085013567ffffffffffffffff8111156121ca57600080fd5b6121d6878288016120ae565b91505092959194509250565b600080604083850312156121f557600080fd5b600061220385828601612025565b9250506020612214858286016120d8565b9150509250929050565b60008060006060848603121561223357600080fd5b600061224186828701612025565b9350506020612252868287016120d8565b9250506040612263868287016120d8565b9150509250925092565b60006020828403121561227f57600080fd5b600061228d8482850161203a565b91505092915050565b6000806000604084860312156122ab57600080fd5b60006122b98682870161204f565b935050602084013567ffffffffffffffff8111156122d657600080fd5b6122e286828701612064565b92509250509250925092565b60008060006040848603121561230357600080fd5b600084013567ffffffffffffffff81111561231d57600080fd5b61232986828701612064565b9350935050602061233c868287016120d8565b9150509250925092565b60006020828403121561235857600080fd5b6000612366848285016120d8565b91505092915050565b60006020828403121561238157600080fd5b600061238f848285016120ed565b91505092915050565b600080604083850312156123ab57600080fd5b60006123b9858286016120d8565b92505060206123ca85828601612025565b9150509250929050565b6123dd81612b8c565b82525050565b6123ec81612b9e565b82525050565b6123fb81612baa565b82525050565b61240a81612bb4565b82525050565b600061241c8385612a8f565b9350612429838584612c83565b82840190509392505050565b61243e81612c17565b82525050565b61244d81612c3b565b82525050565b61245c81612c5f565b82525050565b600061246f601883612a9a565b915061247a82612d61565b602082019050919050565b6000612492601d83612a9a565b915061249d82612d8a565b602082019050919050565b60006124b5602783612a9a565b91506124c082612db3565b604082019050919050565b60006124d8601f83612a9a565b91506124e382612e02565b602082019050919050565b60006124fb602683612a9a565b915061250682612e2b565b604082019050919050565b600061251e601683612a9a565b915061252982612e7a565b602082019050919050565b6000612541601a83612a9a565b915061254c82612ea3565b602082019050919050565b6000612564602983612a9a565b915061256f82612ecc565b604082019050919050565b6000612587602583612a9a565b915061259282612f1b565b604082019050919050565b60006125aa602283612a9a565b91506125b582612f6a565b604082019050919050565b60006125cd601b83612a9a565b91506125d882612fb9565b602082019050919050565b60006125f0602783612a9a565b91506125fb82612fe2565b604082019050919050565b6000612613602283612a9a565b915061261e82613031565b604082019050919050565b6000612636602083612a9a565b915061264182613080565b602082019050919050565b6000612659601b83612a9a565b9150612664826130a9565b602082019050919050565b600061267c601b83612a9a565b9150612687826130d2565b602082019050919050565b61269b81612c00565b82525050565b6126aa81612c0a565b82525050565b60006126bd828486612410565b91508190509392505050565b60006020820190506126de60008301846123d4565b92915050565b60006040820190506126f960008301856123d4565b61270660208301846123e3565b9392505050565b600060408201905061272260008301856123d4565b61272f6020830184612692565b9392505050565b600060608201905061274b60008301866123d4565b6127586020830185612692565b61276560408301846123d4565b949350505050565b600060808201905061278260008301876123f2565b61278f60208301866126a1565b61279c60408301856123f2565b6127a960608301846123f2565b95945050505050565b60006020820190506127c76000830184612401565b92915050565b60006020820190506127e26000830184612435565b92915050565b60006020820190506127fd6000830184612444565b92915050565b60006020820190506128186000830184612453565b92915050565b6000602082019050818103600083015261283781612462565b9050919050565b6000602082019050818103600083015261285781612485565b9050919050565b60006020820190508181036000830152612877816124a8565b9050919050565b60006020820190508181036000830152612897816124cb565b9050919050565b600060208201905081810360008301526128b7816124ee565b9050919050565b600060208201905081810360008301526128d781612511565b9050919050565b600060208201905081810360008301526128f781612534565b9050919050565b6000602082019050818103600083015261291781612557565b9050919050565b600060208201905081810360008301526129378161257a565b9050919050565b600060208201905081810360008301526129578161259d565b9050919050565b60006020820190508181036000830152612977816125c0565b9050919050565b60006020820190508181036000830152612997816125e3565b9050919050565b600060208201905081810360008301526129b781612606565b9050919050565b600060208201905081810360008301526129d781612629565b9050919050565b600060208201905081810360008301526129f78161264c565b9050919050565b60006020820190508181036000830152612a178161266f565b9050919050565b6000602082019050612a336000830184612692565b92915050565b6000612a43612a54565b9050612a4f8282612c92565b919050565b6000604051905090565b600067ffffffffffffffff821115612a7957612a78612d21565b5b612a8282612d50565b9050602081019050919050565b600081905092915050565b600082825260208201905092915050565b6000612ab682612c00565b9150612ac183612c00565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612af657612af5612cc3565b5b828201905092915050565b6000612b0c82612c00565b9150612b1783612c00565b925082612b2757612b26612cf2565b5b828204905092915050565b6000612b3d82612c00565b9150612b4883612c00565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b8157612b80612cc3565b5b828202905092915050565b6000612b9782612be0565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612c2282612c29565b9050919050565b6000612c3482612be0565b9050919050565b6000612c4682612c4d565b9050919050565b6000612c5882612be0565b9050919050565b6000612c6a82612c71565b9050919050565b6000612c7c82612be0565b9050919050565b82818337600083830152505050565b612c9b82612d50565b810181811067ffffffffffffffff82111715612cba57612cb9612d21565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f5661756c743a20746f6b656e496420697320616c726561647920736574000000600082015250565b7f5661756c743a2063616c6c6572206973206e6f7420746865207570646174652060008201527f6d616e6167657200000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a20746f6b656e4964206e6f742073657400000000000000000000600082015250565b7f5661756c743a206e6f7420616c6c20746f6b656e7320736f6c64000000000000600082015250565b7f5661756c743a2063616c6c6572206973206e6f7420746865206f776e6572206f60008201527f72206d616e616765720000000000000000000000000000000000000000000000602082015250565b7f5661756c743a206572726f722073656e64696e67206461746120746f2065786360008201527f68616e6765000000000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f5661756c743a206d616e616765722073686f756c642073746172740000000000600082015250565b7f5661756c743a2063616e206e6f74206265207374617274656420776974686f7560008201527f742066756e647300000000000000000000000000000000000000000000000000602082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5661756c743a206572726f7220617070726f76696e6720574554480000000000600082015250565b7f5661756c743a20746f6b656e49642063616e206e6f7420626520300000000000600082015250565b61310481612b8c565b811461310f57600080fd5b50565b61311b81612b9e565b811461312657600080fd5b50565b61313281612baa565b811461313d57600080fd5b50565b61314981612c00565b811461315457600080fd5b5056fea2646970667358221220d468c79fc7abc98710b146a6e879d7d8b305cca5504623dfb6faf083765fc16464736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d90000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000054aa569005332e4d6f91e27c55307aaef607c0e200000000000000000000000000000000006c3852cbef3e08e8df289169ede5810000000000000000000000001e0049783f008a0085193e00003d00cd54003c71
-----Decoded View---------------
Arg [0] : vaultManager_ (address): 0x1298081d0927cA46288173E24e9B44Eaf2c245d9
Arg [1] : tokenContract_ (address): 0x5CC5B05a8A13E3fBDB0BB9FcCd98D38e50F90c38
Arg [2] : wrappedEther_ (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [3] : landDao_ (address): 0x54AA569005332e4d6f91e27C55307AAEF607c0E2
Arg [4] : openSeaExchange_ (address): 0x00000000006c3852cbEf3e08E8dF289169EdE581
Arg [5] : openSeaConduit_ (address): 0x1E0049783F008A0085193E00003D00cd54003c71
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000001298081d0927ca46288173e24e9b44eaf2c245d9
Arg [1] : 0000000000000000000000005cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [3] : 00000000000000000000000054aa569005332e4d6f91e27c55307aaef607c0e2
Arg [4] : 00000000000000000000000000000000006c3852cbef3e08e8df289169ede581
Arg [5] : 0000000000000000000000001e0049783f008a0085193e00003d00cd54003c71
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.