Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
1,951 FMWCC
Holders
1,887
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 FMWCCLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FloydComicsCollection
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-10-10 */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.4; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { 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); } 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); } 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); } } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; string private _name; string private _symbol; mapping(uint256 => address) private _owners; mapping(address => uint256) private _balances; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract FloydComicsCollection is Ownable, ERC721 { string public baseURI = "https://floydnft.com/comics-nft/"; uint public totalSupply; bool public isMintingOpen = true; constructor() ERC721("Floyd Mayweather - Comics Collection", "FMWCC") {} function _baseURI() internal view override returns (string memory) { return baseURI; } function setBaseURI(string memory newURI) external onlyOwner { baseURI = newURI; } function batchMint(address[] calldata destinations, uint expectedFinalSupply) onlyOwner external { uint supply = totalSupply; uint batchSize = destinations.length; require(isMintingOpen, "Minting has been closed"); require(supply + batchSize == expectedFinalSupply, "Supply check failed"); for (uint i = 0; i < batchSize; i++) { _safeMint(destinations[i], supply++); } totalSupply = supply; } function closeMinting() onlyOwner external { isMintingOpen = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":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":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"destinations","type":"address[]"},{"internalType":"uint256","name":"expectedFinalSupply","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeMinting","outputs":[],"stateMutability":"nonpayable","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":"isMintingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"nonpayable","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":"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":"string","name":"newURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","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":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052602060808190527f68747470733a2f2f666c6f79646e66742e636f6d2f636f6d6963732d6e66742f60a090815262000040916007919062000121565b506009805460ff191660011790553480156200005b57600080fd5b506040518060600160405280602481526020016200263d60249139604080518082019091526005815264464d57434360d81b60208201526200009d33620000d1565b8151620000b290600190602085019062000121565b508051620000c890600290602084019062000121565b50505062000204565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200012f90620001c7565b90600052602060002090601f0160209004810192826200015357600085556200019e565b82601f106200016e57805160ff19168380011785556200019e565b828001600101855582156200019e579182015b828111156200019e57825182559160200191906001019062000181565b50620001ac929150620001b0565b5090565b5b80821115620001ac5760008155600101620001b1565b600181811c90821680620001dc57607f821691505b60208210811415620001fe57634e487b7160e01b600052602260045260246000fd5b50919050565b61242980620002146000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806370a08231116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461030b578063e985e9c51461031e578063f2fde38b1461036757600080fd5b806395d89b41146102dd578063a22cb465146102e5578063b88d4fde146102f857600080fd5b806383b74baa116100bd57806383b74baa146102a457806387491c60146102b75780638da5cb5b146102bf57600080fd5b806370a0823114610289578063715018a61461029c57600080fd5b80631a2069101161013a57806355f804b31161011457806355f804b31461025b5780636352211e1461026e5780636c0360eb1461028157600080fd5b80631a2069101461022857806323b872dd1461023557806342842e0e1461024857600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc57806318160ddd1461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046120bd565b61037a565b60405190151581526020015b60405180910390f35b6101b761045f565b6040516101a69190612215565b6101d76101d236600461213b565b6104f1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a36600461201e565b6105d0565b005b61021a60085481565b6040519081526020016101a6565b60095461019a9060ff1681565b61020f610243366004611f30565b61075d565b61020f610256366004611f30565b6107fe565b61020f6102693660046120f5565b610819565b6101d761027c36600461213b565b6108b1565b6101b7610963565b61021a610297366004611ee4565b6109f1565b61020f610abf565b61020f6102b2366004612047565b610b4c565b61020f610d39565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101b7610de4565b61020f6102f3366004611fe4565b610df3565b61020f610306366004611f6b565b610f0a565b6101b761031936600461213b565b610fb2565b61019a61032c366004611efe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b61020f610375366004611ee4565b6110c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606001805461046e90612297565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90612297565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105db826108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161059e565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c257506106c2813361032c565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161059e565b61075883836111f2565b505050565b6107673382611292565b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610758838383611402565b61075883838360405180602001604052806000815250610f0a565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b80516108ad906007906020840190611d8e565b5050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161059e565b6007805461097090612297565b80601f016020809104026020016040519081016040528092919081815260200182805461099c90612297565b80156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161059e565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610b4a6000611669565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600854600954839060ff16610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e74696e6720686173206265656e20636c6f736564000000000000000000604482015260640161059e565b82610c498284612228565b14610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c7920636865636b206661696c656400000000000000000000000000604482015260640161059e565b60005b81811015610d2f57610d1d868683818110610cf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610d0c9190611ee4565b84610d16816122eb565b95506116de565b80610d27816122eb565b915050610cb3565b5050600855505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606002805461046e90612297565b73ffffffffffffffffffffffffffffffffffffffff8216331415610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161059e565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f143383611292565b610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610fac848484846116f8565b50505050565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161059e565b600061107061179b565b9050600081511161109057604051806020016040528060008152506110bb565b8061109a846117aa565b6040516020016110ab92919061219d565b6040516020818303038152906040525b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff81166111e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161059e565b6111ef81611669565b50565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061124c826108b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161059e565b600061134e836108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113bd57508373ffffffffffffffffffffffffffffffffffffffff166113a5846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b806113fa575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611422826108b1565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff8216611567576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161059e565b6115726000826111f2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906115a8908490612254565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906115e3908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ad82826040518060200160405280600081525061192a565b611703848484611402565b61170f848484846119cd565b610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b60606007805461046e90612297565b6060816117ea57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561181457806117fe816122eb565b915061180d9050600a83612240565b91506117ee565b60008167ffffffffffffffff811115611856577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611880576020820181803683370190505b5090505b84156113fa57611895600183612254565b91506118a2600a86612324565b6118ad906030612228565b60f81b8183815181106118e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611923600a86612240565b9450611884565b6119348383611bcc565b61194160008484846119cd565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611bc1576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611a449033908990889088906004016121cc565b602060405180830381600087803b158015611a5e57600080fd5b505af1925050508015611aac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa9918101906120d9565b60015b611b76573d808015611ada576040519150601f19603f3d011682016040523d82523d6000602084013e611adf565b606091505b508051611b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506113fa565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161059e565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120805460019290611d0b908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d9a90612297565b90600052602060002090601f016020900481019282611dbc5760008555611e02565b82601f10611dd557805160ff1916838001178555611e02565b82800160010185558215611e02579182015b82811115611e02578251825591602001919060010190611de7565b50611e0e929150611e12565b5090565b5b80821115611e0e5760008155600101611e13565b600067ffffffffffffffff80841115611e4257611e42612396565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611e8857611e88612396565b81604052809350858152868686011115611ea157600080fd5b858560208301376000602087830101525050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611edf57600080fd5b919050565b600060208284031215611ef5578081fd5b6110bb82611ebb565b60008060408385031215611f10578081fd5b611f1983611ebb565b9150611f2760208401611ebb565b90509250929050565b600080600060608486031215611f44578081fd5b611f4d84611ebb565b9250611f5b60208501611ebb565b9150604084013590509250925092565b60008060008060808587031215611f80578081fd5b611f8985611ebb565b9350611f9760208601611ebb565b925060408501359150606085013567ffffffffffffffff811115611fb9578182fd5b8501601f81018713611fc9578182fd5b611fd887823560208401611e27565b91505092959194509250565b60008060408385031215611ff6578182fd5b611fff83611ebb565b915060208301358015158114612013578182fd5b809150509250929050565b60008060408385031215612030578182fd5b61203983611ebb565b946020939093013593505050565b60008060006040848603121561205b578283fd5b833567ffffffffffffffff80821115612072578485fd5b818601915086601f830112612085578485fd5b813581811115612093578586fd5b8760208260051b85010111156120a7578586fd5b6020928301989097509590910135949350505050565b6000602082840312156120ce578081fd5b81356110bb816123c5565b6000602082840312156120ea578081fd5b81516110bb816123c5565b600060208284031215612106578081fd5b813567ffffffffffffffff81111561211c578182fd5b8201601f8101841361212c578182fd5b6113fa84823560208401611e27565b60006020828403121561214c578081fd5b5035919050565b6000815180845261216b81602086016020860161226b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516121af81846020880161226b565b8351908301906121c381836020880161226b565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261220b6080830184612153565b9695505050505050565b6020815260006110bb6020830184612153565b6000821982111561223b5761223b612338565b500190565b60008261224f5761224f612367565b500490565b60008282101561226657612266612338565b500390565b60005b8381101561228657818101518382015260200161226e565b83811115610fac5750506000910152565b600181811c908216806122ab57607f821691505b602082108114156122e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561231d5761231d612338565b5060010190565b60008261233357612333612367565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000811681146111ef57600080fdfea264697066735822122080e505d241a569789e71e42088d838b4f34297880d0cd6a7c26d81206066b21464736f6c63430008040033466c6f7964204d617977656174686572202d20436f6d69637320436f6c6c656374696f6e
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101825760003560e01c806370a08231116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461030b578063e985e9c51461031e578063f2fde38b1461036757600080fd5b806395d89b41146102dd578063a22cb465146102e5578063b88d4fde146102f857600080fd5b806383b74baa116100bd57806383b74baa146102a457806387491c60146102b75780638da5cb5b146102bf57600080fd5b806370a0823114610289578063715018a61461029c57600080fd5b80631a2069101161013a57806355f804b31161011457806355f804b31461025b5780636352211e1461026e5780636c0360eb1461028157600080fd5b80631a2069101461022857806323b872dd1461023557806342842e0e1461024857600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc57806318160ddd1461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046120bd565b61037a565b60405190151581526020015b60405180910390f35b6101b761045f565b6040516101a69190612215565b6101d76101d236600461213b565b6104f1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a36600461201e565b6105d0565b005b61021a60085481565b6040519081526020016101a6565b60095461019a9060ff1681565b61020f610243366004611f30565b61075d565b61020f610256366004611f30565b6107fe565b61020f6102693660046120f5565b610819565b6101d761027c36600461213b565b6108b1565b6101b7610963565b61021a610297366004611ee4565b6109f1565b61020f610abf565b61020f6102b2366004612047565b610b4c565b61020f610d39565b60005473ffffffffffffffffffffffffffffffffffffffff166101d7565b6101b7610de4565b61020f6102f3366004611fe4565b610df3565b61020f610306366004611f6b565b610f0a565b6101b761031936600461213b565b610fb2565b61019a61032c366004611efe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b61020f610375366004611ee4565b6110c2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061040d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061045957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606001805461046e90612297565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90612297565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff166105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105db826108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161059e565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c257506106c2813361032c565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161059e565b61075883836111f2565b505050565b6107673382611292565b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610758838383611402565b61075883838360405180602001604052806000815250610f0a565b60005473ffffffffffffffffffffffffffffffffffffffff16331461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b80516108ad906007906020840190611d8e565b5050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e0000000000000000000000000000000000000000000000606482015260840161059e565b6007805461097090612297565b80601f016020809104026020016040519081016040528092919081815260200182805461099c90612297565b80156109e95780601f106109be576101008083540402835291602001916109e9565b820191906000526020600020905b8154815290600101906020018083116109cc57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216610a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f206164647265737300000000000000000000000000000000000000000000606482015260840161059e565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b610b4a6000611669565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600854600954839060ff16610c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d696e74696e6720686173206265656e20636c6f736564000000000000000000604482015260640161059e565b82610c498284612228565b14610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c7920636865636b206661696c656400000000000000000000000000604482015260640161059e565b60005b81811015610d2f57610d1d868683818110610cf7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610d0c9190611ee4565b84610d16816122eb565b95506116de565b80610d27816122eb565b915050610cb3565b5050600855505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606002805461046e90612297565b73ffffffffffffffffffffffffffffffffffffffff8216331415610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161059e565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f143383611292565b610fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f766564000000000000000000000000000000606482015260840161059e565b610fac848484846116f8565b50505050565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161059e565b600061107061179b565b9050600081511161109057604051806020016040528060008152506110bb565b8061109a846117aa565b6040516020016110ab92919061219d565b6040516020818303038152906040525b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff81166111e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161059e565b6111ef81611669565b50565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061124c826108b1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606482015260840161059e565b600061134e836108b1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806113bd57508373ffffffffffffffffffffffffffffffffffffffff166113a5846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b806113fa575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611422826108b1565b73ffffffffffffffffffffffffffffffffffffffff16146114c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e0000000000000000000000000000000000000000000000606482015260840161059e565b73ffffffffffffffffffffffffffffffffffffffff8216611567576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161059e565b6115726000826111f2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906115a8908490612254565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906115e3908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ad82826040518060200160405280600081525061192a565b611703848484611402565b61170f848484846119cd565b610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b60606007805461046e90612297565b6060816117ea57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561181457806117fe816122eb565b915061180d9050600a83612240565b91506117ee565b60008167ffffffffffffffff811115611856577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611880576020820181803683370190505b5090505b84156113fa57611895600183612254565b91506118a2600a86612324565b6118ad906030612228565b60f81b8183815181106118e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611923600a86612240565b9450611884565b6119348383611bcc565b61194160008484846119cd565b610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b600073ffffffffffffffffffffffffffffffffffffffff84163b15611bc1576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611a449033908990889088906004016121cc565b602060405180830381600087803b158015611a5e57600080fd5b505af1925050508015611aac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa9918101906120d9565b60015b611b76573d808015611ada576040519150601f19603f3d011682016040523d82523d6000602084013e611adf565b606091505b508051611b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161059e565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506113fa565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161059e565b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161059e565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120805460019290611d0b908490612228565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611d9a90612297565b90600052602060002090601f016020900481019282611dbc5760008555611e02565b82601f10611dd557805160ff1916838001178555611e02565b82800160010185558215611e02579182015b82811115611e02578251825591602001919060010190611de7565b50611e0e929150611e12565b5090565b5b80821115611e0e5760008155600101611e13565b600067ffffffffffffffff80841115611e4257611e42612396565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611e8857611e88612396565b81604052809350858152868686011115611ea157600080fd5b858560208301376000602087830101525050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611edf57600080fd5b919050565b600060208284031215611ef5578081fd5b6110bb82611ebb565b60008060408385031215611f10578081fd5b611f1983611ebb565b9150611f2760208401611ebb565b90509250929050565b600080600060608486031215611f44578081fd5b611f4d84611ebb565b9250611f5b60208501611ebb565b9150604084013590509250925092565b60008060008060808587031215611f80578081fd5b611f8985611ebb565b9350611f9760208601611ebb565b925060408501359150606085013567ffffffffffffffff811115611fb9578182fd5b8501601f81018713611fc9578182fd5b611fd887823560208401611e27565b91505092959194509250565b60008060408385031215611ff6578182fd5b611fff83611ebb565b915060208301358015158114612013578182fd5b809150509250929050565b60008060408385031215612030578182fd5b61203983611ebb565b946020939093013593505050565b60008060006040848603121561205b578283fd5b833567ffffffffffffffff80821115612072578485fd5b818601915086601f830112612085578485fd5b813581811115612093578586fd5b8760208260051b85010111156120a7578586fd5b6020928301989097509590910135949350505050565b6000602082840312156120ce578081fd5b81356110bb816123c5565b6000602082840312156120ea578081fd5b81516110bb816123c5565b600060208284031215612106578081fd5b813567ffffffffffffffff81111561211c578182fd5b8201601f8101841361212c578182fd5b6113fa84823560208401611e27565b60006020828403121561214c578081fd5b5035919050565b6000815180845261216b81602086016020860161226b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516121af81846020880161226b565b8351908301906121c381836020880161226b565b01949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261220b6080830184612153565b9695505050505050565b6020815260006110bb6020830184612153565b6000821982111561223b5761223b612338565b500190565b60008261224f5761224f612367565b500490565b60008282101561226657612266612338565b500390565b60005b8381101561228657818101518382015260200161226e565b83811115610fac5750506000910152565b600181811c908216806122ab57607f821691505b602082108114156122e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561231d5761231d612338565b5060010190565b60008261233357612333612367565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000811681146111ef57600080fdfea264697066735822122080e505d241a569789e71e42088d838b4f34297880d0cd6a7c26d81206066b21464736f6c63430008040033
Deployed Bytecode Sourcemap
16835:994:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8127:305;;;;;;:::i;:::-;;:::i;:::-;;;6727:14:1;;6720:22;6702:41;;6690:2;6675:18;8127:305:0;;;;;;;;8921:100;;;:::i;:::-;;;;;;;:::i;10034:221::-;;;;;;:::i;:::-;;:::i;:::-;;;5991:42:1;5979:55;;;5961:74;;5949:2;5934:18;10034:221:0;5916:125:1;9609:411:0;;;;;;:::i;:::-;;:::i;:::-;;16955:23;;;;;;;;;14206:25:1;;;14194:2;14179:18;16955:23:0;14161:76:1;16983:32:0;;;;;;;;;10756:296;;;;;;:::i;:::-;;:::i;11066:185::-;;;;;;:::i;:::-;;:::i;17200:90::-;;;;;;:::i;:::-;;:::i;8668:239::-;;;;;;:::i;:::-;;:::i;16892:58::-;;;:::i;8446:208::-;;;;;;:::i;:::-;;:::i;16347:94::-;;;:::i;17296:445::-;;;;;;:::i;:::-;;:::i;17747:77::-;;;:::i;16112:87::-;16158:7;16185:6;;;16112:87;;9035:104;;;:::i;10269:295::-;;;;;;:::i;:::-;;:::i;11265:328::-;;;;;;:::i;:::-;;:::i;9153:334::-;;;;;;:::i;:::-;;:::i;10578:164::-;;;;;;:::i;:::-;10699:25;;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10578:164;16455:192;;;;;;:::i;:::-;;:::i;8127:305::-;8229:4;8266:40;;;8281:25;8266:40;;:105;;-1:-1:-1;8323:48:0;;;8338:33;8323:48;8266:105;:158;;;-1:-1:-1;7475:25:0;7460:40;;;;8388:36;8246:178;8127:305;-1:-1:-1;;8127:305:0:o;8921:100::-;8975:13;9008:5;9001:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8921:100;:::o;10034:221::-;10110:7;12025:16;;;:7;:16;;;;;;:30;:16;10130:73;;;;;;;11494:2:1;10130:73:0;;;11476:21:1;11533:2;11513:18;;;11506:30;11572:34;11552:18;;;11545:62;11643:14;11623:18;;;11616:42;11675:19;;10130:73:0;;;;;;;;;-1:-1:-1;10223:24:0;;;;:15;:24;;;;;;;;;10034:221::o;9609:411::-;9690:13;9706:23;9721:7;9706:14;:23::i;:::-;9690:39;;9754:5;9748:11;;:2;:11;;;;9740:57;;;;;;;13442:2:1;9740:57:0;;;13424:21:1;13481:2;13461:18;;;13454:30;13520:34;13500:18;;;13493:62;13591:3;13571:18;;;13564:31;13612:19;;9740:57:0;13414:223:1;9740:57:0;5692:10;9832:21;;;;;:62;;-1:-1:-1;9857:37:0;9874:5;5692:10;10578:164;:::i;9857:37::-;9810:168;;;;;;;9887:2:1;9810:168:0;;;9869:21:1;9926:2;9906:18;;;9899:30;9965:34;9945:18;;;9938:62;10036:26;10016:18;;;10009:54;10080:19;;9810:168:0;9859:246:1;9810:168:0;9991:21;10000:2;10004:7;9991:8;:21::i;:::-;9609:411;;;:::o;10756:296::-;10908:41;5692:10;10941:7;10908:18;:41::i;:::-;10900:103;;;;;;;13844:2:1;10900:103:0;;;13826:21:1;13883:2;13863:18;;;13856:30;13922:34;13902:18;;;13895:62;13993:19;13973:18;;;13966:47;14030:19;;10900:103:0;13816:239:1;10900:103:0;11016:28;11026:4;11032:2;11036:7;11016:9;:28::i;11066:185::-;11204:39;11221:4;11227:2;11231:7;11204:39;;;;;;;;;;;;:16;:39::i;17200:90::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;17268:16;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;17200:90:::0;:::o;8668:239::-;8740:7;8776:16;;;:7;:16;;;;;;;;8811:19;8803:73;;;;;;;10723:2:1;8803:73:0;;;10705:21:1;10762:2;10742:18;;;10735:30;10801:34;10781:18;;;10774:62;10872:11;10852:18;;;10845:39;10901:19;;8803:73:0;10695:231:1;16892:58:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8446:208::-;8518:7;8546:19;;;8538:74;;;;;;;10312:2:1;8538:74:0;;;10294:21:1;10351:2;10331:18;;;10324:30;10390:34;10370:18;;;10363:62;10461:12;10441:18;;;10434:40;10491:19;;8538:74:0;10284:232:1;8538:74:0;-1:-1:-1;8630:16:0;;;;;;:9;:16;;;;;;;8446:208::o;16347:94::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;16412:21:::1;16430:1;16412:9;:21::i;:::-;16347:94::o:0;17296:445::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;17416:11:::1;::::0;17487:13:::1;::::0;17451:12;;17487:13:::1;;17479:49;;;::::0;::::1;::::0;;8768:2:1;17479:49:0::1;::::0;::::1;8750:21:1::0;8807:2;8787:18;;;8780:30;8846:25;8826:18;;;8819:53;8889:18;;17479:49:0::1;8740:173:1::0;17479:49:0::1;17565:19:::0;17543:18:::1;17552:9:::0;17543:6;:18:::1;:::i;:::-;:41;17535:73;;;::::0;::::1;::::0;;13094:2:1;17535:73:0::1;::::0;::::1;13076:21:1::0;13133:2;13113:18;;;13106:30;13172:21;13152:18;;;13145:49;13211:18;;17535:73:0::1;13066:169:1::0;17535:73:0::1;17622:6;17617:90;17638:9;17634:1;:13;17617:90;;;17663:36;17673:12;;17686:1;17673:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17690:8:::0;::::1;::::0;::::1;:::i;:::-;;;17663:9;:36::i;:::-;17649:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17617:90;;;-1:-1:-1::0;;17715:11:0::1;:20:::0;-1:-1:-1;;;17296:445:0:o;17747:77::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;17797:13:::1;:21:::0;;;::::1;::::0;;17747:77::o;9035:104::-;9091:13;9124:7;9117:14;;;;;:::i;10269:295::-;10372:24;;;5692:10;10372:24;;10364:62;;;;;;;9120:2:1;10364:62:0;;;9102:21:1;9159:2;9139:18;;;9132:30;9198:27;9178:18;;;9171:55;9243:18;;10364:62:0;9092:175:1;10364:62:0;5692:10;10439:32;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;10508:48;;6702:41:1;;;10439:42:0;;5692:10;10508:48;;6675:18:1;10508:48:0;;;;;;;10269:295;;:::o;11265:328::-;11440:41;5692:10;11473:7;11440:18;:41::i;:::-;11432:103;;;;;;;13844:2:1;11432:103:0;;;13826:21:1;13883:2;13863:18;;;13856:30;13922:34;13902:18;;;13895:62;13993:19;13973:18;;;13966:47;14030:19;;11432:103:0;13816:239:1;11432:103:0;11546:39;11560:4;11566:2;11570:7;11579:5;11546:13;:39::i;:::-;11265:328;;;;:::o;9153:334::-;12001:4;12025:16;;;:7;:16;;;;;;9226:13;;12025:30;:16;9252:76;;;;;;;12678:2:1;9252:76:0;;;12660:21:1;12717:2;12697:18;;;12690:30;12756:34;12736:18;;;12729:62;12827:17;12807:18;;;12800:45;12862:19;;9252:76:0;12650:237:1;9252:76:0;9341:21;9365:10;:8;:10::i;:::-;9341:34;;9417:1;9399:7;9393:21;:25;:86;;;;;;;;;;;;;;;;;9445:7;9454:18;:7;:16;:18::i;:::-;9428:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9393:86;9386:93;9153:334;-1:-1:-1;;;9153:334:0:o;16455:192::-;16158:7;16185:6;16253:23;16185:6;5692:10;16253:23;16245:68;;;;;;;11907:2:1;16245:68:0;;;11889:21:1;;;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;12037:18;;16245:68:0;11879:182:1;16245:68:0;16544:22:::1;::::0;::::1;16536:73;;;::::0;::::1;::::0;;7599:2:1;16536:73:0::1;::::0;::::1;7581:21:1::0;7638:2;7618:18;;;7611:30;7677:34;7657:18;;;7650:62;7748:8;7728:18;;;7721:36;7774:19;;16536:73:0::1;7571:228:1::0;16536:73:0::1;16620:19;16630:8;16620:9;:19::i;:::-;16455:192:::0;:::o;14200:174::-;14275:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;14329:23;14275:24;14329:14;:23::i;:::-;14320:46;;;;;;;;;;;;14200:174;;:::o;12077:348::-;12170:4;12025:16;;;:7;:16;;;;;;:30;:16;12187:73;;;;;;;9474:2:1;12187:73:0;;;9456:21:1;9513:2;9493:18;;;9486:30;9552:34;9532:18;;;9525:62;9623:14;9603:18;;;9596:42;9655:19;;12187:73:0;9446:234:1;12187:73:0;12271:13;12287:23;12302:7;12287:14;:23::i;:::-;12271:39;;12340:5;12329:16;;:7;:16;;;:51;;;;12373:7;12349:31;;:20;12361:7;12349:11;:20::i;:::-;:31;;;12329:51;:87;;;-1:-1:-1;10699:25:0;;;;10675:4;10699:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;12384:32;12321:96;12077:348;-1:-1:-1;;;;12077:348:0:o;13650:536::-;13809:4;13782:31;;:23;13797:7;13782:14;:23::i;:::-;:31;;;13774:85;;;;;;;12268:2:1;13774:85:0;;;12250:21:1;12307:2;12287:18;;;12280:30;12346:34;12326:18;;;12319:62;12417:11;12397:18;;;12390:39;12446:19;;13774:85:0;12240:231:1;13774:85:0;13878:16;;;13870:65;;;;;;;8363:2:1;13870:65:0;;;8345:21:1;8402:2;8382:18;;;8375:30;8441:34;8421:18;;;8414:62;8512:6;8492:18;;;8485:34;8536:19;;13870:65:0;8335:226:1;13870:65:0;14010:29;14027:1;14031:7;14010:8;:29::i;:::-;14052:15;;;;;;;:9;:15;;;;;:20;;14071:1;;14052:15;:20;;14071:1;;14052:20;:::i;:::-;;;;-1:-1:-1;;14083:13:0;;;;;;;:9;:13;;;;;:18;;14100:1;;14083:13;:18;;14100:1;;14083:18;:::i;:::-;;;;-1:-1:-1;;14112:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;;14151:27;;14112:16;;14151:27;;;;;;;13650:536;;;:::o;16655:173::-;16711:16;16730:6;;;16747:17;;;;;;;;;;16780:40;;16730:6;;;;;;;16780:40;;16711:16;16780:40;16655:173;;:::o;12439:110::-;12515:26;12525:2;12529:7;12515:26;;;;;;;;;;;;:9;:26::i;11607:315::-;11764:28;11774:4;11780:2;11784:7;11764:9;:28::i;:::-;11811:48;11834:4;11840:2;11844:7;11853:5;11811:22;:48::i;:::-;11803:111;;;;;;;7180:2:1;11803:111:0;;;7162:21:1;7219:2;7199:18;;;7192:30;7258:34;7238:18;;;7231:62;7329:20;7309:18;;;7302:48;7367:19;;11803:111:0;7152:240:1;17100:94:0;17152:13;17181:7;17174:14;;;;;:::i;5922:554::-;5978:13;6030:10;6026:53;;-1:-1:-1;;6057:10:0;;;;;;;;;;;;;;;;;;5922:554::o;6026:53::-;6104:5;6089:12;6145:78;6152:9;;6145:78;;6178:8;;;;:::i;:::-;;-1:-1:-1;6201:10:0;;-1:-1:-1;6209:2:0;6201:10;;:::i;:::-;;;6145:78;;;6233:19;6265:6;6255:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6255:17:0;;6233:39;;6283:154;6290:10;;6283:154;;6317:11;6327:1;6317:11;;:::i;:::-;;-1:-1:-1;6386:10:0;6394:2;6386:5;:10;:::i;:::-;6373:24;;:2;:24;:::i;:::-;6360:39;;6343:6;6350;6343:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;-1:-1:-1;6414:11:0;6423:2;6414:11;;:::i;:::-;;;6283:154;;12563:321;12693:18;12699:2;12703:7;12693:5;:18::i;:::-;12744:54;12775:1;12779:2;12783:7;12792:5;12744:22;:54::i;:::-;12722:154;;;;;;;7180:2:1;12722:154:0;;;7162:21:1;7219:2;7199:18;;;7192:30;7258:34;7238:18;;;7231:62;7329:20;7309:18;;;7302:48;7367:19;;12722:154:0;7152:240:1;14388:803:0;14543:4;14564:13;;;2106:20;2154:8;14560:624;;14600:72;;;;;:36;;;;;;:72;;5692:10;;14651:4;;14657:7;;14666:5;;14600:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14600:72:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14596:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14846:13:0;;14842:272;;14889:60;;;;;7180:2:1;14889:60:0;;;7162:21:1;7219:2;7199:18;;;7192:30;7258:34;7238:18;;;7231:62;7329:20;7309:18;;;7302:48;7367:19;;14889:60:0;7152:240:1;14842:272:0;15064:6;15058:13;15049:6;15045:2;15041:15;15034:38;14596:533;14723:55;;14733:45;14723:55;;-1:-1:-1;14716:62:0;;14560:624;-1:-1:-1;15168:4:0;14388:803;;;;;;:::o;12898:382::-;12978:16;;;12970:61;;;;;;;11133:2:1;12970:61:0;;;11115:21:1;;;11152:18;;;11145:30;11211:34;11191:18;;;11184:62;11263:18;;12970:61:0;11105:182:1;12970:61:0;12001:4;12025:16;;;:7;:16;;;;;;:30;:16;:30;13042:58;;;;;;;8006:2:1;13042:58:0;;;7988:21:1;8045:2;8025:18;;;8018:30;8084;8064:18;;;8057:58;8132:18;;13042:58:0;7978:178:1;13042:58:0;13171:13;;;;;;;:9;:13;;;;;:18;;13188:1;;13171:13;:18;;13188:1;;13171:18;:::i;:::-;;;;-1:-1:-1;;13200:16:0;;;;:7;:16;;;;;;:21;;;;;;;;;;;;;13239:33;;13200:16;;;13239:33;;13200:16;;13239:33;12898:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:690:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;289:2;283:9;355:2;343:15;;194:66;339:24;;;365:2;335:33;331:42;319:55;;;389:18;;;409:22;;;386:46;383:2;;;435:18;;:::i;:::-;475:10;471:2;464:22;504:6;495:15;;534:6;526;519:22;574:3;565:6;560:3;556:16;553:25;550:2;;;591:1;588;581:12;550:2;641:6;636:3;629:4;621:6;617:17;604:44;696:1;689:4;680:6;672;668:19;664:30;657:41;;;;88:616;;;;;:::o;709:196::-;777:20;;837:42;826:54;;816:65;;806:2;;895:1;892;885:12;806:2;758:147;;;:::o;910:196::-;969:6;1022:2;1010:9;1001:7;997:23;993:32;990:2;;;1043:6;1035;1028:22;990:2;1071:29;1090:9;1071:29;:::i;1111:270::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:2;;;1261:6;1253;1246:22;1208:2;1289:29;1308:9;1289:29;:::i;:::-;1279:39;;1337:38;1371:2;1360:9;1356:18;1337:38;:::i;:::-;1327:48;;1198:183;;;;;:::o;1386:338::-;1463:6;1471;1479;1532:2;1520:9;1511:7;1507:23;1503:32;1500:2;;;1553:6;1545;1538:22;1500:2;1581:29;1600:9;1581:29;:::i;:::-;1571:39;;1629:38;1663:2;1652:9;1648:18;1629:38;:::i;:::-;1619:48;;1714:2;1703:9;1699:18;1686:32;1676:42;;1490:234;;;;;:::o;1729:696::-;1824:6;1832;1840;1848;1901:3;1889:9;1880:7;1876:23;1872:33;1869:2;;;1923:6;1915;1908:22;1869:2;1951:29;1970:9;1951:29;:::i;:::-;1941:39;;1999:38;2033:2;2022:9;2018:18;1999:38;:::i;:::-;1989:48;;2084:2;2073:9;2069:18;2056:32;2046:42;;2139:2;2128:9;2124:18;2111:32;2166:18;2158:6;2155:30;2152:2;;;2203:6;2195;2188:22;2152:2;2231:22;;2284:4;2276:13;;2272:27;-1:-1:-1;2262:2:1;;2318:6;2310;2303:22;2262:2;2346:73;2411:7;2406:2;2393:16;2388:2;2384;2380:11;2346:73;:::i;:::-;2336:83;;;1859:566;;;;;;;:::o;2430:367::-;2495:6;2503;2556:2;2544:9;2535:7;2531:23;2527:32;2524:2;;;2577:6;2569;2562:22;2524:2;2605:29;2624:9;2605:29;:::i;:::-;2595:39;;2684:2;2673:9;2669:18;2656:32;2731:5;2724:13;2717:21;2710:5;2707:32;2697:2;;2758:6;2750;2743:22;2697:2;2786:5;2776:15;;;2514:283;;;;;:::o;2802:264::-;2870:6;2878;2931:2;2919:9;2910:7;2906:23;2902:32;2899:2;;;2952:6;2944;2937:22;2899:2;2980:29;2999:9;2980:29;:::i;:::-;2970:39;3056:2;3041:18;;;;3028:32;;-1:-1:-1;;;2889:177:1:o;3071:739::-;3166:6;3174;3182;3235:2;3223:9;3214:7;3210:23;3206:32;3203:2;;;3256:6;3248;3241:22;3203:2;3301:9;3288:23;3330:18;3371:2;3363:6;3360:14;3357:2;;;3392:6;3384;3377:22;3357:2;3435:6;3424:9;3420:22;3410:32;;3480:7;3473:4;3469:2;3465:13;3461:27;3451:2;;3507:6;3499;3492:22;3451:2;3552;3539:16;3578:2;3570:6;3567:14;3564:2;;;3599:6;3591;3584:22;3564:2;3659:7;3652:4;3642:6;3639:1;3635:14;3631:2;3627:23;3623:34;3620:47;3617:2;;;3685:6;3677;3670:22;3617:2;3721:4;3713:13;;;;3745:6;;-1:-1:-1;3783:20:1;;;;3770:34;;3193:617;-1:-1:-1;;;;3193:617:1:o;3815:255::-;3873:6;3926:2;3914:9;3905:7;3901:23;3897:32;3894:2;;;3947:6;3939;3932:22;3894:2;3991:9;3978:23;4010:30;4034:5;4010:30;:::i;4075:259::-;4144:6;4197:2;4185:9;4176:7;4172:23;4168:32;4165:2;;;4218:6;4210;4203:22;4165:2;4255:9;4249:16;4274:30;4298:5;4274:30;:::i;4339:480::-;4408:6;4461:2;4449:9;4440:7;4436:23;4432:32;4429:2;;;4482:6;4474;4467:22;4429:2;4527:9;4514:23;4560:18;4552:6;4549:30;4546:2;;;4597:6;4589;4582:22;4546:2;4625:22;;4678:4;4670:13;;4666:27;-1:-1:-1;4656:2:1;;4712:6;4704;4697:22;4656:2;4740:73;4805:7;4800:2;4787:16;4782:2;4778;4774:11;4740:73;:::i;4824:190::-;4883:6;4936:2;4924:9;4915:7;4911:23;4907:32;4904:2;;;4957:6;4949;4942:22;4904:2;-1:-1:-1;4985:23:1;;4894:120;-1:-1:-1;4894:120:1:o;5019:316::-;5060:3;5098:5;5092:12;5125:6;5120:3;5113:19;5141:63;5197:6;5190:4;5185:3;5181:14;5174:4;5167:5;5163:16;5141:63;:::i;:::-;5249:2;5237:15;5254:66;5233:88;5224:98;;;;5324:4;5220:109;;5068:267;-1:-1:-1;;5068:267:1:o;5340:470::-;5519:3;5557:6;5551:13;5573:53;5619:6;5614:3;5607:4;5599:6;5595:17;5573:53;:::i;:::-;5689:13;;5648:16;;;;5711:57;5689:13;5648:16;5745:4;5733:17;;5711:57;:::i;:::-;5784:20;;5527:283;-1:-1:-1;;;;5527:283:1:o;6046:511::-;6240:4;6269:42;6350:2;6342:6;6338:15;6327:9;6320:34;6402:2;6394:6;6390:15;6385:2;6374:9;6370:18;6363:43;;6442:6;6437:2;6426:9;6422:18;6415:34;6485:3;6480:2;6469:9;6465:18;6458:31;6506:45;6546:3;6535:9;6531:19;6523:6;6506:45;:::i;:::-;6498:53;6249:308;-1:-1:-1;;;;;;6249:308:1:o;6754:219::-;6903:2;6892:9;6885:21;6866:4;6923:44;6963:2;6952:9;6948:18;6940:6;6923:44;:::i;14242:128::-;14282:3;14313:1;14309:6;14306:1;14303:13;14300:2;;;14319:18;;:::i;:::-;-1:-1:-1;14355:9:1;;14290:80::o;14375:120::-;14415:1;14441;14431:2;;14446:18;;:::i;:::-;-1:-1:-1;14480:9:1;;14421:74::o;14500:125::-;14540:4;14568:1;14565;14562:8;14559:2;;;14573:18;;:::i;:::-;-1:-1:-1;14610:9:1;;14549:76::o;14630:258::-;14702:1;14712:113;14726:6;14723:1;14720:13;14712:113;;;14802:11;;;14796:18;14783:11;;;14776:39;14748:2;14741:10;14712:113;;;14843:6;14840:1;14837:13;14834:2;;;-1:-1:-1;;14878:1:1;14860:16;;14853:27;14683:205::o;14893:437::-;14972:1;14968:12;;;;15015;;;15036:2;;15090:4;15082:6;15078:17;15068:27;;15036:2;15143;15135:6;15132:14;15112:18;15109:38;15106:2;;;15180:77;15177:1;15170:88;15281:4;15278:1;15271:15;15309:4;15306:1;15299:15;15106:2;;14948:382;;;:::o;15335:195::-;15374:3;15405:66;15398:5;15395:77;15392:2;;;15475:18;;:::i;:::-;-1:-1:-1;15522:1:1;15511:13;;15382:148::o;15535:112::-;15567:1;15593;15583:2;;15598:18;;:::i;:::-;-1:-1:-1;15632:9:1;;15573:74::o;15652:184::-;15704:77;15701:1;15694:88;15801:4;15798:1;15791:15;15825:4;15822:1;15815:15;15841:184;15893:77;15890:1;15883:88;15990:4;15987:1;15980:15;16014:4;16011:1;16004:15;16030:184;16082:77;16079:1;16072:88;16179:4;16176:1;16169:15;16203:4;16200:1;16193:15;16219:177;16304:66;16297:5;16293:78;16286:5;16283:89;16273:2;;16386:1;16383;16376:12
Swarm Source
ipfs://80e505d241a569789e71e42088d838b4f34297880d0cd6a7c26d81206066b214
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.