ETH Price: $3,003.65 (-8.52%)

Token

mint.fun turns one (FUNBIRTHDAY)
 

Overview

Max Total Supply

38,612 FUNBIRTHDAY

Holders

30,980

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 FUNBIRTHDAY
0x6accc4a9ef73a6cb604e72a1da66840b9b6c750c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FunBirthday

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 250000 runs

Other Settings:
default evmVersion
File 1 of 11 : FunBirthday.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.19;
import {Ownable} from "openzeppelin/access/Ownable.sol";
import {ERC721A} from "ERC721A/ERC721A.sol";
import {IERC721} from "openzeppelin/token/ERC721/IERC721.sol";
import {IERC721Metadata} from "openzeppelin/token/ERC721/extensions/IERC721Metadata.sol";
import {IERC165} from "openzeppelin/utils/introspection/IERC165.sol";
import {MerkleProofLib} from "solmate/utils/MerkleProofLib.sol";
import "../Fundrop/IERC4906.sol";
import "../Fundrop/IMetadataRenderer.sol";
contract FunBirthday is ERC721A, IERC4906, Ownable {
uint256 public publicMintPrice = 0.000614 ether;
address public metadataRenderer;
address public metadataUpdater;
uint256 public mintEnd;
bytes32 public merkleRoot;
error InvalidTokenId();
error InvalidPrice();
error InvalidProof();
error MerkleRootNotSet();
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 11 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (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.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 11 : ERC721A.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// ERC721A Contracts v4.2.3
// Creator: Chiru Labs
pragma solidity ^0.8.4;
import './IERC721A.sol';
/**
* @dev Interface of ERC721 token receiver.
*/
interface ERC721A__IERC721Receiver {
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
/**
* @title ERC721A
*
* @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)
* Non-Fungible Token Standard, including the Metadata extension.
* Optimized for lower gas during batch mints.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 11 : IERC721.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (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);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 11 : IERC721Metadata.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Metadata is IERC721 {
/**
* @dev Returns the token collection name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the token collection symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
*/
function tokenURI(uint256 tokenId) external view returns (string memory);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 11 : IERC165.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 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);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 11 : MerkleProofLib.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
/// @notice Gas optimized merkle proof verification library.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/MerkleProofLib.sol)
/// @author Modified from Solady (https://github.com/Vectorized/solady/blob/main/src/utils/MerkleProofLib.sol)
library MerkleProofLib {
function verify(
bytes32[] calldata proof,
bytes32 root,
bytes32 leaf
) internal pure returns (bool isValid) {
assembly {
if proof.length {
// Left shifting by 5 is like multiplying by 32.
let end := add(proof.offset, shl(5, proof.length))
// Initialize offset to the offset of the proof in calldata.
let offset := proof.offset
// Iterate over proof elements to compute root hash.
// prettier-ignore
for {} 1 {} {
// Slot where the leaf should be put in scratch space. If
// leaf > calldataload(offset): slot 32, otherwise: slot 0.
let leafSlot := shl(5, gt(leaf, calldataload(offset)))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 11 : IERC4906.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
interface IERC4906 {
/// @dev This event emits when the metadata of a token is changed.
/// So that the third-party platforms such as NFT market could
/// timely update the images and related attributes of the NFT.
event MetadataUpdate(uint256 _tokenId);
/// @dev This event emits when the metadata of a range of tokens is changed.
/// So that the third-party platforms such as NFT market could
/// timely update the images and related attributes of the NFTs.
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 11 : IMetadataRenderer.sol
1
2
3
4
5
6
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;
interface IMetadataRenderer {
function tokenURI(uint256 id) external view returns (string memory);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 11 : Context.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 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;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 11 : IERC721A.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// ERC721A Contracts v4.2.3
// Creator: Chiru Labs
pragma solidity ^0.8.4;
/**
* @dev Interface of ERC721A.
*/
interface IERC721A {
/**
* The caller must own the token or be an approved operator.
*/
error ApprovalCallerNotOwnerNorApproved();
/**
* The token does not exist.
*/
error ApprovalQueryForNonexistentToken();
/**
* Cannot query the balance for the zero address.
*/
error BalanceQueryForZeroAddress();
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"remappings": [
"ERC721A/=lib/ERC721A/contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/",
"solady/=lib/solady/src/",
"solmate/=lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 250000
},
"metadata": {
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"InvalidPrice","type":"error"},{"inputs":[],"name":"InvalidProof","type":"error"},{"inputs":[],"name":"InvalidTokenId","type":"error"},{"inputs":[],"name":"MerkleRootNotSet","type":"error"},{"inputs":[],"name":"MintClosed","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"MintedAllowlistAlready","type":"error"},{"inputs":[],"name":"OnlyOwnerOrMetadataUpdater","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TooMany","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"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":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"adminMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"}],"name":"allowlistMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataRenderer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataUpdater","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refreshMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metadataRenderer","type":"address"}],"name":"setMetadataRenderer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metadataUpdater","type":"address"}],"name":"setMetadataUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintEnd","type":"uint256"}],"name":"setMintEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintPrice","type":"uint256"}],"name":"setMintPrice","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405266022e6e03e460006009553480156200001c57600080fd5b50604051806040016040528060128152602001716d696e742e66756e207475726e73206f6e6560701b8152506040518060400160405280600b81526020016a46554e424952544844415960a81b81525081600290816200007d9190620001af565b5060036200008c8282620001af565b50506001600055506200009f33620000b8565b333214620000b257620000b232620000b8565b6200027b565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200013557607f821691505b6020821081036200015657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001aa57600081815260208120601f850160051c81016020861015620001855750805b601f850160051c820191505b81811015620001a65782815560010162000191565b5050505b505050565b81516001600160401b03811115620001cb57620001cb6200010a565b620001e381620001dc845462000120565b846200015c565b602080601f8311600181146200021b5760008415620002025750858301515b600019600386901b1c1916600185901b178555620001a6565b600085815260208120601f198616915b828110156200024c578886015182559484019460019091019084016200022b565b50858210156200026b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611f12806200028b6000396000f3fe6080604052600436106101e35760003560e01c80637cb6475911610102578063dc53fd9211610095578063eb20614e11610064578063eb20614e1461059b578063f2fde38b146105bb578063f4a0a528146105db578063fd4fe8a8146105fb57600080fd5b8063dc53fd92146104f9578063e58306f91461050f578063e985e9c51461052f578063ea2b4ab21461058557600080fd5b8063a0712d68116100d1578063a0712d6814610493578063a22cb465146104a6578063b88d4fde146104c6578063c87b56dd146104d957600080fd5b80637cb64759146104065780638325c62f146104265780638da5cb5b1461045357806395d89b411461047e57600080fd5b8063410066051161017a5780636ba253fd116101495780636ba253fd1461038457806370319970146103a457806370a08231146103d1578063715018a6146103f157600080fd5b8063410066051461031c57806342842e0e14610331578063537924ef146103445780636352211e1461036457600080fd5b806318160ddd116101b657806318160ddd1461029957806323b872dd146102de5780632eb4a7ab146102f15780633ccfd60b1461030757600080fd5b806301ffc9a7146101e857806306fdde031461021d578063081812fc1461023f578063095ea7b314610284575b600080fd5b3480156101f457600080fd5b5061020861020336600461199f565b61061b565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023261072b565b6040516102149190611a2a565b34801561024b57600080fd5b5061025f61025a366004611a3d565b6107bd565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b610297610292366004611a7f565b610827565b005b3480156102a557600080fd5b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610214565b6102976102ec366004611aa9565b61093c565b3480156102fd57600080fd5b506102d0600d5481565b34801561031357600080fd5b50610297610bf5565b34801561032857600080fd5b50610297610c46565b61029761033f366004611aa9565b610d0e565b34801561035057600080fd5b5061029761035f366004611ae5565b610d2e565b34801561037057600080fd5b5061025f61037f366004611a3d565b610ea3565b34801561039057600080fd5b5061029761039f366004611b5a565b610eae565b3480156103b057600080fd5b50600a5461025f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103dd57600080fd5b506102d06103ec366004611b5a565b610efd565b3480156103fd57600080fd5b50610297610f7f565b34801561041257600080fd5b50610297610421366004611a3d565b610f93565b34801561043257600080fd5b50600b5461025f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561045f57600080fd5b5060085473ffffffffffffffffffffffffffffffffffffffff1661025f565b34801561048a57600080fd5b50610232610fd7565b6102976104a1366004611a3d565b610fe6565b3480156104b257600080fd5b506102976104c1366004611b75565b6110ab565b6102976104d4366004611c75565b611142565b3480156104e557600080fd5b506102326104f4366004611a3d565b6111ac565b34801561050557600080fd5b506102d060095481565b34801561051b57600080fd5b5061029761052a366004611a7f565b6112bb565b34801561053b57600080fd5b5061020861054a366004611d20565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561059157600080fd5b506102d0600c5481565b3480156105a757600080fd5b506102976105b6366004611a3d565b6112d1565b3480156105c757600080fd5b506102976105d6366004611b5a565b611325565b3480156105e757600080fd5b506102976105f6366004611a3d565b6113de565b34801561060757600080fd5b50610297610616366004611b5a565b611424565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106ae57507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b806106d957507fffffffff000000000000000000000000000000000000000000000000000000008216155b8061072557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b92915050565b60606002805461073a90611d53565b80601f016020809104026020016040519081016040528092919081815260200182805461076690611d53565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b60006107c882611474565b6107fe576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061083282610ea3565b90503373ffffffffffffffffffffffffffffffffffffffff8216146108bb5773ffffffffffffffffffffffffffffffffffffffff8116600090815260076020908152604080832033845290915290205460ff166108bb576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610947826114c2565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ae576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff881690911417610a4b5773ffffffffffffffffffffffffffffffffffffffff8616600090815260076020908152604080832033845290915290205460ff16610a4b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610a98576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610aa357600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610b9257600184016000818152600460205260408120549003610b90576000548114610b905760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b610bfd611588565b60085460405173ffffffffffffffffffffffffffffffffffffffff909116904780156108fc02916000818181858888f19350505050158015610c43573d6000803e3d6000fd5b50565b600b5473ffffffffffffffffffffffffffffffffffffffff163314801590610c86575060085473ffffffffffffffffffffffffffffffffffffffff163314155b15610cbd576040517f0707164200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c600180610cea60005490565b610cf49190611dd5565b6040805192835260208301919091520160405180910390a1565b610d2983838360405180602001604052806000815250611142565b505050565b600c54421115610d6a576040517f589ed34b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526005602052604090205460c01c15801590610db7576040517f78b97bf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152600091610e11918691869160340160405160208183030381529060405280519060200120611609565b905080610e4a576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600560205260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000179055610e9d336001611643565b50505050565b6000610725826114c2565b610eb6611588565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600073ffffffffffffffffffffffffffffffffffffffff8216610f4c576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610f87611588565b610f916000611781565b565b610f9b611588565b80610fd2576040517f9f8a28f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d55565b60606003805461073a90611d53565b600c54421115611022576040517f589ed34b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095461102f9082611de8565b3414611066576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60648111156110a1576040517fd65ac61e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c433382611643565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61114d84848461093c565b73ffffffffffffffffffffffffffffffffffffffff83163b15610e9d57611176848484846117f8565b610e9d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060006111b983610ea3565b73ffffffffffffffffffffffffffffffffffffffff1603611206576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a546040517fc87b56dd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063c87b56dd90602401600060405180830381865afa158015611275573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107259190810190611dff565b6112c3611588565b6112cd8282611643565b5050565b6112d9611588565b6000811180156112e95750600d54155b15611320576040517f9f8a28f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c55565b61132d611588565b73ffffffffffffffffffffffffffffffffffffffff81166113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c4381611781565b6113e6611588565b8060000361141f576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600955565b61142c611588565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055610c43610c46565b600081600111158015611488575060005482105b80156107255750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b600081806001116115565760005481101561155657600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003611554575b8060000361154d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160008181526004602052604090205461150e565b9392505050565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff163314610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016113cc565b6000831561163b578360051b8501855b803580851160051b948552602094851852604060002093018181106116195750505b501492915050565b6000805490829003611681576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461173d57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611705565b5081600003611778576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611853903390899088908890600401611e76565b6020604051808303816000875af19250505080156118ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526118a991810190611ebf565b60015b611923573d8080156118da576040519150601f19603f3d011682016040523d82523d6000602084013e6118df565b606091505b50805160000361191b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610c4357600080fd5b6000602082840312156119b157600080fd5b813561154d81611971565b60005b838110156119d75781810151838201526020016119bf565b50506000910152565b600081518084526119f88160208601602086016119bc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061154d60208301846119e0565b600060208284031215611a4f57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a7a57600080fd5b919050565b60008060408385031215611a9257600080fd5b611a9b83611a56565b946020939093013593505050565b600080600060608486031215611abe57600080fd5b611ac784611a56565b9250611ad560208501611a56565b9150604084013590509250925092565b60008060208385031215611af857600080fd5b823567ffffffffffffffff80821115611b1057600080fd5b818501915085601f830112611b2457600080fd5b813581811115611b3357600080fd5b8660208260051b8501011115611b4857600080fd5b60209290920196919550909350505050565b600060208284031215611b6c57600080fd5b61154d82611a56565b60008060408385031215611b8857600080fd5b611b9183611a56565b915060208301358015158114611ba657600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c2757611c27611bb1565b604052919050565b600067ffffffffffffffff821115611c4957611c49611bb1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060008060808587031215611c8b57600080fd5b611c9485611a56565b9350611ca260208601611a56565b925060408501359150606085013567ffffffffffffffff811115611cc557600080fd5b8501601f81018713611cd657600080fd5b8035611ce9611ce482611c2f565b611be0565b818152886020838501011115611cfe57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215611d3357600080fd5b611d3c83611a56565b9150611d4a60208401611a56565b90509250929050565b600181811c90821680611d6757607f821691505b602082108103611da0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072557610725611da6565b808202811582820484141761072557610725611da6565b600060208284031215611e1157600080fd5b815167ffffffffffffffff811115611e2857600080fd5b8201601f81018413611e3957600080fd5b8051611e47611ce482611c2f565b818152856020838501011115611e5c57600080fd5b611e6d8260208301602086016119bc565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611eb560808301846119e0565b9695505050505050565b600060208284031215611ed157600080fd5b815161154d8161197156fea2646970667358221220f54f75395235dd54d686e49663654a3f0cf922b9dd2e4bfa9cef32c94728336964736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101e35760003560e01c80637cb6475911610102578063dc53fd9211610095578063eb20614e11610064578063eb20614e1461059b578063f2fde38b146105bb578063f4a0a528146105db578063fd4fe8a8146105fb57600080fd5b8063dc53fd92146104f9578063e58306f91461050f578063e985e9c51461052f578063ea2b4ab21461058557600080fd5b8063a0712d68116100d1578063a0712d6814610493578063a22cb465146104a6578063b88d4fde146104c6578063c87b56dd146104d957600080fd5b80637cb64759146104065780638325c62f146104265780638da5cb5b1461045357806395d89b411461047e57600080fd5b8063410066051161017a5780636ba253fd116101495780636ba253fd1461038457806370319970146103a457806370a08231146103d1578063715018a6146103f157600080fd5b8063410066051461031c57806342842e0e14610331578063537924ef146103445780636352211e1461036457600080fd5b806318160ddd116101b657806318160ddd1461029957806323b872dd146102de5780632eb4a7ab146102f15780633ccfd60b1461030757600080fd5b806301ffc9a7146101e857806306fdde031461021d578063081812fc1461023f578063095ea7b314610284575b600080fd5b3480156101f457600080fd5b5061020861020336600461199f565b61061b565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023261072b565b6040516102149190611a2a565b34801561024b57600080fd5b5061025f61025a366004611a3d565b6107bd565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b610297610292366004611a7f565b610827565b005b3480156102a557600080fd5b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610214565b6102976102ec366004611aa9565b61093c565b3480156102fd57600080fd5b506102d0600d5481565b34801561031357600080fd5b50610297610bf5565b34801561032857600080fd5b50610297610c46565b61029761033f366004611aa9565b610d0e565b34801561035057600080fd5b5061029761035f366004611ae5565b610d2e565b34801561037057600080fd5b5061025f61037f366004611a3d565b610ea3565b34801561039057600080fd5b5061029761039f366004611b5a565b610eae565b3480156103b057600080fd5b50600a5461025f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103dd57600080fd5b506102d06103ec366004611b5a565b610efd565b3480156103fd57600080fd5b50610297610f7f565b34801561041257600080fd5b50610297610421366004611a3d565b610f93565b34801561043257600080fd5b50600b5461025f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561045f57600080fd5b5060085473ffffffffffffffffffffffffffffffffffffffff1661025f565b34801561048a57600080fd5b50610232610fd7565b6102976104a1366004611a3d565b610fe6565b3480156104b257600080fd5b506102976104c1366004611b75565b6110ab565b6102976104d4366004611c75565b611142565b3480156104e557600080fd5b506102326104f4366004611a3d565b6111ac565b34801561050557600080fd5b506102d060095481565b34801561051b57600080fd5b5061029761052a366004611a7f565b6112bb565b34801561053b57600080fd5b5061020861054a366004611d20565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561059157600080fd5b506102d0600c5481565b3480156105a757600080fd5b506102976105b6366004611a3d565b6112d1565b3480156105c757600080fd5b506102976105d6366004611b5a565b611325565b3480156105e757600080fd5b506102976105f6366004611a3d565b6113de565b34801561060757600080fd5b50610297610616366004611b5a565b611424565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806106ae57507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b806106d957507fffffffff000000000000000000000000000000000000000000000000000000008216155b8061072557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b92915050565b60606002805461073a90611d53565b80601f016020809104026020016040519081016040528092919081815260200182805461076690611d53565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b60006107c882611474565b6107fe576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061083282610ea3565b90503373ffffffffffffffffffffffffffffffffffffffff8216146108bb5773ffffffffffffffffffffffffffffffffffffffff8116600090815260076020908152604080832033845290915290205460ff166108bb576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000610947826114c2565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ae576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff881690911417610a4b5773ffffffffffffffffffffffffffffffffffffffff8616600090815260076020908152604080832033845290915290205460ff16610a4b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610a98576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610aa357600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610b9257600184016000818152600460205260408120549003610b90576000548114610b905760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b610bfd611588565b60085460405173ffffffffffffffffffffffffffffffffffffffff909116904780156108fc02916000818181858888f19350505050158015610c43573d6000803e3d6000fd5b50565b600b5473ffffffffffffffffffffffffffffffffffffffff163314801590610c86575060085473ffffffffffffffffffffffffffffffffffffffff163314155b15610cbd576040517f0707164200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c600180610cea60005490565b610cf49190611dd5565b6040805192835260208301919091520160405180910390a1565b610d2983838360405180602001604052806000815250611142565b505050565b600c54421115610d6a576040517f589ed34b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526005602052604090205460c01c15801590610db7576040517f78b97bf200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d546040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152600091610e11918691869160340160405160208183030381529060405280519060200120611609565b905080610e4a576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600560205260409020805477ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000179055610e9d336001611643565b50505050565b6000610725826114c2565b610eb6611588565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600073ffffffffffffffffffffffffffffffffffffffff8216610f4c576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610f87611588565b610f916000611781565b565b610f9b611588565b80610fd2576040517f9f8a28f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d55565b60606003805461073a90611d53565b600c54421115611022576040517f589ed34b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095461102f9082611de8565b3414611066576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60648111156110a1576040517fd65ac61e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c433382611643565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61114d84848461093c565b73ffffffffffffffffffffffffffffffffffffffff83163b15610e9d57611176848484846117f8565b610e9d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060006111b983610ea3565b73ffffffffffffffffffffffffffffffffffffffff1603611206576040517f3f6cc76800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a546040517fc87b56dd0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff9091169063c87b56dd90602401600060405180830381865afa158015611275573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107259190810190611dff565b6112c3611588565b6112cd8282611643565b5050565b6112d9611588565b6000811180156112e95750600d54155b15611320576040517f9f8a28f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c55565b61132d611588565b73ffffffffffffffffffffffffffffffffffffffff81166113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c4381611781565b6113e6611588565b8060000361141f576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600955565b61142c611588565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055610c43610c46565b600081600111158015611488575060005482105b80156107255750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b600081806001116115565760005481101561155657600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003611554575b8060000361154d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160008181526004602052604090205461150e565b9392505050565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff163314610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016113cc565b6000831561163b578360051b8501855b803580851160051b948552602094851852604060002093018181106116195750505b501492915050565b6000805490829003611681576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461173d57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611705565b5081600003611778576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b6008805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611853903390899088908890600401611e76565b6020604051808303816000875af19250505080156118ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526118a991810190611ebf565b60015b611923573d8080156118da576040519150601f19603f3d011682016040523d82523d6000602084013e6118df565b606091505b50805160000361191b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610c4357600080fd5b6000602082840312156119b157600080fd5b813561154d81611971565b60005b838110156119d75781810151838201526020016119bf565b50506000910152565b600081518084526119f88160208601602086016119bc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061154d60208301846119e0565b600060208284031215611a4f57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a7a57600080fd5b919050565b60008060408385031215611a9257600080fd5b611a9b83611a56565b946020939093013593505050565b600080600060608486031215611abe57600080fd5b611ac784611a56565b9250611ad560208501611a56565b9150604084013590509250925092565b60008060208385031215611af857600080fd5b823567ffffffffffffffff80821115611b1057600080fd5b818501915085601f830112611b2457600080fd5b813581811115611b3357600080fd5b8660208260051b8501011115611b4857600080fd5b60209290920196919550909350505050565b600060208284031215611b6c57600080fd5b61154d82611a56565b60008060408385031215611b8857600080fd5b611b9183611a56565b915060208301358015158114611ba657600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c2757611c27611bb1565b604052919050565b600067ffffffffffffffff821115611c4957611c49611bb1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060008060808587031215611c8b57600080fd5b611c9485611a56565b9350611ca260208601611a56565b925060408501359150606085013567ffffffffffffffff811115611cc557600080fd5b8501601f81018713611cd657600080fd5b8035611ce9611ce482611c2f565b611be0565b818152886020838501011115611cfe57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215611d3357600080fd5b611d3c83611a56565b9150611d4a60208401611a56565b90509250929050565b600181811c90821680611d6757607f821691505b602082108103611da0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561072557610725611da6565b808202811582820484141761072557610725611da6565b600060208284031215611e1157600080fd5b815167ffffffffffffffff811115611e2857600080fd5b8201601f81018413611e3957600080fd5b8051611e47611ce482611c2f565b818152856020838501011115611e5c57600080fd5b611e6d8260208301602086016119bc565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611eb560808301846119e0565b9695505050505050565b600060208284031215611ed157600080fd5b815161154d8161197156fea2646970667358221220f54f75395235dd54d686e49663654a3f0cf922b9dd2e4bfa9cef32c94728336964736f6c63430008140033

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.