ERC-721
NFT
Overview
Max Total Supply
3,786 TPA
Holders
1,151
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
6 TPALoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ThePenguinAcademy
Compiler Version
v0.8.8+commit.dddeac2f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-20 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (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"); // solhint-disable-next-line avoid-low-level-calls (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) { // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library Strings { bytes16 private constant alphabet = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } 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] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } 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 IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } 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); } interface IERC721Receiver { function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 { //solhint-disable-next-line max-line-length 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 { // solhint-disable-next-line no-inline-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } } abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { mapping(address => mapping(uint256 => uint256)) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index delete _allTokensIndex[tokenId]; _allTokens.pop(); } } contract OwnableDelegateProxy {} contract ProxyRegistry { mapping(address => OwnableDelegateProxy) public proxies; } contract PenguinFightClub { function tokensOfOwner(address _owner) external view returns(uint256[] memory ) {} } contract ThePenguinAcademy is ERC721Enumerable, Ownable { using SafeMath for uint256; using Strings for uint256; address proxyRegistryAddress; mapping (uint256 => string) private _tokenURIs; string private BASE_URI = "https://eggmint.penguinfightclub.com/api/index.php?token_id="; uint256 public MAX_TOKENS = 10000; bool public MINTABLE = false; mapping(uint256 => bool) public claimedTokens; PenguinFightClub pfcContract; constructor(address _proxyRegistryAddress) ERC721("ThePenguinAcademy", "TPA") { proxyRegistryAddress = _proxyRegistryAddress; } function setPfcContract(address _pfcContract) external onlyOwner { pfcContract = PenguinFightClub(_pfcContract); } function claimTokens(uint256 qty) external { require(MINTABLE, "These tokens are not available yet."); uint256[] memory ownersTokens = pfcContract.tokensOfOwner(msg.sender); uint256 _tokensOwned = ownersTokens.length; uint256 _tokensClaimed = 0; for(uint i = 0; i < _tokensOwned; i++) { if(!claimedTokens[ownersTokens[i]]){ _tokensClaimed++; claimedTokens[ownersTokens[i]] = true; uint mintIndex = totalSupply(); if (totalSupply() < MAX_TOKENS) { _safeMint(msg.sender, mintIndex); } if(_tokensClaimed == qty){ break; } } } } function enableMinting() external onlyOwner { MINTABLE = true; } function disableMinting() external onlyOwner { MINTABLE = false; } function changeTokenURI(uint256 tokenId, string memory _tokenURI) external onlyOwner { _setTokenURI(tokenId, _tokenURI); } function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } function withdrawBalance(address wallet) external onlyOwner { uint256 balance = address(this).balance; payable(wallet).transfer(balance); } function setBaseURI(string memory baseURI) external onlyOwner { BASE_URI = baseURI; } function _baseURI() internal view override returns (string memory) { return BASE_URI; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "Token does not exist"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); if (bytes(base).length == 0) { return _tokenURI; } if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return string(abi.encodePacked(base, tokenId.toString())); } function isApprovedForAll(address owner, address operator) override public view returns (bool) { ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress); if (address(proxyRegistry.proxies(owner)) == operator) { return true; } return super.isApprovedForAll(owner, operator); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_proxyRegistryAddress","type":"address"}],"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":[],"name":"MAX_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTABLE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"changeTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMinting","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":"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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pfcContract","type":"address"}],"name":"setPfcContract","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"withdrawBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e0604052603c608081815290620024db60a03980516200002991600d9160209091019062000161565b50612710600e55600f805460ff191690553480156200004757600080fd5b5060405162002517380380620025178339810160408190526200006a9162000207565b604080518082018252601181527054686550656e6775696e41636164656d7960781b60208083019182528351808501909452600384526254504160e81b908401528151919291620000be9160009162000161565b508051620000d490600190602084019062000161565b5050506000620000e96200015d60201b60201c565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b0319166001600160a01b039290921691909117905562000276565b3390565b8280546200016f9062000239565b90600052602060002090601f016020900481019282620001935760008555620001de565b82601f10620001ae57805160ff1916838001178555620001de565b82800160010185558215620001de579182015b82811115620001de578251825591602001919060010190620001c1565b50620001ec929150620001f0565b5090565b5b80821115620001ec5760008155600101620001f1565b6000602082840312156200021a57600080fd5b81516001600160a01b03811681146200023257600080fd5b9392505050565b600181811c908216806200024e57607f821691505b602082108114156200027057634e487b7160e01b600052602260045260246000fd5b50919050565b61225580620002866000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063756af45f11610104578063c87b56dd116100a2578063e985e9c511610071578063e985e9c5146103c1578063f2fde38b146103d4578063f30ec0ec146103e7578063f47c84c5146103f457600080fd5b8063c87b56dd14610370578063e1890ee114610383578063e5a342a314610396578063e797ec1b146103b957600080fd5b80638da5cb5b116100de5780638da5cb5b1461033157806395d89b4114610342578063a22cb4651461034a578063b88d4fde1461035d57600080fd5b8063756af45f146103035780637e5cd5c1146103165780637fb3a9a21461031e57600080fd5b806342842e0e1161017157806355f804b31161014b57806355f804b3146102c25780636352211e146102d557806370a08231146102e8578063715018a6146102fb57600080fd5b806342842e0e1461028957806346e04a2f1461029c5780634f6ccce7146102af57600080fd5b8063095ea7b3116101ad578063095ea7b31461023c57806318160ddd1461025157806323b872dd146102635780632f745c591461027657600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611b88565b6103fd565b60405190151581526020015b60405180910390f35b610204610428565b6040516101f39190611c04565b61022461021f366004611c17565b6104ba565b6040516001600160a01b0390911681526020016101f3565b61024f61024a366004611c45565b610554565b005b6008545b6040519081526020016101f3565b61024f610271366004611c71565b61066a565b610255610284366004611c45565b61069b565b61024f610297366004611c71565b610731565b61024f6102aa366004611c17565b61074c565b6102556102bd366004611c17565b610917565b61024f6102d0366004611d71565b6109aa565b6102246102e3366004611c17565b6109eb565b6102556102f6366004611da6565b610a62565b61024f610ae9565b61024f610311366004611da6565b610b5d565b61024f610bbf565b61024f61032c366004611dc3565b610bf5565b600a546001600160a01b0316610224565b610204610c29565b61024f610358366004611e0a565b610c38565b61024f61036b366004611e48565b610cfd565b61020461037e366004611c17565b610d35565b61024f610391366004611da6565b610e96565b6101e76103a4366004611c17565b60106020526000908152604090205460ff1681565b61024f610ee2565b6101e76103cf366004611ec8565b610f1b565b61024f6103e2366004611da6565b610feb565b600f546101e79060ff1681565b610255600e5481565b60006001600160e01b0319821663780e9d6360e01b14806104225750610422826110d6565b92915050565b60606000805461043790611ef6565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611ef6565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166105385760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061055f826109eb565b9050806001600160a01b0316836001600160a01b031614156105cd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161052f565b336001600160a01b03821614806105e957506105e98133610f1b565b61065b5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161052f565b6106658383611126565b505050565b6106743382611194565b6106905760405162461bcd60e51b815260040161052f90611f31565b610665838383611263565b60006106a683610a62565b82106107085760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161052f565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61066583838360405180602001604052806000815250610cfd565b600f5460ff166107aa5760405162461bcd60e51b815260206004820152602360248201527f546865736520746f6b656e7320617265206e6f7420617661696c61626c65207960448201526232ba1760e91b606482015260840161052f565b601154604051632118854760e21b81523360048201526000916001600160a01b031690638462151c9060240160006040518083038186803b1580156107ee57600080fd5b505afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082a9190810190611f82565b80519091506000805b82811015610910576010600085838151811061085157610851612028565b60209081029190910181015182528101919091526040016000205460ff166108fe578161087d81612054565b92505060016010600086848151811061089857610898612028565b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006108d060085490565b9050600e546108de60085490565b10156108ee576108ee338261140e565b858314156108fc5750610910565b505b8061090881612054565b915050610833565b5050505050565b600061092260085490565b82106109855760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161052f565b6008828154811061099857610998612028565b90600052602060002001549050919050565b600a546001600160a01b031633146109d45760405162461bcd60e51b815260040161052f9061206f565b80516109e790600d906020840190611ad6565b5050565b6000818152600260205260408120546001600160a01b0316806104225760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161052f565b60006001600160a01b038216610acd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161052f565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610b135760405162461bcd60e51b815260040161052f9061206f565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546001600160a01b03163314610b875760405162461bcd60e51b815260040161052f9061206f565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610665573d6000803e3d6000fd5b600a546001600160a01b03163314610be95760405162461bcd60e51b815260040161052f9061206f565b600f805460ff19169055565b600a546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161052f9061206f565b6109e78282611428565b60606001805461043790611ef6565b6001600160a01b038216331415610c915760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161052f565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d073383611194565b610d235760405162461bcd60e51b815260040161052f90611f31565b610d2f848484846114c0565b50505050565b6000818152600260205260409020546060906001600160a01b0316610d935760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b604482015260640161052f565b6000828152600c602052604081208054610dac90611ef6565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd890611ef6565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b505050505090506000610e366114f3565b9050805160001415610e49575092915050565b815115610e7b578082604051602001610e639291906120a4565b60405160208183030381529060405292505050919050565b80610e8585611502565b604051602001610e639291906120a4565b600a546001600160a01b03163314610ec05760405162461bcd60e51b815260040161052f9061206f565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b03163314610f0c5760405162461bcd60e51b815260040161052f9061206f565b600f805460ff19166001179055565b600b5460405163c455279160e01b81526001600160a01b03848116600483015260009281169190841690829063c45527919060240160206040518083038186803b158015610f6857600080fd5b505afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906120d3565b6001600160a01b03161415610fb9576001915050610422565b6001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b949350505050565b600a546001600160a01b031633146110155760405162461bcd60e51b815260040161052f9061206f565b6001600160a01b03811661107a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052f565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b031982166380ac58cd60e01b148061110757506001600160e01b03198216635b5e139f60e01b145b8061042257506301ffc9a760e01b6001600160e01b0319831614610422565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061115b826109eb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661120d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161052f565b6000611218836109eb565b9050806001600160a01b0316846001600160a01b031614806112535750836001600160a01b0316611248846104ba565b6001600160a01b0316145b80610fe35750610fe38185610f1b565b826001600160a01b0316611276826109eb565b6001600160a01b0316146112de5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161052f565b6001600160a01b0382166113405760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161052f565b61134b838383611600565b611356600082611126565b6001600160a01b038316600090815260036020526040812080546001929061137f9084906120f0565b90915550506001600160a01b03821660009081526003602052604081208054600192906113ad908490612107565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109e78282604051806020016040528060008152506116b8565b6000828152600260205260409020546001600160a01b03166114a15760405162461bcd60e51b815260206004820152602c60248201527f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161052f565b6000828152600c60209081526040909120825161066592840190611ad6565b6114cb848484611263565b6114d7848484846116eb565b610d2f5760405162461bcd60e51b815260040161052f9061211f565b6060600d805461043790611ef6565b6060816115265750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611550578061153a81612054565b91506115499050600a83612187565b915061152a565b60008167ffffffffffffffff81111561156b5761156b611cb2565b6040519080825280601f01601f191660200182016040528015611595576020820181803683370190505b5090505b8415610fe3576115aa6001836120f0565b91506115b7600a8661219b565b6115c2906030612107565b60f81b8183815181106115d7576115d7612028565b60200101906001600160f81b031916908160001a9053506115f9600a86612187565b9450611599565b6001600160a01b03831661165b5761165681600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61167e565b816001600160a01b0316836001600160a01b03161461167e5761167e83826117f8565b6001600160a01b0382166116955761066581611895565b826001600160a01b0316826001600160a01b031614610665576106658282611944565b6116c28383611988565b6116cf60008484846116eb565b6106655760405162461bcd60e51b815260040161052f9061211f565b60006001600160a01b0384163b156117ed57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061172f9033908990889088906004016121af565b602060405180830381600087803b15801561174957600080fd5b505af1925050508015611779575060408051601f3d908101601f19168201909252611776918101906121ec565b60015b6117d3573d8080156117a7576040519150601f19603f3d011682016040523d82523d6000602084013e6117ac565b606091505b5080516117cb5760405162461bcd60e51b815260040161052f9061211f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610fe3565b506001949350505050565b6000600161180584610a62565b61180f91906120f0565b600083815260076020526040902054909150808214611862576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906118a7906001906120f0565b600083815260096020526040812054600880549394509092849081106118cf576118cf612028565b9060005260206000200154905080600883815481106118f0576118f0612028565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061192857611928612209565b6001900381819060005260206000200160009055905550505050565b600061194f83610a62565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166119de5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161052f565b6000818152600260205260409020546001600160a01b031615611a435760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161052f565b611a4f60008383611600565b6001600160a01b0382166000908152600360205260408120805460019290611a78908490612107565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611ae290611ef6565b90600052602060002090601f016020900481019282611b045760008555611b4a565b82601f10611b1d57805160ff1916838001178555611b4a565b82800160010185558215611b4a579182015b82811115611b4a578251825591602001919060010190611b2f565b50611b56929150611b5a565b5090565b5b80821115611b565760008155600101611b5b565b6001600160e01b031981168114611b8557600080fd5b50565b600060208284031215611b9a57600080fd5b8135611ba581611b6f565b9392505050565b60005b83811015611bc7578181015183820152602001611baf565b83811115610d2f5750506000910152565b60008151808452611bf0816020860160208601611bac565b601f01601f19169290920160200192915050565b602081526000611ba56020830184611bd8565b600060208284031215611c2957600080fd5b5035919050565b6001600160a01b0381168114611b8557600080fd5b60008060408385031215611c5857600080fd5b8235611c6381611c30565b946020939093013593505050565b600080600060608486031215611c8657600080fd5b8335611c9181611c30565b92506020840135611ca181611c30565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611cf157611cf1611cb2565b604052919050565b600067ffffffffffffffff831115611d1357611d13611cb2565b611d26601f8401601f1916602001611cc8565b9050828152838383011115611d3a57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611d6257600080fd5b611ba583833560208501611cf9565b600060208284031215611d8357600080fd5b813567ffffffffffffffff811115611d9a57600080fd5b610fe384828501611d51565b600060208284031215611db857600080fd5b8135611ba581611c30565b60008060408385031215611dd657600080fd5b82359150602083013567ffffffffffffffff811115611df457600080fd5b611e0085828601611d51565b9150509250929050565b60008060408385031215611e1d57600080fd5b8235611e2881611c30565b915060208301358015158114611e3d57600080fd5b809150509250929050565b60008060008060808587031215611e5e57600080fd5b8435611e6981611c30565b93506020850135611e7981611c30565b925060408501359150606085013567ffffffffffffffff811115611e9c57600080fd5b8501601f81018713611ead57600080fd5b611ebc87823560208401611cf9565b91505092959194509250565b60008060408385031215611edb57600080fd5b8235611ee681611c30565b91506020830135611e3d81611c30565b600181811c90821680611f0a57607f821691505b60208210811415611f2b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60006020808385031215611f9557600080fd5b825167ffffffffffffffff80821115611fad57600080fd5b818501915085601f830112611fc157600080fd5b815181811115611fd357611fd3611cb2565b8060051b9150611fe4848301611cc8565b8181529183018401918481019088841115611ffe57600080fd5b938501935b8385101561201c57845182529385019390850190612003565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156120685761206861203e565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600083516120b6818460208801611bac565b8351908301906120ca818360208801611bac565b01949350505050565b6000602082840312156120e557600080fd5b8151611ba581611c30565b6000828210156121025761210261203e565b500390565b6000821982111561211a5761211a61203e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261219657612196612171565b500490565b6000826121aa576121aa612171565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906121e290830184611bd8565b9695505050505050565b6000602082840312156121fe57600080fd5b8151611ba581611b6f565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d0fc9dec8a03f99d17f24fc3914ca399ade5cccc0541a185f4645a7c778fcab664736f6c6343000808003368747470733a2f2f6567676d696e742e70656e6775696e6669676874636c75622e636f6d2f6170692f696e6465782e7068703f746f6b656e5f69643d000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063756af45f11610104578063c87b56dd116100a2578063e985e9c511610071578063e985e9c5146103c1578063f2fde38b146103d4578063f30ec0ec146103e7578063f47c84c5146103f457600080fd5b8063c87b56dd14610370578063e1890ee114610383578063e5a342a314610396578063e797ec1b146103b957600080fd5b80638da5cb5b116100de5780638da5cb5b1461033157806395d89b4114610342578063a22cb4651461034a578063b88d4fde1461035d57600080fd5b8063756af45f146103035780637e5cd5c1146103165780637fb3a9a21461031e57600080fd5b806342842e0e1161017157806355f804b31161014b57806355f804b3146102c25780636352211e146102d557806370a08231146102e8578063715018a6146102fb57600080fd5b806342842e0e1461028957806346e04a2f1461029c5780634f6ccce7146102af57600080fd5b8063095ea7b3116101ad578063095ea7b31461023c57806318160ddd1461025157806323b872dd146102635780632f745c591461027657600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e2366004611b88565b6103fd565b60405190151581526020015b60405180910390f35b610204610428565b6040516101f39190611c04565b61022461021f366004611c17565b6104ba565b6040516001600160a01b0390911681526020016101f3565b61024f61024a366004611c45565b610554565b005b6008545b6040519081526020016101f3565b61024f610271366004611c71565b61066a565b610255610284366004611c45565b61069b565b61024f610297366004611c71565b610731565b61024f6102aa366004611c17565b61074c565b6102556102bd366004611c17565b610917565b61024f6102d0366004611d71565b6109aa565b6102246102e3366004611c17565b6109eb565b6102556102f6366004611da6565b610a62565b61024f610ae9565b61024f610311366004611da6565b610b5d565b61024f610bbf565b61024f61032c366004611dc3565b610bf5565b600a546001600160a01b0316610224565b610204610c29565b61024f610358366004611e0a565b610c38565b61024f61036b366004611e48565b610cfd565b61020461037e366004611c17565b610d35565b61024f610391366004611da6565b610e96565b6101e76103a4366004611c17565b60106020526000908152604090205460ff1681565b61024f610ee2565b6101e76103cf366004611ec8565b610f1b565b61024f6103e2366004611da6565b610feb565b600f546101e79060ff1681565b610255600e5481565b60006001600160e01b0319821663780e9d6360e01b14806104225750610422826110d6565b92915050565b60606000805461043790611ef6565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611ef6565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166105385760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061055f826109eb565b9050806001600160a01b0316836001600160a01b031614156105cd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161052f565b336001600160a01b03821614806105e957506105e98133610f1b565b61065b5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161052f565b6106658383611126565b505050565b6106743382611194565b6106905760405162461bcd60e51b815260040161052f90611f31565b610665838383611263565b60006106a683610a62565b82106107085760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161052f565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61066583838360405180602001604052806000815250610cfd565b600f5460ff166107aa5760405162461bcd60e51b815260206004820152602360248201527f546865736520746f6b656e7320617265206e6f7420617661696c61626c65207960448201526232ba1760e91b606482015260840161052f565b601154604051632118854760e21b81523360048201526000916001600160a01b031690638462151c9060240160006040518083038186803b1580156107ee57600080fd5b505afa158015610802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261082a9190810190611f82565b80519091506000805b82811015610910576010600085838151811061085157610851612028565b60209081029190910181015182528101919091526040016000205460ff166108fe578161087d81612054565b92505060016010600086848151811061089857610898612028565b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006108d060085490565b9050600e546108de60085490565b10156108ee576108ee338261140e565b858314156108fc5750610910565b505b8061090881612054565b915050610833565b5050505050565b600061092260085490565b82106109855760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161052f565b6008828154811061099857610998612028565b90600052602060002001549050919050565b600a546001600160a01b031633146109d45760405162461bcd60e51b815260040161052f9061206f565b80516109e790600d906020840190611ad6565b5050565b6000818152600260205260408120546001600160a01b0316806104225760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161052f565b60006001600160a01b038216610acd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161052f565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610b135760405162461bcd60e51b815260040161052f9061206f565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600a546001600160a01b03163314610b875760405162461bcd60e51b815260040161052f9061206f565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610665573d6000803e3d6000fd5b600a546001600160a01b03163314610be95760405162461bcd60e51b815260040161052f9061206f565b600f805460ff19169055565b600a546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161052f9061206f565b6109e78282611428565b60606001805461043790611ef6565b6001600160a01b038216331415610c915760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161052f565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610d073383611194565b610d235760405162461bcd60e51b815260040161052f90611f31565b610d2f848484846114c0565b50505050565b6000818152600260205260409020546060906001600160a01b0316610d935760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b604482015260640161052f565b6000828152600c602052604081208054610dac90611ef6565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd890611ef6565b8015610e255780601f10610dfa57610100808354040283529160200191610e25565b820191906000526020600020905b815481529060010190602001808311610e0857829003601f168201915b505050505090506000610e366114f3565b9050805160001415610e49575092915050565b815115610e7b578082604051602001610e639291906120a4565b60405160208183030381529060405292505050919050565b80610e8585611502565b604051602001610e639291906120a4565b600a546001600160a01b03163314610ec05760405162461bcd60e51b815260040161052f9061206f565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b03163314610f0c5760405162461bcd60e51b815260040161052f9061206f565b600f805460ff19166001179055565b600b5460405163c455279160e01b81526001600160a01b03848116600483015260009281169190841690829063c45527919060240160206040518083038186803b158015610f6857600080fd5b505afa158015610f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa091906120d3565b6001600160a01b03161415610fb9576001915050610422565b6001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b949350505050565b600a546001600160a01b031633146110155760405162461bcd60e51b815260040161052f9061206f565b6001600160a01b03811661107a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052f565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b031982166380ac58cd60e01b148061110757506001600160e01b03198216635b5e139f60e01b145b8061042257506301ffc9a760e01b6001600160e01b0319831614610422565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061115b826109eb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661120d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161052f565b6000611218836109eb565b9050806001600160a01b0316846001600160a01b031614806112535750836001600160a01b0316611248846104ba565b6001600160a01b0316145b80610fe35750610fe38185610f1b565b826001600160a01b0316611276826109eb565b6001600160a01b0316146112de5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161052f565b6001600160a01b0382166113405760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161052f565b61134b838383611600565b611356600082611126565b6001600160a01b038316600090815260036020526040812080546001929061137f9084906120f0565b90915550506001600160a01b03821660009081526003602052604081208054600192906113ad908490612107565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6109e78282604051806020016040528060008152506116b8565b6000828152600260205260409020546001600160a01b03166114a15760405162461bcd60e51b815260206004820152602c60248201527f4552433732314d657461646174613a2055524920736574206f66206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161052f565b6000828152600c60209081526040909120825161066592840190611ad6565b6114cb848484611263565b6114d7848484846116eb565b610d2f5760405162461bcd60e51b815260040161052f9061211f565b6060600d805461043790611ef6565b6060816115265750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611550578061153a81612054565b91506115499050600a83612187565b915061152a565b60008167ffffffffffffffff81111561156b5761156b611cb2565b6040519080825280601f01601f191660200182016040528015611595576020820181803683370190505b5090505b8415610fe3576115aa6001836120f0565b91506115b7600a8661219b565b6115c2906030612107565b60f81b8183815181106115d7576115d7612028565b60200101906001600160f81b031916908160001a9053506115f9600a86612187565b9450611599565b6001600160a01b03831661165b5761165681600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61167e565b816001600160a01b0316836001600160a01b03161461167e5761167e83826117f8565b6001600160a01b0382166116955761066581611895565b826001600160a01b0316826001600160a01b031614610665576106658282611944565b6116c28383611988565b6116cf60008484846116eb565b6106655760405162461bcd60e51b815260040161052f9061211f565b60006001600160a01b0384163b156117ed57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061172f9033908990889088906004016121af565b602060405180830381600087803b15801561174957600080fd5b505af1925050508015611779575060408051601f3d908101601f19168201909252611776918101906121ec565b60015b6117d3573d8080156117a7576040519150601f19603f3d011682016040523d82523d6000602084013e6117ac565b606091505b5080516117cb5760405162461bcd60e51b815260040161052f9061211f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610fe3565b506001949350505050565b6000600161180584610a62565b61180f91906120f0565b600083815260076020526040902054909150808214611862576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906118a7906001906120f0565b600083815260096020526040812054600880549394509092849081106118cf576118cf612028565b9060005260206000200154905080600883815481106118f0576118f0612028565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061192857611928612209565b6001900381819060005260206000200160009055905550505050565b600061194f83610a62565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166119de5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161052f565b6000818152600260205260409020546001600160a01b031615611a435760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161052f565b611a4f60008383611600565b6001600160a01b0382166000908152600360205260408120805460019290611a78908490612107565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611ae290611ef6565b90600052602060002090601f016020900481019282611b045760008555611b4a565b82601f10611b1d57805160ff1916838001178555611b4a565b82800160010185558215611b4a579182015b82811115611b4a578251825591602001919060010190611b2f565b50611b56929150611b5a565b5090565b5b80821115611b565760008155600101611b5b565b6001600160e01b031981168114611b8557600080fd5b50565b600060208284031215611b9a57600080fd5b8135611ba581611b6f565b9392505050565b60005b83811015611bc7578181015183820152602001611baf565b83811115610d2f5750506000910152565b60008151808452611bf0816020860160208601611bac565b601f01601f19169290920160200192915050565b602081526000611ba56020830184611bd8565b600060208284031215611c2957600080fd5b5035919050565b6001600160a01b0381168114611b8557600080fd5b60008060408385031215611c5857600080fd5b8235611c6381611c30565b946020939093013593505050565b600080600060608486031215611c8657600080fd5b8335611c9181611c30565b92506020840135611ca181611c30565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611cf157611cf1611cb2565b604052919050565b600067ffffffffffffffff831115611d1357611d13611cb2565b611d26601f8401601f1916602001611cc8565b9050828152838383011115611d3a57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611d6257600080fd5b611ba583833560208501611cf9565b600060208284031215611d8357600080fd5b813567ffffffffffffffff811115611d9a57600080fd5b610fe384828501611d51565b600060208284031215611db857600080fd5b8135611ba581611c30565b60008060408385031215611dd657600080fd5b82359150602083013567ffffffffffffffff811115611df457600080fd5b611e0085828601611d51565b9150509250929050565b60008060408385031215611e1d57600080fd5b8235611e2881611c30565b915060208301358015158114611e3d57600080fd5b809150509250929050565b60008060008060808587031215611e5e57600080fd5b8435611e6981611c30565b93506020850135611e7981611c30565b925060408501359150606085013567ffffffffffffffff811115611e9c57600080fd5b8501601f81018713611ead57600080fd5b611ebc87823560208401611cf9565b91505092959194509250565b60008060408385031215611edb57600080fd5b8235611ee681611c30565b91506020830135611e3d81611c30565b600181811c90821680611f0a57607f821691505b60208210811415611f2b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60006020808385031215611f9557600080fd5b825167ffffffffffffffff80821115611fad57600080fd5b818501915085601f830112611fc157600080fd5b815181811115611fd357611fd3611cb2565b8060051b9150611fe4848301611cc8565b8181529183018401918481019088841115611ffe57600080fd5b938501935b8385101561201c57845182529385019390850190612003565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156120685761206861203e565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600083516120b6818460208801611bac565b8351908301906120ca818360208801611bac565b01949350505050565b6000602082840312156120e557600080fd5b8151611ba581611c30565b6000828210156121025761210261203e565b500390565b6000821982111561211a5761211a61203e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261219657612196612171565b500490565b6000826121aa576121aa612171565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906121e290830184611bd8565b9695505050505050565b6000602082840312156121fe57600080fd5b8151611ba581611b6f565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d0fc9dec8a03f99d17f24fc3914ca399ade5cccc0541a185f4645a7c778fcab664736f6c63430008080033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
-----Decoded View---------------
Arg [0] : _proxyRegistryAddress (address): 0xa5409ec958C83C3f309868babACA7c86DCB077c1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Deployed Bytecode Sourcemap
21908:3472:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18651:237;;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;18651:237:0;;;;;;;;12322:100;;;:::i;:::-;;;;;;;:::i;13407:221::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;13407:221:0;1528:203:1;13004:397:0;;;;;;:::i;:::-;;:::i;:::-;;19156:113;19244:10;:17;19156:113;;;2338:25:1;;;2326:2;2311:18;19156:113:0;2192:177:1;14105:305:0;;;;;;:::i;:::-;;:::i;18894:256::-;;;;;;:::i;:::-;;:::i;14416:151::-;;;;;;:::i;:::-;;:::i;22682:774::-;;;;;;:::i;:::-;;:::i;19275:233::-;;;;;;:::i;:::-;;:::i;24185:99::-;;;;;;:::i;:::-;;:::i;12077:239::-;;;;;;:::i;:::-;;:::i;11863:208::-;;;;;;:::i;:::-;;:::i;10397:148::-;;;:::i;24015:162::-;;;;;;:::i;:::-;;:::i;23548:80::-;;;:::i;23640:136::-;;;;;;:::i;:::-;;:::i;10174:87::-;10247:6;;-1:-1:-1;;;;;10247:6:0;10174:87;;12428:104;;;:::i;13634:295::-;;;;;;:::i;:::-;;:::i;14573:285::-;;;;;;:::i;:::-;;:::i;24405:578::-;;;;;;:::i;:::-;;:::i;22546:128::-;;;;;;:::i;:::-;;:::i;22300:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23464:78;;;:::i;24995:382::-;;;;;;:::i;:::-;;:::i;10553:244::-;;;;;;:::i;:::-;;:::i;22261:28::-;;;;;;;;;22221:33;;;;;;18651:237;18753:4;-1:-1:-1;;;;;;18777:50:0;;-1:-1:-1;;;18777:50:0;;:103;;;18844:36;18868:11;18844:23;:36::i;:::-;18770:110;18651:237;-1:-1:-1;;18651:237:0:o;12322:100::-;12376:13;12409:5;12402:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12322:100;:::o;13407:221::-;13483:7;15231:16;;;:7;:16;;;;;;-1:-1:-1;;;;;15231:16:0;13503:73;;;;-1:-1:-1;;;13503:73:0;;7061:2:1;13503:73:0;;;7043:21:1;7100:2;7080:18;;;7073:30;7139:34;7119:18;;;7112:62;-1:-1:-1;;;7190:18:1;;;7183:42;7242:19;;13503:73:0;;;;;;;;;-1:-1:-1;13596:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;13596:24:0;;13407:221::o;13004:397::-;13085:13;13101:23;13116:7;13101:14;:23::i;:::-;13085:39;;13149:5;-1:-1:-1;;;;;13143:11:0;:2;-1:-1:-1;;;;;13143:11:0;;;13135:57;;;;-1:-1:-1;;;13135:57:0;;7474:2:1;13135:57:0;;;7456:21:1;7513:2;7493:18;;;7486:30;7552:34;7532:18;;;7525:62;-1:-1:-1;;;7603:18:1;;;7596:31;7644:19;;13135:57:0;7272:397:1;13135:57:0;9577:10;-1:-1:-1;;;;;13213:21:0;;;;:62;;-1:-1:-1;13238:37:0;13255:5;9577:10;24995:382;:::i;13238:37::-;13205:154;;;;-1:-1:-1;;;13205:154:0;;7876:2:1;13205:154:0;;;7858:21:1;7915:2;7895:18;;;7888:30;7954:34;7934:18;;;7927:62;8025:26;8005:18;;;7998:54;8069:19;;13205:154:0;7674:420:1;13205:154:0;13372:21;13381:2;13385:7;13372:8;:21::i;:::-;13074:327;13004:397;;:::o;14105:305::-;14266:41;9577:10;14299:7;14266:18;:41::i;:::-;14258:103;;;;-1:-1:-1;;;14258:103:0;;;;;;;:::i;:::-;14374:28;14384:4;14390:2;14394:7;14374:9;:28::i;18894:256::-;18991:7;19027:23;19044:5;19027:16;:23::i;:::-;19019:5;:31;19011:87;;;;-1:-1:-1;;;19011:87:0;;8719:2:1;19011:87:0;;;8701:21:1;8758:2;8738:18;;;8731:30;8797:34;8777:18;;;8770:62;-1:-1:-1;;;8848:18:1;;;8841:41;8899:19;;19011:87:0;8517:407:1;19011:87:0;-1:-1:-1;;;;;;19116:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;18894:256::o;14416:151::-;14520:39;14537:4;14543:2;14547:7;14520:39;;;;;;;;;;;;:16;:39::i;22682:774::-;22744:8;;;;22736:56;;;;-1:-1:-1;;;22736:56:0;;9131:2:1;22736:56:0;;;9113:21:1;9170:2;9150:18;;;9143:30;9209:34;9189:18;;;9182:62;-1:-1:-1;;;9260:18:1;;;9253:33;9303:19;;22736:56:0;8929:399:1;22736:56:0;22837:11;;:37;;-1:-1:-1;;;22837:37:0;;22863:10;22837:37;;;1674:51:1;22805:29:0;;-1:-1:-1;;;;;22837:11:0;;:25;;1647:18:1;;22837:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22837:37:0;;;;;;;;;;;;:::i;:::-;22908:19;;22805:69;;-1:-1:-1;22885:20:0;;22977:472;22997:12;22993:1;:16;22977:472;;;23035:13;:30;23049:12;23062:1;23049:15;;;;;;;;:::i;:::-;;;;;;;;;;;;23035:30;;;;;;;;;;-1:-1:-1;23035:30:0;;;;23031:407;;23085:16;;;;:::i;:::-;;;;23153:4;23120:13;:30;23134:12;23147:1;23134:15;;;;;;;;:::i;:::-;;;;;;;23120:30;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23176:14;23193:13;19244:10;:17;;19156:113;23193:13;23176:30;;23245:10;;23229:13;19244:10;:17;;19156:113;23229:13;:26;23225:107;;;23280:32;23290:10;23302:9;23280;:32::i;:::-;23371:3;23353:14;:21;23350:73;;;23398:5;;;23350:73;23066:372;23031:407;23011:3;;;;:::i;:::-;;;;22977:472;;;;22725:731;;;22682:774;:::o;19275:233::-;19350:7;19386:30;19244:10;:17;;19156:113;19386:30;19378:5;:38;19370:95;;;;-1:-1:-1;;;19370:95:0;;10880:2:1;19370:95:0;;;10862:21:1;10919:2;10899:18;;;10892:30;10958:34;10938:18;;;10931:62;-1:-1:-1;;;11009:18:1;;;11002:42;11061:19;;19370:95:0;10678:408:1;19370:95:0;19483:10;19494:5;19483:17;;;;;;;;:::i;:::-;;;;;;;;;19476:24;;19275:233;;;:::o;24185:99::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;24258:18;;::::1;::::0;:8:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;24185:99:::0;:::o;12077:239::-;12149:7;12185:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12185:16:0;12220:19;12212:73;;;;-1:-1:-1;;;12212:73:0;;11654:2:1;12212:73:0;;;11636:21:1;11693:2;11673:18;;;11666:30;11732:34;11712:18;;;11705:62;-1:-1:-1;;;11783:18:1;;;11776:39;11832:19;;12212:73:0;11452:405:1;11863:208:0;11935:7;-1:-1:-1;;;;;11963:19:0;;11955:74;;;;-1:-1:-1;;;11955:74:0;;12064:2:1;11955:74:0;;;12046:21:1;12103:2;12083:18;;;12076:30;12142:34;12122:18;;;12115:62;-1:-1:-1;;;12193:18:1;;;12186:40;12243:19;;11955:74:0;11862:406:1;11955:74:0;-1:-1:-1;;;;;;12047:16:0;;;;;:9;:16;;;;;;;11863:208::o;10397:148::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;10488:6:::1;::::0;10467:40:::1;::::0;10504:1:::1;::::0;-1:-1:-1;;;;;10488:6:0::1;::::0;10467:40:::1;::::0;10504:1;;10467:40:::1;10518:6;:19:::0;;-1:-1:-1;;;;;;10518:19:0::1;::::0;;10397:148::o;24015:162::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;24136:33:::1;::::0;24104:21:::1;::::0;-1:-1:-1;;;;;24136:24:0;::::1;::::0;:33;::::1;;;::::0;24104:21;;24086:15:::1;24136:33:::0;24086:15;24136:33;24104:21;24136:24;:33;::::1;;;;;;;;;;;;;::::0;::::1;;;;23548:80:::0;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;23604:8:::1;:16:::0;;-1:-1:-1;;23604:16:0::1;::::0;;23548:80::o;23640:136::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;23736:32:::1;23749:7;23758:9;23736:12;:32::i;12428:104::-:0;12484:13;12517:7;12510:14;;;;;:::i;13634:295::-;-1:-1:-1;;;;;13737:24:0;;9577:10;13737:24;;13729:62;;;;-1:-1:-1;;;13729:62:0;;12475:2:1;13729:62:0;;;12457:21:1;12514:2;12494:18;;;12487:30;12553:27;12533:18;;;12526:55;12598:18;;13729:62:0;12273:349:1;13729:62:0;9577:10;13804:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;13804:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;13804:53:0;;;;;;;;;;13873:48;;540:41:1;;;13804:42:0;;9577:10;13873:48;;513:18:1;13873:48:0;;;;;;;13634:295;;:::o;14573:285::-;14705:41;9577:10;14738:7;14705:18;:41::i;:::-;14697:103;;;;-1:-1:-1;;;14697:103:0;;;;;;;:::i;:::-;14811:39;14825:4;14831:2;14835:7;14844:5;14811:13;:39::i;:::-;14573:285;;;;:::o;24405:578::-;15207:4;15231:16;;;:7;:16;;;;;;24478:13;;-1:-1:-1;;;;;15231:16:0;24508:49;;;;-1:-1:-1;;;24508:49:0;;12829:2:1;24508:49:0;;;12811:21:1;12868:2;12848:18;;;12841:30;-1:-1:-1;;;12887:18:1;;;12880:50;12947:18;;24508:49:0;12627:344:1;24508:49:0;24574:23;24600:19;;;:10;:19;;;;;24574:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24634:18;24655:10;:8;:10::i;:::-;24634:31;;24704:4;24698:18;24720:1;24698:23;24694:80;;;-1:-1:-1;24749:9:0;24405:578;-1:-1:-1;;24405:578:0:o;24694:80::-;24792:23;;:27;24788:116;;24871:4;24877:9;24854:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24840:48;;;;24405:578;;;:::o;24788:116::-;24949:4;24955:18;:7;:16;:18::i;:::-;24932:42;;;;;;;;;:::i;22546:128::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;22622:11:::1;:44:::0;;-1:-1:-1;;;;;;22622:44:0::1;-1:-1:-1::0;;;;;22622:44:0;;;::::1;::::0;;;::::1;::::0;;22546:128::o;23464:78::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;23519:8:::1;:15:::0;;-1:-1:-1;;23519:15:0::1;23530:4;23519:15;::::0;;23464:78::o;24995:382::-;25186:20;;25230:28;;-1:-1:-1;;;25230:28:0;;-1:-1:-1;;;;;1692:32:1;;;25230:28:0;;;1674:51:1;25120:4:0;;25186:20;;;25222:49;;;;25186:20;;25230:21;;1647:18:1;;25230:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25222:49:0;;25218:93;;;25295:4;25288:11;;;;;25218:93;-1:-1:-1;;;;;14056:25:0;;;14032:4;14056:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;25330:39;25323:46;24995:382;-1:-1:-1;;;;24995:382:0:o;10553:244::-;10247:6;;-1:-1:-1;;;;;10247:6:0;9577:10;10309:23;10301:68;;;;-1:-1:-1;;;10301:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10642:22:0;::::1;10634:73;;;::::0;-1:-1:-1;;;10634:73:0;;13938:2:1;10634:73:0::1;::::0;::::1;13920:21:1::0;13977:2;13957:18;;;13950:30;14016:34;13996:18;;;13989:62;-1:-1:-1;;;14067:18:1;;;14060:36;14113:19;;10634:73:0::1;13736:402:1::0;10634:73:0::1;10744:6;::::0;10723:38:::1;::::0;-1:-1:-1;;;;;10723:38:0;;::::1;::::0;10744:6:::1;::::0;10723:38:::1;::::0;10744:6:::1;::::0;10723:38:::1;10772:6;:17:::0;;-1:-1:-1;;;;;;10772:17:0::1;-1:-1:-1::0;;;;;10772:17:0;;;::::1;::::0;;;::::1;::::0;;10553:244::o;11565:292::-;11667:4;-1:-1:-1;;;;;;11691:40:0;;-1:-1:-1;;;11691:40:0;;:105;;-1:-1:-1;;;;;;;11748:48:0;;-1:-1:-1;;;11748:48:0;11691:105;:158;;;-1:-1:-1;;;;;;;;;;10956:40:0;;;11813:36;10847:157;17221:174;17296:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;17296:29:0;-1:-1:-1;;;;;17296:29:0;;;;;;;;:24;;17350:23;17296:24;17350:14;:23::i;:::-;-1:-1:-1;;;;;17341:46:0;;;;;;;;;;;17221:174;;:::o;15275:348::-;15368:4;15231:16;;;:7;:16;;;;;;-1:-1:-1;;;;;15231:16:0;15385:73;;;;-1:-1:-1;;;15385:73:0;;14345:2:1;15385:73:0;;;14327:21:1;14384:2;14364:18;;;14357:30;14423:34;14403:18;;;14396:62;-1:-1:-1;;;14474:18:1;;;14467:42;14526:19;;15385:73:0;14143:408:1;15385:73:0;15469:13;15485:23;15500:7;15485:14;:23::i;:::-;15469:39;;15538:5;-1:-1:-1;;;;;15527:16:0;:7;-1:-1:-1;;;;;15527:16:0;;:51;;;;15571:7;-1:-1:-1;;;;;15547:31:0;:20;15559:7;15547:11;:20::i;:::-;-1:-1:-1;;;;;15547:31:0;;15527:51;:87;;;;15582:32;15599:5;15606:7;15582:16;:32::i;16725:490::-;16850:4;-1:-1:-1;;;;;16823:31:0;:23;16838:7;16823:14;:23::i;:::-;-1:-1:-1;;;;;16823:31:0;;16815:85;;;;-1:-1:-1;;;16815:85:0;;14758:2:1;16815:85:0;;;14740:21:1;14797:2;14777:18;;;14770:30;14836:34;14816:18;;;14809:62;-1:-1:-1;;;14887:18:1;;;14880:39;14936:19;;16815:85:0;14556:405:1;16815:85:0;-1:-1:-1;;;;;16919:16:0;;16911:65;;;;-1:-1:-1;;;16911:65:0;;15168:2:1;16911:65:0;;;15150:21:1;15207:2;15187:18;;;15180:30;15246:34;15226:18;;;15219:62;-1:-1:-1;;;15297:18:1;;;15290:34;15341:19;;16911:65:0;14966:400:1;16911:65:0;16989:39;17010:4;17016:2;17020:7;16989:20;:39::i;:::-;17039:29;17056:1;17060:7;17039:8;:29::i;:::-;-1:-1:-1;;;;;17081:15:0;;;;;;:9;:15;;;;;:20;;17100:1;;17081:15;:20;;17100:1;;17081:20;:::i;:::-;;;;-1:-1:-1;;;;;;;17112:13:0;;;;;;:9;:13;;;;;:18;;17129:1;;17112:13;:18;;17129:1;;17112:18;:::i;:::-;;;;-1:-1:-1;;17141:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;17141:21:0;-1:-1:-1;;;;;17141:21:0;;;;;;;;;17180:27;;17141:16;;17180:27;;;;;;;16725:490;;;:::o;15629:110::-;15705:26;15715:2;15719:7;15705:26;;;;;;;;;;;;:9;:26::i;23784:223::-;15207:4;15231:16;;;:7;:16;;;;;;-1:-1:-1;;;;;15231:16:0;23880:73;;;;-1:-1:-1;;;23880:73:0;;15836:2:1;23880:73:0;;;15818:21:1;15875:2;15855:18;;;15848:30;15914:34;15894:18;;;15887:62;-1:-1:-1;;;15965:18:1;;;15958:42;16017:19;;23880:73:0;15634:408:1;23880:73:0;23968:19;;;;:10;:19;;;;;;;;:31;;;;;;;;:::i;14864:272::-;14978:28;14988:4;14994:2;14998:7;14978:9;:28::i;:::-;15025:48;15048:4;15054:2;15058:7;15067:5;15025:22;:48::i;:::-;15017:111;;;;-1:-1:-1;;;15017:111:0;;;;;;;:::i;24296:101::-;24348:13;24381:8;24374:15;;;;;:::i;3756:723::-;3812:13;4033:10;4029:53;;-1:-1:-1;;4060:10:0;;;;;;;;;;;;-1:-1:-1;;;4060:10:0;;;;;3756:723::o;4029:53::-;4107:5;4092:12;4148:78;4155:9;;4148:78;;4181:8;;;;:::i;:::-;;-1:-1:-1;4204:10:0;;-1:-1:-1;4212:2:0;4204:10;;:::i;:::-;;;4148:78;;;4236:19;4268:6;4258:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4258:17:0;;4236:39;;4286:154;4293:10;;4286:154;;4320:11;4330:1;4320:11;;:::i;:::-;;-1:-1:-1;4389:10:0;4397:2;4389:5;:10;:::i;:::-;4376:24;;:2;:24;:::i;:::-;4363:39;;4346:6;4353;4346:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4346:56:0;;;;;;;;-1:-1:-1;4417:11:0;4426:2;4417:11;;:::i;:::-;;;4286:154;;19514:555;-1:-1:-1;;;;;19686:18:0;;19682:187;;19721:40;19753:7;20408:10;:17;;20381:24;;;;:15;:24;;;;;:44;;;20436:24;;;;;;;;;;;;20304:164;19721:40;19682:187;;;19791:2;-1:-1:-1;;;;;19783:10:0;:4;-1:-1:-1;;;;;19783:10:0;;19779:90;;19810:47;19843:4;19849:7;19810:32;:47::i;:::-;-1:-1:-1;;;;;19883:16:0;;19879:183;;19916:45;19953:7;19916:36;:45::i;19879:183::-;19989:4;-1:-1:-1;;;;;19983:10:0;:2;-1:-1:-1;;;;;19983:10:0;;19979:83;;20010:40;20038:2;20042:7;20010:27;:40::i;15745:250::-;15841:18;15847:2;15851:7;15841:5;:18::i;:::-;15878:54;15909:1;15913:2;15917:7;15926:5;15878:22;:54::i;:::-;15870:117;;;;-1:-1:-1;;;15870:117:0;;;;;;;:::i;17401:843::-;17522:4;-1:-1:-1;;;;;17548:13:0;;205:20;244:8;17544:693;;17584:72;;-1:-1:-1;;;17584:72:0;;-1:-1:-1;;;;;17584:36:0;;;;;:72;;9577:10;;17635:4;;17641:7;;17650:5;;17584:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17584:72:0;;;;;;;;-1:-1:-1;;17584:72:0;;;;;;;;;;;;:::i;:::-;;;17580:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17830:13:0;;17826:341;;17873:60;;-1:-1:-1;;;17873:60:0;;;;;;;:::i;17826:341::-;18117:6;18111:13;18102:6;18098:2;18094:15;18087:38;17580:602;-1:-1:-1;;;;;;17707:55:0;-1:-1:-1;;;17707:55:0;;-1:-1:-1;17700:62:0;;17544:693;-1:-1:-1;18221:4:0;17401:843;;;;;;:::o;20474:647::-;20568:22;20618:1;20593:22;20610:4;20593:16;:22::i;:::-;:26;;;;:::i;:::-;20630:18;20651:26;;;:17;:26;;;;;;20568:51;;-1:-1:-1;20692:28:0;;;20688:328;;-1:-1:-1;;;;;20759:18:0;;20737:19;20759:18;;;:12;:18;;;;;;;;:34;;;;;;;;;20810:30;;;;;;:44;;;20927:30;;:17;:30;;;;;:43;;;20688:328;-1:-1:-1;21035:26:0;;;;:17;:26;;;;;;;;21028:33;;;-1:-1:-1;;;;;21079:18:0;;;;;:12;:18;;;;;:34;;;;;;;21072:41;20474:647::o;21127:523::-;21242:10;:17;21217:22;;21242:21;;21262:1;;21242:21;:::i;:::-;21274:18;21295:24;;;:15;:24;;;;;;21352:10;:26;;21217:46;;-1:-1:-1;21295:24:0;;21217:46;;21352:26;;;;;;:::i;:::-;;;;;;;;;21330:48;;21416:11;21391:10;21402;21391:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;21496:28;;;:15;:28;;;;;;;:41;;;21591:24;;;;;21584:31;21626:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;21198:452;;;21127:523;:::o;20077:221::-;20162:14;20179:20;20196:2;20179:16;:20::i;:::-;-1:-1:-1;;;;;20210:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;20255:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;20077:221:0:o;16001:382::-;-1:-1:-1;;;;;16081:16:0;;16073:61;;;;-1:-1:-1;;;16073:61:0;;17922:2:1;16073:61:0;;;17904:21:1;;;17941:18;;;17934:30;18000:34;17980:18;;;17973:62;18052:18;;16073:61:0;17720:356:1;16073:61:0;15207:4;15231:16;;;:7;:16;;;;;;-1:-1:-1;;;;;15231:16:0;:30;16145:58;;;;-1:-1:-1;;;16145:58:0;;18283:2:1;16145:58:0;;;18265:21:1;18322:2;18302:18;;;18295:30;18361;18341:18;;;18334:58;18409:18;;16145:58:0;18081:352:1;16145:58:0;16216:45;16245:1;16249:2;16253:7;16216:20;:45::i;:::-;-1:-1:-1;;;;;16274:13:0;;;;;;:9;:13;;;;;:18;;16291:1;;16274:13;:18;;16291:1;;16274:18;:::i;:::-;;;;-1:-1:-1;;16303:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;16303:21:0;-1:-1:-1;;;;;16303:21:0;;;;;;;;16342:33;;16303:16;;;16342:33;;16303:16;;16342:33;16001:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;68:71;14:131;:::o;150:245::-;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:1:o;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1736:131::-;-1:-1:-1;;;;;1811:31:1;;1801:42;;1791:70;;1857:1;1854;1847:12;1872:315;1940:6;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;2177:2;2162:18;;;;2149:32;;-1:-1:-1;;;1872:315:1:o;2374:456::-;2451:6;2459;2467;2520:2;2508:9;2499:7;2495:23;2491:32;2488:52;;;2536:1;2533;2526:12;2488:52;2575:9;2562:23;2594:31;2619:5;2594:31;:::i;:::-;2644:5;-1:-1:-1;2701:2:1;2686:18;;2673:32;2714:33;2673:32;2714:33;:::i;:::-;2374:456;;2766:7;;-1:-1:-1;;;2820:2:1;2805:18;;;;2792:32;;2374:456::o;2835:127::-;2896:10;2891:3;2887:20;2884:1;2877:31;2927:4;2924:1;2917:15;2951:4;2948:1;2941:15;2967:275;3038:2;3032:9;3103:2;3084:13;;-1:-1:-1;;3080:27:1;3068:40;;3138:18;3123:34;;3159:22;;;3120:62;3117:88;;;3185:18;;:::i;:::-;3221:2;3214:22;2967:275;;-1:-1:-1;2967:275:1:o;3247:407::-;3312:5;3346:18;3338:6;3335:30;3332:56;;;3368:18;;:::i;:::-;3406:57;3451:2;3430:15;;-1:-1:-1;;3426:29:1;3457:4;3422:40;3406:57;:::i;:::-;3397:66;;3486:6;3479:5;3472:21;3526:3;3517:6;3512:3;3508:16;3505:25;3502:45;;;3543:1;3540;3533:12;3502:45;3592:6;3587:3;3580:4;3573:5;3569:16;3556:43;3646:1;3639:4;3630:6;3623:5;3619:18;3615:29;3608:40;3247:407;;;;;:::o;3659:222::-;3702:5;3755:3;3748:4;3740:6;3736:17;3732:27;3722:55;;3773:1;3770;3763:12;3722:55;3795:80;3871:3;3862:6;3849:20;3842:4;3834:6;3830:17;3795:80;:::i;3886:322::-;3955:6;4008:2;3996:9;3987:7;3983:23;3979:32;3976:52;;;4024:1;4021;4014:12;3976:52;4064:9;4051:23;4097:18;4089:6;4086:30;4083:50;;;4129:1;4126;4119:12;4083:50;4152;4194:7;4185:6;4174:9;4170:22;4152:50;:::i;4213:247::-;4272:6;4325:2;4313:9;4304:7;4300:23;4296:32;4293:52;;;4341:1;4338;4331:12;4293:52;4380:9;4367:23;4399:31;4424:5;4399:31;:::i;4465:390::-;4543:6;4551;4604:2;4592:9;4583:7;4579:23;4575:32;4572:52;;;4620:1;4617;4610:12;4572:52;4656:9;4643:23;4633:33;;4717:2;4706:9;4702:18;4689:32;4744:18;4736:6;4733:30;4730:50;;;4776:1;4773;4766:12;4730:50;4799;4841:7;4832:6;4821:9;4817:22;4799:50;:::i;:::-;4789:60;;;4465:390;;;;;:::o;4860:416::-;4925:6;4933;4986:2;4974:9;4965:7;4961:23;4957:32;4954:52;;;5002:1;4999;4992:12;4954:52;5041:9;5028:23;5060:31;5085:5;5060:31;:::i;:::-;5110:5;-1:-1:-1;5167:2:1;5152:18;;5139:32;5209:15;;5202:23;5190:36;;5180:64;;5240:1;5237;5230:12;5180:64;5263:7;5253:17;;;4860:416;;;;;:::o;5281:795::-;5376:6;5384;5392;5400;5453:3;5441:9;5432:7;5428:23;5424:33;5421:53;;;5470:1;5467;5460:12;5421:53;5509:9;5496:23;5528:31;5553:5;5528:31;:::i;:::-;5578:5;-1:-1:-1;5635:2:1;5620:18;;5607:32;5648:33;5607:32;5648:33;:::i;:::-;5700:7;-1:-1:-1;5754:2:1;5739:18;;5726:32;;-1:-1:-1;5809:2:1;5794:18;;5781:32;5836:18;5825:30;;5822:50;;;5868:1;5865;5858:12;5822:50;5891:22;;5944:4;5936:13;;5932:27;-1:-1:-1;5922:55:1;;5973:1;5970;5963:12;5922:55;5996:74;6062:7;6057:2;6044:16;6039:2;6035;6031:11;5996:74;:::i;:::-;5986:84;;;5281:795;;;;;;;:::o;6081:388::-;6149:6;6157;6210:2;6198:9;6189:7;6185:23;6181:32;6178:52;;;6226:1;6223;6216:12;6178:52;6265:9;6252:23;6284:31;6309:5;6284:31;:::i;:::-;6334:5;-1:-1:-1;6391:2:1;6376:18;;6363:32;6404:33;6363:32;6404:33;:::i;6474:380::-;6553:1;6549:12;;;;6596;;;6617:61;;6671:4;6663:6;6659:17;6649:27;;6617:61;6724:2;6716:6;6713:14;6693:18;6690:38;6687:161;;;6770:10;6765:3;6761:20;6758:1;6751:31;6805:4;6802:1;6795:15;6833:4;6830:1;6823:15;6687:161;;6474:380;;;:::o;8099:413::-;8301:2;8283:21;;;8340:2;8320:18;;;8313:30;8379:34;8374:2;8359:18;;8352:62;-1:-1:-1;;;8445:2:1;8430:18;;8423:47;8502:3;8487:19;;8099:413::o;9333:936::-;9428:6;9459:2;9502;9490:9;9481:7;9477:23;9473:32;9470:52;;;9518:1;9515;9508:12;9470:52;9551:9;9545:16;9580:18;9621:2;9613:6;9610:14;9607:34;;;9637:1;9634;9627:12;9607:34;9675:6;9664:9;9660:22;9650:32;;9720:7;9713:4;9709:2;9705:13;9701:27;9691:55;;9742:1;9739;9732:12;9691:55;9771:2;9765:9;9793:2;9789;9786:10;9783:36;;;9799:18;;:::i;:::-;9845:2;9842:1;9838:10;9828:20;;9868:28;9892:2;9888;9884:11;9868:28;:::i;:::-;9930:15;;;10000:11;;;9996:20;;;9961:12;;;;10028:19;;;10025:39;;;10060:1;10057;10050:12;10025:39;10084:11;;;;10104:135;10120:6;10115:3;10112:15;10104:135;;;10186:10;;10174:23;;10137:12;;;;10217;;;;10104:135;;;10258:5;9333:936;-1:-1:-1;;;;;;;;9333:936:1:o;10274:127::-;10335:10;10330:3;10326:20;10323:1;10316:31;10366:4;10363:1;10356:15;10390:4;10387:1;10380:15;10406:127;10467:10;10462:3;10458:20;10455:1;10448:31;10498:4;10495:1;10488:15;10522:4;10519:1;10512:15;10538:135;10577:3;-1:-1:-1;;10598:17:1;;10595:43;;;10618:18;;:::i;:::-;-1:-1:-1;10665:1:1;10654:13;;10538:135::o;11091:356::-;11293:2;11275:21;;;11312:18;;;11305:30;11371:34;11366:2;11351:18;;11344:62;11438:2;11423:18;;11091:356::o;12976:470::-;13155:3;13193:6;13187:13;13209:53;13255:6;13250:3;13243:4;13235:6;13231:17;13209:53;:::i;:::-;13325:13;;13284:16;;;;13347:57;13325:13;13284:16;13381:4;13369:17;;13347:57;:::i;:::-;13420:20;;12976:470;-1:-1:-1;;;;12976:470:1:o;13451:280::-;13550:6;13603:2;13591:9;13582:7;13578:23;13574:32;13571:52;;;13619:1;13616;13609:12;13571:52;13651:9;13645:16;13670:31;13695:5;13670:31;:::i;15371:125::-;15411:4;15439:1;15436;15433:8;15430:34;;;15444:18;;:::i;:::-;-1:-1:-1;15481:9:1;;15371:125::o;15501:128::-;15541:3;15572:1;15568:6;15565:1;15562:13;15559:39;;;15578:18;;:::i;:::-;-1:-1:-1;15614:9:1;;15501:128::o;16047:414::-;16249:2;16231:21;;;16288:2;16268:18;;;16261:30;16327:34;16322:2;16307:18;;16300:62;-1:-1:-1;;;16393:2:1;16378:18;;16371:48;16451:3;16436:19;;16047:414::o;16466:127::-;16527:10;16522:3;16518:20;16515:1;16508:31;16558:4;16555:1;16548:15;16582:4;16579:1;16572:15;16598:120;16638:1;16664;16654:35;;16669:18;;:::i;:::-;-1:-1:-1;16703:9:1;;16598:120::o;16723:112::-;16755:1;16781;16771:35;;16786:18;;:::i;:::-;-1:-1:-1;16820:9:1;;16723:112::o;16840:489::-;-1:-1:-1;;;;;17109:15:1;;;17091:34;;17161:15;;17156:2;17141:18;;17134:43;17208:2;17193:18;;17186:34;;;17256:3;17251:2;17236:18;;17229:31;;;17034:4;;17277:46;;17303:19;;17295:6;17277:46;:::i;:::-;17269:54;16840:489;-1:-1:-1;;;;;;16840:489:1:o;17334:249::-;17403:6;17456:2;17444:9;17435:7;17431:23;17427:32;17424:52;;;17472:1;17469;17462:12;17424:52;17504:9;17498:16;17523:30;17547:5;17523:30;:::i;17588:127::-;17649:10;17644:3;17640:20;17637:1;17630:31;17680:4;17677:1;17670:15;17704:4;17701:1;17694:15
Swarm Source
ipfs://d0fc9dec8a03f99d17f24fc3914ca399ade5cccc0541a185f4645a7c778fcab6
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.