ERC-1155
Overview
Max Total Supply
888
Holders
314
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TitanTiki3D
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-11 */ // SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.4; /// @notice Minimalist and gas efficient standard ERC1155 implementation. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) abstract contract ERC1155 { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event TransferSingle( address indexed operator, address indexed from, address indexed to, uint256 id, uint256 amount ); event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] amounts ); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); event URI(string value, uint256 indexed id); /*/////////////////////////////////////////////////////////////// ERC1155 STORAGE //////////////////////////////////////////////////////////////*/ mapping(address => mapping(uint256 => uint256)) public balanceOf; mapping(address => mapping(address => bool)) public isApprovedForAll; /*/////////////////////////////////////////////////////////////// METADATA LOGIC //////////////////////////////////////////////////////////////*/ function uri(uint256 id) public view virtual returns (string memory); /*/////////////////////////////////////////////////////////////// ERC1155 ACTIONS //////////////////////////////////////////////////////////////*/ function setApprovalForAll(address operator, bool approved) public virtual { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual { require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); balanceOf[from][id] -= amount; balanceOf[to][id] += amount; emit TransferSingle(msg.sender, from, to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED"); for (uint256 i = 0; i < idsLength; ) { uint256 id = ids[i]; uint256 amount = amounts[i]; balanceOf[from][id] -= amount; balanceOf[to][id] += amount; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, from, to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function balanceOfBatch(address[] memory owners, uint256[] memory ids) public view virtual returns (uint256[] memory balances) { uint256 ownersLength = owners.length; // Saves MLOADs. require(ownersLength == ids.length, "LENGTH_MISMATCH"); balances = new uint256[](owners.length); // Unchecked because the only math done is incrementing // the array index counter which cannot possibly overflow. unchecked { for (uint256 i = 0; i < ownersLength; i++) { balances[i] = balanceOf[owners[i]][ids[i]]; } } } /*/////////////////////////////////////////////////////////////// ERC165 LOGIC //////////////////////////////////////////////////////////////*/ function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) { return interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165 interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155 interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI } /*/////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal { balanceOf[to][id] += amount; emit TransferSingle(msg.sender, address(0), to, id, amount); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) == ERC1155TokenReceiver.onERC1155Received.selector, "UNSAFE_RECIPIENT" ); } function _batchMint( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[to][ids[i]] += amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, address(0), to, ids, amounts); require( to.code.length == 0 ? to != address(0) : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) == ERC1155TokenReceiver.onERC1155BatchReceived.selector, "UNSAFE_RECIPIENT" ); } function _batchBurn( address from, uint256[] memory ids, uint256[] memory amounts ) internal { uint256 idsLength = ids.length; // Saves MLOADs. require(idsLength == amounts.length, "LENGTH_MISMATCH"); for (uint256 i = 0; i < idsLength; ) { balanceOf[from][ids[i]] -= amounts[i]; // An array can't have a total length // larger than the max uint256 value. unchecked { i++; } } emit TransferBatch(msg.sender, from, address(0), ids, amounts); } function _burn( address from, uint256 id, uint256 amount ) internal { balanceOf[from][id] -= amount; emit TransferSingle(msg.sender, from, address(0), id, amount); } } /// @notice A generic interface for a contract which properly accepts ERC1155 tokens. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol) interface ERC1155TokenReceiver { function onERC1155Received( address operator, address from, uint256 id, uint256 amount, bytes calldata data ) external returns (bytes4); function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external returns (bytes4); }// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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; } } /** * @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); } }// OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) /** * @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); } } contract TitanTiki3D is ERC1155, Ownable { using Strings for uint160; using Strings for uint8; /// @dev 0x98d4901c error WrongValue(); /// @dev 0x750b219c error WithdrawFailed(); /// @dev 0x80cb55e2 error NotActive(); /// @dev 0xb36c1284 error MaxSupply(); /// @dev 0xb05e92fa error InvalidMerkleProof(); /// @dev 0x843ce46b error InvalidClaimAmount(); /// @dev 0x2c5211c6 error InvalidAmount(); // Immutable uint256 public constant TOTAL_LIMIT = 2022; uint256 public constant UNIT_PRICE = 0.1 ether; uint256 public constant MAX_PER_TX = 10; bytes32 public immutable merkleRoot; address private immutable _payoutAddress; // Mutable uint256 public totalSupply = 0; bool public isPresaleActive = false; string private _uri; bool public isSaleActive = false; /// @dev we know no one is allow-listed to claim more than 255, and we /// found out uint8 was cheaper than other uints by trial mapping(address => uint8) public amountClaimedByUser; // Constructor constructor( address payoutAddress, string memory __uri, bytes32 _merkleRoot ) { // slither-disable-next-line missing-zero-check _payoutAddress = payoutAddress; _uri = __uri; merkleRoot = _merkleRoot; } // Owner Only function setURI(string calldata newUri) external onlyOwner { _uri = newUri; } function setIsSaleActive(bool newIsSaleActive) external onlyOwner { isSaleActive = newIsSaleActive; } function setIsPresaleActive(bool newIsPresaleActive) external onlyOwner { isPresaleActive = newIsPresaleActive; } function withdraw() external onlyOwner { uint256 contractBalance = address(this).balance; // slither-disable-next-line low-level-calls (bool payoutSent, ) = payable(_payoutAddress).call{ // solhint-disable-line avoid-low-level-calls value: contractBalance }(""); if (!payoutSent) revert WithdrawFailed(); } function reserve(address to, uint256 amount) external onlyOwner { unchecked { if (amount + totalSupply > TOTAL_LIMIT) revert MaxSupply(); } _mintMany(to, amount); } // User function mint(uint256 amount) external payable { if (!isSaleActive) revert NotActive(); if (amount == 0 || amount > MAX_PER_TX) revert InvalidAmount(); unchecked { if (msg.value != amount * UNIT_PRICE) revert WrongValue(); if (amount + totalSupply > TOTAL_LIMIT) revert MaxSupply(); } _mintMany(msg.sender, amount); } function claim( uint8 amount, uint8 totalAmount, bytes32[] calldata proof ) external { if (!isPresaleActive) revert NotActive(); unchecked { if (amountClaimedByUser[msg.sender] + amount > totalAmount) revert InvalidClaimAmount(); } bytes32 leaf = keccak256( abi.encodePacked( uint160(msg.sender).toHexString(20), ":", totalAmount.toString() ) ); bool isProofValid = MerkleProof.verify(proof, merkleRoot, leaf); if (!isProofValid) revert InvalidMerkleProof(); unchecked { amountClaimedByUser[msg.sender] += amount; } _mintMany(msg.sender, amount); } // Internal Helpers function _mintMany(address to, uint256 amount) internal { uint256[] memory ids = new uint256[](amount); uint256[] memory amounts = new uint256[](amount); uint256 supply = totalSupply; unchecked { totalSupply += amount; for (uint256 i = 0; i < amount; i++) { ids[i] = supply + i + 1; amounts[i] = 1; } } _batchMint(to, ids, amounts, ""); } // Overrides function uri(uint256) public view override returns (string memory) { return _uri; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"payoutAddress","type":"address"},{"internalType":"string","name":"__uri","type":"string"},{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidClaimAmount","type":"error"},{"inputs":[],"name":"InvalidMerkleProof","type":"error"},{"inputs":[],"name":"MaxSupply","type":"error"},{"inputs":[],"name":"NotActive","type":"error"},{"inputs":[],"name":"WithdrawFailed","type":"error"},{"inputs":[],"name":"WrongValue","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNIT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountClaimedByUser","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"},{"internalType":"uint8","name":"totalAmount","type":"uint8"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPresaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsPresaleActive","type":"bool"}],"name":"setIsPresaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newIsSaleActive","type":"bool"}],"name":"setIsSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405260006003556004805460ff199081169091556006805490911690553480156200002c57600080fd5b506040516200236b3803806200236b8339810160408190526200004f9162000197565b6200005a3362000089565b6001600160a01b03831660a05281516200007c906005906020850190620000db565b5060805250620002dd9050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000e990620002a0565b90600052602060002090601f0160209004810192826200010d576000855562000158565b82601f106200012857805160ff191683800117855562000158565b8280016001018555821562000158579182015b82811115620001585782518255916020019190600101906200013b565b50620001669291506200016a565b5090565b5b808211156200016657600081556001016200016b565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215620001ad57600080fd5b83516001600160a01b0381168114620001c557600080fd5b602085810151919450906001600160401b0380821115620001e557600080fd5b818701915087601f830112620001fa57600080fd5b8151818111156200020f576200020f62000181565b604051601f8201601f19908116603f011681019083821181831017156200023a576200023a62000181565b816040528281528a868487010111156200025357600080fd5b600093505b8284101562000277578484018601518185018701529285019262000258565b82841115620002895760008684830101525b809750505050505050604084015190509250925092565b600181811c90821680620002b557607f821691505b60208210811415620002d757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516120616200030a60003960006109160152600081816102940152610bf001526120616000f3fe6080604052600436106101805760003560e01c8063715018a6116100d1578063cc47a40b1161008a578063eca17e0411610064578063eca17e04146104b5578063f242432a146104cb578063f2fde38b146104eb578063f43a22dc1461050b57600080fd5b8063cc47a40b1461043a578063d2d65ff51461045a578063e985e9c51461047a57600080fd5b8063715018a61461038e5780638715c9ca146103a35780638da5cb5b146103c3578063a0712d68146103eb578063a22cb465146103fe578063afa40bbd1461041e57600080fd5b80632eb4a7ab1161013e578063443da2a211610118578063443da2a21461030d5780634e1273f41461032d578063564566a81461035a57806360d938dc1461037457600080fd5b80632eb4a7ab146102825780633b66f49d146102b65780633ccfd60b146102f857600080fd5b8062fdd58e1461018557806301ffc9a7146101cd57806302fe5305146101fd5780630e89341c1461021f57806318160ddd1461024c5780632eb2c2d614610262575b600080fd5b34801561019157600080fd5b506101ba6101a036600461175d565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101d957600080fd5b506101ed6101e836600461179d565b610520565b60405190151581526020016101c4565b34801561020957600080fd5b5061021d6102183660046117ba565b610572565b005b34801561022b57600080fd5b5061023f61023a36600461182b565b6105b6565b6040516101c491906118a0565b34801561025857600080fd5b506101ba60035481565b34801561026e57600080fd5b5061021d61027d3660046119f6565b61064a565b34801561028e57600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102c257600080fd5b506102e66102d1366004611a9f565b60076020526000908152604090205460ff1681565b60405160ff90911681526020016101c4565b34801561030457600080fd5b5061021d6108da565b34801561031957600080fd5b5061021d610328366004611aca565b61099c565b34801561033957600080fd5b5061034d610348366004611ae5565b6109d9565b6040516101c49190611bdf565b34801561036657600080fd5b506006546101ed9060ff1681565b34801561038057600080fd5b506004546101ed9060ff1681565b34801561039a57600080fd5b5061021d610ae4565b3480156103af57600080fd5b5061021d6103be366004611c03565b610b1a565b3480156103cf57600080fd5b506002546040516001600160a01b0390911681526020016101c4565b61021d6103f936600461182b565b610c6a565b34801561040a57600080fd5b5061021d610419366004611c93565b610d16565b34801561042a57600080fd5b506101ba67016345785d8a000081565b34801561044657600080fd5b5061021d61045536600461175d565b610d82565b34801561046657600080fd5b5061021d610475366004611aca565b610ddd565b34801561048657600080fd5b506101ed610495366004611cc6565b600160209081526000928352604080842090915290825290205460ff1681565b3480156104c157600080fd5b506101ba6107e681565b3480156104d757600080fd5b5061021d6104e6366004611cf0565b610e1a565b3480156104f757600080fd5b5061021d610506366004611a9f565b611011565b34801561051757600080fd5b506101ba600a81565b60006301ffc9a760e01b6001600160e01b0319831614806105515750636cdb3d1360e11b6001600160e01b03198316145b8061056c57506303a24d0760e21b6001600160e01b03198316145b92915050565b6002546001600160a01b031633146105a55760405162461bcd60e51b815260040161059c90611d54565b60405180910390fd5b6105b1600583836116a8565b505050565b6060600580546105c590611d89565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611d89565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b50505050509050919050565b82518251811461066c5760405162461bcd60e51b815260040161059c90611dc4565b336001600160a01b03871614806106a657506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6106e35760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161059c565b60005b818110156107b857600085828151811061070257610702611ded565b60200260200101519050600085838151811061072057610720611ded565b60200260200101519050806000808b6001600160a01b03166001600160a01b031681526020019081526020016000206000848152602001908152602001600020600082825461076f9190611e19565b90915550506001600160a01b038816600090815260208181526040808320858452909152812080548392906107a5908490611e30565b9091555050600190920191506106e69050565b50846001600160a01b0316866001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610808929190611e48565b60405180910390a46001600160a01b0385163b156108a95760405163bc197c8160e01b808252906001600160a01b0387169063bc197c81906108569033908b908a908a908a90600401611e76565b6020604051808303816000875af1158015610875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108999190611ed4565b6001600160e01b031916146108b6565b6001600160a01b03851615155b6108d25760405162461bcd60e51b815260040161059c90611ef1565b505050505050565b6002546001600160a01b031633146109045760405162461bcd60e51b815260040161059c90611d54565b60405147906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083908381818185875af1925050503d8060008114610971576040519150601f19603f3d011682016040523d82523d6000602084013e610976565b606091505b505090508061099857604051631d42c86760e21b815260040160405180910390fd5b5050565b6002546001600160a01b031633146109c65760405162461bcd60e51b815260040161059c90611d54565b6004805460ff1916911515919091179055565b815181516060919081146109ff5760405162461bcd60e51b815260040161059c90611dc4565b83516001600160401b03811115610a1857610a186118b3565b604051908082528060200260200182016040528015610a41578160200160208202803683370190505b50915060005b81811015610adc57600080868381518110610a6457610a64611ded565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610aa057610aa0611ded565b6020026020010151815260200190815260200160002054838281518110610ac957610ac9611ded565b6020908102919091010152600101610a47565b505092915050565b6002546001600160a01b03163314610b0e5760405162461bcd60e51b815260040161059c90611d54565b610b1860006110a5565b565b60045460ff16610b3d57604051634065aaf160e11b815260040160405180910390fd5b3360009081526007602052604090205460ff8085169181168601161115610b775760405163843ce46b60e01b815260040160405180910390fd5b6000610b843360146110f7565b610b908560ff16611299565b604051602001610ba1929190611f1b565b6040516020818303038152906040528051906020012090506000610c1b8484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507f0000000000000000000000000000000000000000000000000000000000000000925086915061139e9050565b905080610c3b5760405163582f497d60e11b815260040160405180910390fd5b336000818152600760205260409020805460ff19811660ff9182168a018216179091556108d2919088166113b4565b60065460ff16610c8d57604051634065aaf160e11b815260040160405180910390fd5b801580610c9a5750600a81115b15610cb85760405163162908e360e11b815260040160405180910390fd5b67016345785d8a000081023414610ce257604051632635240760e21b815260040160405180910390fd5b6107e660035482011115610d0957604051632cdb04a160e21b815260040160405180910390fd5b610d1333826113b4565b50565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6002546001600160a01b03163314610dac5760405162461bcd60e51b815260040161059c90611d54565b6107e660035482011115610dd357604051632cdb04a160e21b815260040160405180910390fd5b61099882826113b4565b6002546001600160a01b03163314610e075760405162461bcd60e51b815260040161059c90611d54565b6006805460ff1916911515919091179055565b336001600160a01b0386161480610e5457506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610e915760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161059c565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290610ec2908490611e19565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290610ef8908490611e30565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610fe15760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610f8e9033908a90899089908990600401611f57565b6020604051808303816000875af1158015610fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd19190611ed4565b6001600160e01b03191614610fee565b6001600160a01b03841615155b61100a5760405162461bcd60e51b815260040161059c90611ef1565b5050505050565b6002546001600160a01b0316331461103b5760405162461bcd60e51b815260040161059c90611d54565b6001600160a01b0381166110a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059c565b610d13815b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000611106836002611f9c565b611111906002611e30565b6001600160401b03811115611128576111286118b3565b6040519080825280601f01601f191660200182016040528015611152576020820181803683370190505b509050600360fc1b8160008151811061116d5761116d611ded565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061119c5761119c611ded565b60200101906001600160f81b031916908160001a90535060006111c0846002611f9c565b6111cb906001611e30565b90505b6001811115611243576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106111ff576111ff611ded565b1a60f81b82828151811061121557611215611ded565b60200101906001600160f81b031916908160001a90535060049490941c9361123c81611fbb565b90506111ce565b5083156112925760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161059c565b9392505050565b6060816112bd5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156112e757806112d181611fd2565b91506112e09050600a83612003565b91506112c1565b6000816001600160401b03811115611301576113016118b3565b6040519080825280601f01601f19166020018201604052801561132b576020820181803683370190505b5090505b841561139657611340600183611e19565b915061134d600a86612017565b611358906030611e30565b60f81b81838151811061136d5761136d611ded565b60200101906001600160f81b031916908160001a90535061138f600a86612003565b945061132f565b949350505050565b6000826113ab85846114bd565b14949350505050565b6000816001600160401b038111156113ce576113ce6118b3565b6040519080825280602002602001820160405280156113f7578160200160208202803683370190505b5090506000826001600160401b03811115611414576114146118b3565b60405190808252806020026020018201604052801561143d578160200160208202803683370190505b506003805485810190915590915060005b848110156114a15780820160010184828151811061146e5761146e611ded565b602002602001018181525050600183828151811061148e5761148e611ded565b602090810291909101015260010161144e565b5061100a85848460405180602001604052806000815250611531565b600081815b84518110156115295760008582815181106114df576114df611ded565b602002602001015190508083116115055760008381526020829052604090209250611516565b600081815260208490526040902092505b508061152181611fd2565b9150506114c2565b509392505050565b8251825181146115535760405162461bcd60e51b815260040161059c90611dc4565b60005b818110156115e25783818151811061157057611570611ded565b6020026020010151600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008784815181106115b0576115b0611ded565b6020026020010151815260200190815260200160002060008282546115d59190611e30565b9091555050600101611556565b50846001600160a01b031660006001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611633929190611e48565b60405180910390a46001600160a01b0385163b156116825760405163bc197c8160e01b808252906001600160a01b0387169063bc197c8190610f8e9033906000908a908a908a90600401611e76565b6001600160a01b03851661100a5760405162461bcd60e51b815260040161059c90611ef1565b8280546116b490611d89565b90600052602060002090601f0160209004810192826116d6576000855561171c565b82601f106116ef5782800160ff1982351617855561171c565b8280016001018555821561171c579182015b8281111561171c578235825591602001919060010190611701565b5061172892915061172c565b5090565b5b80821115611728576000815560010161172d565b80356001600160a01b038116811461175857600080fd5b919050565b6000806040838503121561177057600080fd5b61177983611741565b946020939093013593505050565b6001600160e01b031981168114610d1357600080fd5b6000602082840312156117af57600080fd5b813561129281611787565b600080602083850312156117cd57600080fd5b82356001600160401b03808211156117e457600080fd5b818501915085601f8301126117f857600080fd5b81358181111561180757600080fd5b86602082850101111561181957600080fd5b60209290920196919550909350505050565b60006020828403121561183d57600080fd5b5035919050565b60005b8381101561185f578181015183820152602001611847565b8381111561186e576000848401525b50505050565b6000815180845261188c816020860160208601611844565b601f01601f19169290920160200192915050565b6020815260006112926020830184611874565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156118f1576118f16118b3565b604052919050565b60006001600160401b03821115611912576119126118b3565b5060051b60200190565b600082601f83011261192d57600080fd5b8135602061194261193d836118f9565b6118c9565b82815260059290921b8401810191818101908684111561196157600080fd5b8286015b8481101561197c5780358352918301918301611965565b509695505050505050565b600082601f83011261199857600080fd5b81356001600160401b038111156119b1576119b16118b3565b6119c4601f8201601f19166020016118c9565b8181528460208386010111156119d957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611a0e57600080fd5b611a1786611741565b9450611a2560208701611741565b935060408601356001600160401b0380821115611a4157600080fd5b611a4d89838a0161191c565b94506060880135915080821115611a6357600080fd5b611a6f89838a0161191c565b93506080880135915080821115611a8557600080fd5b50611a9288828901611987565b9150509295509295909350565b600060208284031215611ab157600080fd5b61129282611741565b8035801515811461175857600080fd5b600060208284031215611adc57600080fd5b61129282611aba565b60008060408385031215611af857600080fd5b82356001600160401b0380821115611b0f57600080fd5b818501915085601f830112611b2357600080fd5b81356020611b3361193d836118f9565b82815260059290921b84018101918181019089841115611b5257600080fd5b948201945b83861015611b7757611b6886611741565b82529482019490820190611b57565b96505086013592505080821115611b8d57600080fd5b50611b9a8582860161191c565b9150509250929050565b600081518084526020808501945080840160005b83811015611bd457815187529582019590820190600101611bb8565b509495945050505050565b6020815260006112926020830184611ba4565b803560ff8116811461175857600080fd5b60008060008060608587031215611c1957600080fd5b611c2285611bf2565b9350611c3060208601611bf2565b925060408501356001600160401b0380821115611c4c57600080fd5b818701915087601f830112611c6057600080fd5b813581811115611c6f57600080fd5b8860208260051b8501011115611c8457600080fd5b95989497505060200194505050565b60008060408385031215611ca657600080fd5b611caf83611741565b9150611cbd60208401611aba565b90509250929050565b60008060408385031215611cd957600080fd5b611ce283611741565b9150611cbd60208401611741565b600080600080600060a08688031215611d0857600080fd5b611d1186611741565b9450611d1f60208701611741565b9350604086013592506060860135915060808601356001600160401b03811115611d4857600080fd5b611a9288828901611987565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611d9d57607f821691505b60208210811415611dbe57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600f908201526e0988a9c8ea890be9a92a69a82a8869608b1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611e2b57611e2b611e03565b500390565b60008219821115611e4357611e43611e03565b500190565b604081526000611e5b6040830185611ba4565b8281036020840152611e6d8185611ba4565b95945050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611ea290830186611ba4565b8281036060840152611eb48186611ba4565b90508281036080840152611ec88185611874565b98975050505050505050565b600060208284031215611ee657600080fd5b815161129281611787565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b60008351611f2d818460208801611844565b601d60f91b9083019081528351611f4b816001840160208801611844565b01600101949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611f9190830184611874565b979650505050505050565b6000816000190483118215151615611fb657611fb6611e03565b500290565b600081611fca57611fca611e03565b506000190190565b6000600019821415611fe657611fe6611e03565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261201257612012611fed565b500490565b60008261202657612026611fed565b50069056fea26469706673582212203e8ff78f1627532a08c6f52d55c01051e9515e565bec3937a5fc8bc03c57bf1364736f6c634300080c00330000000000000000000000002214afafa4142ed82a6215b2ff41b7d28df072a90000000000000000000000000000000000000000000000000000000000000060ecc16163ac12861fea1e20ad7afddc81dace83b49d2550ec1c181a87b7094d5b000000000000000000000000000000000000000000000000000000000000004168747470733a2f2f7476707836396639306b2e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f7b69647d00000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101805760003560e01c8063715018a6116100d1578063cc47a40b1161008a578063eca17e0411610064578063eca17e04146104b5578063f242432a146104cb578063f2fde38b146104eb578063f43a22dc1461050b57600080fd5b8063cc47a40b1461043a578063d2d65ff51461045a578063e985e9c51461047a57600080fd5b8063715018a61461038e5780638715c9ca146103a35780638da5cb5b146103c3578063a0712d68146103eb578063a22cb465146103fe578063afa40bbd1461041e57600080fd5b80632eb4a7ab1161013e578063443da2a211610118578063443da2a21461030d5780634e1273f41461032d578063564566a81461035a57806360d938dc1461037457600080fd5b80632eb4a7ab146102825780633b66f49d146102b65780633ccfd60b146102f857600080fd5b8062fdd58e1461018557806301ffc9a7146101cd57806302fe5305146101fd5780630e89341c1461021f57806318160ddd1461024c5780632eb2c2d614610262575b600080fd5b34801561019157600080fd5b506101ba6101a036600461175d565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101d957600080fd5b506101ed6101e836600461179d565b610520565b60405190151581526020016101c4565b34801561020957600080fd5b5061021d6102183660046117ba565b610572565b005b34801561022b57600080fd5b5061023f61023a36600461182b565b6105b6565b6040516101c491906118a0565b34801561025857600080fd5b506101ba60035481565b34801561026e57600080fd5b5061021d61027d3660046119f6565b61064a565b34801561028e57600080fd5b506101ba7fecc16163ac12861fea1e20ad7afddc81dace83b49d2550ec1c181a87b7094d5b81565b3480156102c257600080fd5b506102e66102d1366004611a9f565b60076020526000908152604090205460ff1681565b60405160ff90911681526020016101c4565b34801561030457600080fd5b5061021d6108da565b34801561031957600080fd5b5061021d610328366004611aca565b61099c565b34801561033957600080fd5b5061034d610348366004611ae5565b6109d9565b6040516101c49190611bdf565b34801561036657600080fd5b506006546101ed9060ff1681565b34801561038057600080fd5b506004546101ed9060ff1681565b34801561039a57600080fd5b5061021d610ae4565b3480156103af57600080fd5b5061021d6103be366004611c03565b610b1a565b3480156103cf57600080fd5b506002546040516001600160a01b0390911681526020016101c4565b61021d6103f936600461182b565b610c6a565b34801561040a57600080fd5b5061021d610419366004611c93565b610d16565b34801561042a57600080fd5b506101ba67016345785d8a000081565b34801561044657600080fd5b5061021d61045536600461175d565b610d82565b34801561046657600080fd5b5061021d610475366004611aca565b610ddd565b34801561048657600080fd5b506101ed610495366004611cc6565b600160209081526000928352604080842090915290825290205460ff1681565b3480156104c157600080fd5b506101ba6107e681565b3480156104d757600080fd5b5061021d6104e6366004611cf0565b610e1a565b3480156104f757600080fd5b5061021d610506366004611a9f565b611011565b34801561051757600080fd5b506101ba600a81565b60006301ffc9a760e01b6001600160e01b0319831614806105515750636cdb3d1360e11b6001600160e01b03198316145b8061056c57506303a24d0760e21b6001600160e01b03198316145b92915050565b6002546001600160a01b031633146105a55760405162461bcd60e51b815260040161059c90611d54565b60405180910390fd5b6105b1600583836116a8565b505050565b6060600580546105c590611d89565b80601f01602080910402602001604051908101604052809291908181526020018280546105f190611d89565b801561063e5780601f106106135761010080835404028352916020019161063e565b820191906000526020600020905b81548152906001019060200180831161062157829003601f168201915b50505050509050919050565b82518251811461066c5760405162461bcd60e51b815260040161059c90611dc4565b336001600160a01b03871614806106a657506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6106e35760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161059c565b60005b818110156107b857600085828151811061070257610702611ded565b60200260200101519050600085838151811061072057610720611ded565b60200260200101519050806000808b6001600160a01b03166001600160a01b031681526020019081526020016000206000848152602001908152602001600020600082825461076f9190611e19565b90915550506001600160a01b038816600090815260208181526040808320858452909152812080548392906107a5908490611e30565b9091555050600190920191506106e69050565b50846001600160a01b0316866001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610808929190611e48565b60405180910390a46001600160a01b0385163b156108a95760405163bc197c8160e01b808252906001600160a01b0387169063bc197c81906108569033908b908a908a908a90600401611e76565b6020604051808303816000875af1158015610875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108999190611ed4565b6001600160e01b031916146108b6565b6001600160a01b03851615155b6108d25760405162461bcd60e51b815260040161059c90611ef1565b505050505050565b6002546001600160a01b031633146109045760405162461bcd60e51b815260040161059c90611d54565b60405147906000906001600160a01b037f0000000000000000000000002214afafa4142ed82a6215b2ff41b7d28df072a9169083908381818185875af1925050503d8060008114610971576040519150601f19603f3d011682016040523d82523d6000602084013e610976565b606091505b505090508061099857604051631d42c86760e21b815260040160405180910390fd5b5050565b6002546001600160a01b031633146109c65760405162461bcd60e51b815260040161059c90611d54565b6004805460ff1916911515919091179055565b815181516060919081146109ff5760405162461bcd60e51b815260040161059c90611dc4565b83516001600160401b03811115610a1857610a186118b3565b604051908082528060200260200182016040528015610a41578160200160208202803683370190505b50915060005b81811015610adc57600080868381518110610a6457610a64611ded565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610aa057610aa0611ded565b6020026020010151815260200190815260200160002054838281518110610ac957610ac9611ded565b6020908102919091010152600101610a47565b505092915050565b6002546001600160a01b03163314610b0e5760405162461bcd60e51b815260040161059c90611d54565b610b1860006110a5565b565b60045460ff16610b3d57604051634065aaf160e11b815260040160405180910390fd5b3360009081526007602052604090205460ff8085169181168601161115610b775760405163843ce46b60e01b815260040160405180910390fd5b6000610b843360146110f7565b610b908560ff16611299565b604051602001610ba1929190611f1b565b6040516020818303038152906040528051906020012090506000610c1b8484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152507fecc16163ac12861fea1e20ad7afddc81dace83b49d2550ec1c181a87b7094d5b925086915061139e9050565b905080610c3b5760405163582f497d60e11b815260040160405180910390fd5b336000818152600760205260409020805460ff19811660ff9182168a018216179091556108d2919088166113b4565b60065460ff16610c8d57604051634065aaf160e11b815260040160405180910390fd5b801580610c9a5750600a81115b15610cb85760405163162908e360e11b815260040160405180910390fd5b67016345785d8a000081023414610ce257604051632635240760e21b815260040160405180910390fd5b6107e660035482011115610d0957604051632cdb04a160e21b815260040160405180910390fd5b610d1333826113b4565b50565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6002546001600160a01b03163314610dac5760405162461bcd60e51b815260040161059c90611d54565b6107e660035482011115610dd357604051632cdb04a160e21b815260040160405180910390fd5b61099882826113b4565b6002546001600160a01b03163314610e075760405162461bcd60e51b815260040161059c90611d54565b6006805460ff1916911515919091179055565b336001600160a01b0386161480610e5457506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610e915760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161059c565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290610ec2908490611e19565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290610ef8908490611e30565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610fe15760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610f8e9033908a90899089908990600401611f57565b6020604051808303816000875af1158015610fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd19190611ed4565b6001600160e01b03191614610fee565b6001600160a01b03841615155b61100a5760405162461bcd60e51b815260040161059c90611ef1565b5050505050565b6002546001600160a01b0316331461103b5760405162461bcd60e51b815260040161059c90611d54565b6001600160a01b0381166110a05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161059c565b610d13815b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000611106836002611f9c565b611111906002611e30565b6001600160401b03811115611128576111286118b3565b6040519080825280601f01601f191660200182016040528015611152576020820181803683370190505b509050600360fc1b8160008151811061116d5761116d611ded565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061119c5761119c611ded565b60200101906001600160f81b031916908160001a90535060006111c0846002611f9c565b6111cb906001611e30565b90505b6001811115611243576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106111ff576111ff611ded565b1a60f81b82828151811061121557611215611ded565b60200101906001600160f81b031916908160001a90535060049490941c9361123c81611fbb565b90506111ce565b5083156112925760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161059c565b9392505050565b6060816112bd5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156112e757806112d181611fd2565b91506112e09050600a83612003565b91506112c1565b6000816001600160401b03811115611301576113016118b3565b6040519080825280601f01601f19166020018201604052801561132b576020820181803683370190505b5090505b841561139657611340600183611e19565b915061134d600a86612017565b611358906030611e30565b60f81b81838151811061136d5761136d611ded565b60200101906001600160f81b031916908160001a90535061138f600a86612003565b945061132f565b949350505050565b6000826113ab85846114bd565b14949350505050565b6000816001600160401b038111156113ce576113ce6118b3565b6040519080825280602002602001820160405280156113f7578160200160208202803683370190505b5090506000826001600160401b03811115611414576114146118b3565b60405190808252806020026020018201604052801561143d578160200160208202803683370190505b506003805485810190915590915060005b848110156114a15780820160010184828151811061146e5761146e611ded565b602002602001018181525050600183828151811061148e5761148e611ded565b602090810291909101015260010161144e565b5061100a85848460405180602001604052806000815250611531565b600081815b84518110156115295760008582815181106114df576114df611ded565b602002602001015190508083116115055760008381526020829052604090209250611516565b600081815260208490526040902092505b508061152181611fd2565b9150506114c2565b509392505050565b8251825181146115535760405162461bcd60e51b815260040161059c90611dc4565b60005b818110156115e25783818151811061157057611570611ded565b6020026020010151600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008784815181106115b0576115b0611ded565b6020026020010151815260200190815260200160002060008282546115d59190611e30565b9091555050600101611556565b50846001600160a01b031660006001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611633929190611e48565b60405180910390a46001600160a01b0385163b156116825760405163bc197c8160e01b808252906001600160a01b0387169063bc197c8190610f8e9033906000908a908a908a90600401611e76565b6001600160a01b03851661100a5760405162461bcd60e51b815260040161059c90611ef1565b8280546116b490611d89565b90600052602060002090601f0160209004810192826116d6576000855561171c565b82601f106116ef5782800160ff1982351617855561171c565b8280016001018555821561171c579182015b8281111561171c578235825591602001919060010190611701565b5061172892915061172c565b5090565b5b80821115611728576000815560010161172d565b80356001600160a01b038116811461175857600080fd5b919050565b6000806040838503121561177057600080fd5b61177983611741565b946020939093013593505050565b6001600160e01b031981168114610d1357600080fd5b6000602082840312156117af57600080fd5b813561129281611787565b600080602083850312156117cd57600080fd5b82356001600160401b03808211156117e457600080fd5b818501915085601f8301126117f857600080fd5b81358181111561180757600080fd5b86602082850101111561181957600080fd5b60209290920196919550909350505050565b60006020828403121561183d57600080fd5b5035919050565b60005b8381101561185f578181015183820152602001611847565b8381111561186e576000848401525b50505050565b6000815180845261188c816020860160208601611844565b601f01601f19169290920160200192915050565b6020815260006112926020830184611874565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156118f1576118f16118b3565b604052919050565b60006001600160401b03821115611912576119126118b3565b5060051b60200190565b600082601f83011261192d57600080fd5b8135602061194261193d836118f9565b6118c9565b82815260059290921b8401810191818101908684111561196157600080fd5b8286015b8481101561197c5780358352918301918301611965565b509695505050505050565b600082601f83011261199857600080fd5b81356001600160401b038111156119b1576119b16118b3565b6119c4601f8201601f19166020016118c9565b8181528460208386010111156119d957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611a0e57600080fd5b611a1786611741565b9450611a2560208701611741565b935060408601356001600160401b0380821115611a4157600080fd5b611a4d89838a0161191c565b94506060880135915080821115611a6357600080fd5b611a6f89838a0161191c565b93506080880135915080821115611a8557600080fd5b50611a9288828901611987565b9150509295509295909350565b600060208284031215611ab157600080fd5b61129282611741565b8035801515811461175857600080fd5b600060208284031215611adc57600080fd5b61129282611aba565b60008060408385031215611af857600080fd5b82356001600160401b0380821115611b0f57600080fd5b818501915085601f830112611b2357600080fd5b81356020611b3361193d836118f9565b82815260059290921b84018101918181019089841115611b5257600080fd5b948201945b83861015611b7757611b6886611741565b82529482019490820190611b57565b96505086013592505080821115611b8d57600080fd5b50611b9a8582860161191c565b9150509250929050565b600081518084526020808501945080840160005b83811015611bd457815187529582019590820190600101611bb8565b509495945050505050565b6020815260006112926020830184611ba4565b803560ff8116811461175857600080fd5b60008060008060608587031215611c1957600080fd5b611c2285611bf2565b9350611c3060208601611bf2565b925060408501356001600160401b0380821115611c4c57600080fd5b818701915087601f830112611c6057600080fd5b813581811115611c6f57600080fd5b8860208260051b8501011115611c8457600080fd5b95989497505060200194505050565b60008060408385031215611ca657600080fd5b611caf83611741565b9150611cbd60208401611aba565b90509250929050565b60008060408385031215611cd957600080fd5b611ce283611741565b9150611cbd60208401611741565b600080600080600060a08688031215611d0857600080fd5b611d1186611741565b9450611d1f60208701611741565b9350604086013592506060860135915060808601356001600160401b03811115611d4857600080fd5b611a9288828901611987565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611d9d57607f821691505b60208210811415611dbe57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600f908201526e0988a9c8ea890be9a92a69a82a8869608b1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611e2b57611e2b611e03565b500390565b60008219821115611e4357611e43611e03565b500190565b604081526000611e5b6040830185611ba4565b8281036020840152611e6d8185611ba4565b95945050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090611ea290830186611ba4565b8281036060840152611eb48186611ba4565b90508281036080840152611ec88185611874565b98975050505050505050565b600060208284031215611ee657600080fd5b815161129281611787565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b60008351611f2d818460208801611844565b601d60f91b9083019081528351611f4b816001840160208801611844565b01600101949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611f9190830184611874565b979650505050505050565b6000816000190483118215151615611fb657611fb6611e03565b500290565b600081611fca57611fca611e03565b506000190190565b6000600019821415611fe657611fe6611e03565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261201257612012611fed565b500490565b60008261202657612026611fed565b50069056fea26469706673582212203e8ff78f1627532a08c6f52d55c01051e9515e565bec3937a5fc8bc03c57bf1364736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002214afafa4142ed82a6215b2ff41b7d28df072a90000000000000000000000000000000000000000000000000000000000000060ecc16163ac12861fea1e20ad7afddc81dace83b49d2550ec1c181a87b7094d5b000000000000000000000000000000000000000000000000000000000000004168747470733a2f2f7476707836396639306b2e657865637574652d6170692e75732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f7b69647d00000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : payoutAddress (address): 0x2214AFafa4142ED82A6215b2Ff41b7d28Df072a9
Arg [1] : __uri (string): https://tvpx69f90k.execute-api.us-east-1.amazonaws.com/token/{id}
Arg [2] : _merkleRoot (bytes32): 0xecc16163ac12861fea1e20ad7afddc81dace83b49d2550ec1c181a87b7094d5b
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000002214afafa4142ed82a6215b2ff41b7d28df072a9
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : ecc16163ac12861fea1e20ad7afddc81dace83b49d2550ec1c181a87b7094d5b
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000041
Arg [4] : 68747470733a2f2f7476707836396639306b2e657865637574652d6170692e75
Arg [5] : 732d656173742d312e616d617a6f6e6177732e636f6d2f746f6b656e2f7b6964
Arg [6] : 7d00000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.