Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 104 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer From | 18215476 | 452 days ago | IN | 0 ETH | 0.00150328 | ||||
Transfer From | 17817309 | 508 days ago | IN | 0 ETH | 0.00103397 | ||||
Transfer From | 17795170 | 511 days ago | IN | 0 ETH | 0.00111742 | ||||
Set Approval For... | 17496719 | 553 days ago | IN | 0 ETH | 0.00080658 | ||||
Withdraw | 17382118 | 569 days ago | IN | 0 ETH | 0.00080921 | ||||
Set Approval For... | 17376079 | 570 days ago | IN | 0 ETH | 0.0013576 | ||||
Mint | 17364767 | 571 days ago | IN | 0.008 ETH | 0.00224253 | ||||
Mint | 17364163 | 571 days ago | IN | 0.008 ETH | 0.00196311 | ||||
Mint | 17364156 | 571 days ago | IN | 0.008 ETH | 0.0018218 | ||||
Mint | 17364144 | 571 days ago | IN | 0.008 ETH | 0.00179399 | ||||
Mint | 17364084 | 571 days ago | IN | 0.008 ETH | 0.00178194 | ||||
Mint | 17364071 | 571 days ago | IN | 0.008 ETH | 0.00177643 | ||||
Mint | 17364032 | 571 days ago | IN | 0.008 ETH | 0.00165654 | ||||
Transfer From | 17339304 | 575 days ago | IN | 0 ETH | 0.00185619 | ||||
Withdraw | 17338973 | 575 days ago | IN | 0 ETH | 0.00086685 | ||||
Transfer From | 17338931 | 575 days ago | IN | 0 ETH | 0.00195143 | ||||
Transfer From | 17338561 | 575 days ago | IN | 0 ETH | 0.00203047 | ||||
Mint | 17338477 | 575 days ago | IN | 0.024 ETH | 0.00428587 | ||||
Transfer From | 17338454 | 575 days ago | IN | 0 ETH | 0.00153228 | ||||
Transfer From | 17338427 | 575 days ago | IN | 0 ETH | 0.00186497 | ||||
Transfer From | 17338422 | 575 days ago | IN | 0 ETH | 0.00244249 | ||||
Mint | 17338382 | 575 days ago | IN | 0.024 ETH | 0.00483846 | ||||
Transfer From | 17336805 | 575 days ago | IN | 0 ETH | 0.00286219 | ||||
Transfer From | 17336784 | 575 days ago | IN | 0 ETH | 0.0029945 | ||||
Transfer From | 17332643 | 576 days ago | IN | 0 ETH | 0.0019729 |
Loading...
Loading
Contract Name:
NGMAI
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-24 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library Counters { struct Counter { uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ 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); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString( uint256 value, uint256 length ) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 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"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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 ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface( bytes4 interfaceId ) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; 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 setApprovalForAll(address operator, bool _approved) external; function getApproved( uint256 tokenId ) external view returns (address operator); function isApprovedForAll( address owner, address operator ) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ 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); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf( address owner ) public view virtual override returns (uint256) { require( owner != address(0), "ERC721: address zero is not a valid owner" ); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf( uint256 tokenId ) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: invalid token ID"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI( uint256 tokenId ) public view virtual override returns (string memory) { _requireMinted(tokenId); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ 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 token owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved( uint256 tokenId ) public view virtual override returns (address) { _requireMinted(tokenId); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll( address operator, bool approved ) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll( address owner, address operator ) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved" ); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory data ) public virtual override { require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token 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) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == 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); _afterTokenTransfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require( ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner" ); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits an {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Reverts if the `tokenId` has not been minted yet. */ function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } 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.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert( "ERC721: transfer to non ERC721Receiver implementer" ); } else { /// @solidity memory-safe-assembly assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: contracts/NGMAI.sol pragma solidity >=0.7.0 <0.9.0; contract NGMAI is ERC721, Ownable { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private supply; string public uriPrefix = ""; string public uriSuffix = ".json"; string public hiddenMetadataUri; uint256 public maxSupply = 888; uint256 mintPrice = 0.008 ether; bool public paused = true; address AP = 0x549885eb95E8C8266766B730A2e0bb386FcD09F1; constructor() ERC721("NGMAI", "NGMAI") Ownable() { uriPrefix = "https://arweave.net/FtJZzgIdbyz4ZhrZZ2FWOApS5DU9AN9y_ADgOY4rbmY/"; // mint first 10 to AP _mintLoop(AP, 10); } modifier onlyAPOrOwner() { require(msg.sender == AP || msg.sender == owner(), "only AP or owner"); _; } modifier antiduke(uint256 _mintAmount) { require( supply.current() + _mintAmount <= maxSupply, "Max supply exceeded!" ); _; } function totalSupply() public view returns (uint256) { return supply.current(); } function mint(uint256 _mintAmount) public payable antiduke(_mintAmount) { require(!paused, "The contract is paused!"); require( msg.value == _mintAmount * mintPrice, "not enough fucking money" ); _mintLoop(msg.sender, _mintAmount); } function walletOfOwner( address _owner ) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount); uint256 currentTokenId = 1; uint256 ownedTokenIndex = 0; while ( ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply ) { address currentTokenOwner = ownerOf(currentTokenId); if (currentTokenOwner == _owner) { ownedTokenIds[ownedTokenIndex] = currentTokenId; ownedTokenIndex++; } currentTokenId++; } return ownedTokenIds; } function tokenURI( uint256 _tokenId ) public view virtual override returns (string memory) { require( _exists(_tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, _tokenId.toString(), uriSuffix ) ) : ""; } function setHiddenMetadataUri( string memory _hiddenMetadataUri ) public onlyOwner { hiddenMetadataUri = _hiddenMetadataUri; } function setUriPrefix(string memory _uriPrefix) public onlyOwner { uriPrefix = _uriPrefix; } function setUriSuffix(string memory _uriSuffix) public onlyOwner { uriSuffix = _uriSuffix; } function setPaused(bool _state) public onlyAPOrOwner { paused = _state; } function withdraw() public onlyAPOrOwner { (bool os, ) = payable(AP).call{value: address(this).balance}(""); require(os); } function _mintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); } } function _baseURI() internal view virtual override returns (string memory) { return uriPrefix; } }
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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hiddenMetadataUri","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_hiddenMetadataUri","type":"string"}],"name":"setHiddenMetadataUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","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"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0604052600060809081526008906200001a9082620005fa565b50604080518082019091526005815264173539b7b760d91b6020820152600990620000469082620005fa565b50610378600b55661c6bf526340000600c55600d80546001600160a81b03191674549885eb95e8c8266766b730a2e0bb386fcd09f1011790553480156200008c57600080fd5b506040805180820182526005808252644e474d414960d81b6020808401829052845180860190955291845290830152906000620000ca8382620005fa565b506001620000d98282620005fa565b505050620000f6620000f06200014460201b60201c565b62000148565b60405180606001604052806040815260200162002655604091396008906200011f9082620005fa565b50600d546200013e9061010090046001600160a01b0316600a6200019a565b620007ba565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b81811015620001f457620001bd6007620001f960201b62000ebc1760201c565b620001df83620001d960076200020260201b62000ec51760201c565b62000206565b80620001eb81620006dc565b9150506200019d565b505050565b80546001019055565b5490565b620002288282604051806020016040528060008152506200022c60201b60201c565b5050565b620002388383620002a3565b620002476000848484620003eb565b620001f45760405162461bcd60e51b815260206004820152603260248201526000805160206200263583398151915260448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084015b60405180910390fd5b6001600160a01b038216620002fb5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016200029a565b6000818152600260205260409020546001600160a01b031615620003625760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016200029a565b6001600160a01b03821660009081526003602052604081208054600192906200038d908490620006f8565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006200040c846001600160a01b03166200054760201b62000ec91760201c565b156200053b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906200044690339089908890889060040162000714565b6020604051808303816000875af192505050801562000484575060408051601f3d908101601f19168201909252620004819181019062000787565b60015b62000520573d808015620004b5576040519150601f19603f3d011682016040523d82523d6000602084013e620004ba565b606091505b508051600003620005185760405162461bcd60e51b815260206004820152603260248201526000805160206200263583398151915260448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016200029a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506200053f565b5060015b949350505050565b6001600160a01b03163b151590565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200058157607f821691505b602082108103620005a257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f457600081815260208120601f850160051c81016020861015620005d15750805b601f850160051c820191505b81811015620005f257828155600101620005dd565b505050505050565b81516001600160401b0381111562000616576200061662000556565b6200062e816200062784546200056c565b84620005a8565b602080601f8311600181146200066657600084156200064d5750858301515b600019600386901b1c1916600185901b178555620005f2565b600085815260208120601f198616915b82811015620006975788860151825594840194600190910190840162000676565b5085821015620006b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600060018201620006f157620006f1620006c6565b5060010190565b808201808211156200070e576200070e620006c6565b92915050565b600060018060a01b038087168352602081871681850152856040850152608060608501528451915081608085015260005b82811015620007635785810182015185820160a00152810162000745565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200079a57600080fd5b81516001600160e01b031981168114620007b357600080fd5b9392505050565b611e6b80620007ca6000396000f3fe6080604052600436106101c25760003560e01c806362b99ad4116100f7578063a0712d6811610095578063c87b56dd11610064578063c87b56dd146104d1578063d5abeb01146104f1578063e985e9c514610507578063f2fde38b1461052757600080fd5b8063a0712d6814610469578063a22cb4651461047c578063a45ba8e71461049c578063b88d4fde146104b157600080fd5b8063715018a6116100d1578063715018a6146104015780637ec4a659146104165780638da5cb5b1461043657806395d89b411461045457600080fd5b806362b99ad4146103ac5780636352211e146103c157806370a08231146103e157600080fd5b806323b872dd11610164578063438b63001161013e578063438b6300146103305780634fdd43cb1461035d5780635503a0e81461037d5780635c975abb1461039257600080fd5b806323b872dd146102db5780633ccfd60b146102fb57806342842e0e1461031057600080fd5b8063095ea7b3116101a0578063095ea7b31461025657806316ba10e01461027857806316c38b3c1461029857806318160ddd146102b857600080fd5b806301ffc9a7146101c757806306fdde03146101fc578063081812fc1461021e575b600080fd5b3480156101d357600080fd5b506101e76101e2366004611740565b610547565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b50610211610599565b6040516101f391906117ad565b34801561022a57600080fd5b5061023e6102393660046117c0565b61062b565b6040516001600160a01b0390911681526020016101f3565b34801561026257600080fd5b506102766102713660046117f5565b610652565b005b34801561028457600080fd5b506102766102933660046118ab565b61076c565b3480156102a457600080fd5b506102766102b3366004611904565b610784565b3480156102c457600080fd5b506102cd6107fe565b6040519081526020016101f3565b3480156102e757600080fd5b506102766102f636600461191f565b61080e565b34801561030757600080fd5b5061027661083f565b34801561031c57600080fd5b5061027661032b36600461191f565b61090e565b34801561033c57600080fd5b5061035061034b36600461195b565b610929565b6040516101f39190611976565b34801561036957600080fd5b506102766103783660046118ab565b610a09565b34801561038957600080fd5b50610211610a1d565b34801561039e57600080fd5b50600d546101e79060ff1681565b3480156103b857600080fd5b50610211610aab565b3480156103cd57600080fd5b5061023e6103dc3660046117c0565b610ab8565b3480156103ed57600080fd5b506102cd6103fc36600461195b565b610b18565b34801561040d57600080fd5b50610276610b9e565b34801561042257600080fd5b506102766104313660046118ab565b610bb2565b34801561044257600080fd5b506006546001600160a01b031661023e565b34801561046057600080fd5b50610211610bc6565b6102766104773660046117c0565b610bd5565b34801561048857600080fd5b506102766104973660046119ba565b610cea565b3480156104a857600080fd5b50610211610cf5565b3480156104bd57600080fd5b506102766104cc3660046119ed565b610d02565b3480156104dd57600080fd5b506102116104ec3660046117c0565b610d3a565b3480156104fd57600080fd5b506102cd600b5481565b34801561051357600080fd5b506101e7610522366004611a69565b610e18565b34801561053357600080fd5b5061027661054236600461195b565b610e46565b60006001600160e01b031982166380ac58cd60e01b148061057857506001600160e01b03198216635b5e139f60e01b145b8061059357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546105a890611a93565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611a93565b80156106215780601f106105f657610100808354040283529160200191610621565b820191906000526020600020905b81548152906001019060200180831161060457829003601f168201915b5050505050905090565b600061063682610ed8565b506000908152600460205260409020546001600160a01b031690565b600061065d82610ab8565b9050806001600160a01b0316836001600160a01b0316036106cf5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806106eb57506106eb8133610e18565b61075d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016106c6565b6107678383610f37565b505050565b610774610fa5565b60096107808282611b1b565b5050565b600d5461010090046001600160a01b03163314806107ac57506006546001600160a01b031633145b6107eb5760405162461bcd60e51b815260206004820152601060248201526f37b7363c9020a81037b91037bbb732b960811b60448201526064016106c6565b600d805460ff1916911515919091179055565b600061080960075490565b905090565b6108183382610fff565b6108345760405162461bcd60e51b81526004016106c690611bdb565b61076783838361105e565b600d5461010090046001600160a01b031633148061086757506006546001600160a01b031633145b6108a65760405162461bcd60e51b815260206004820152601060248201526f37b7363c9020a81037b91037bbb732b960811b60448201526064016106c6565b600d5460405160009161010090046001600160a01b03169047908381818185875af1925050503d80600081146108f8576040519150601f19603f3d011682016040523d82523d6000602084013e6108fd565b606091505b505090508061090b57600080fd5b50565b61076783838360405180602001604052806000815250610d02565b6060600061093683610b18565b905060008167ffffffffffffffff8111156109535761095361181f565b60405190808252806020026020018201604052801561097c578160200160208202803683370190505b509050600160005b83811080156109955750600b548211155b156109ff5760006109a583610ab8565b9050866001600160a01b0316816001600160a01b0316036109ec57828483815181106109d3576109d3611c29565b6020908102919091010152816109e881611c55565b9250505b826109f681611c55565b93505050610984565b5090949350505050565b610a11610fa5565b600a6107808282611b1b565b60098054610a2a90611a93565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5690611a93565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b505050505081565b60088054610a2a90611a93565b6000818152600260205260408120546001600160a01b0316806105935760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106c6565b60006001600160a01b038216610b825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016106c6565b506001600160a01b031660009081526003602052604090205490565b610ba6610fa5565b610bb060006111fa565b565b610bba610fa5565b60086107808282611b1b565b6060600180546105a890611a93565b80600b5481610be360075490565b610bed9190611c6e565b1115610c325760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b60448201526064016106c6565b600d5460ff1615610c855760405162461bcd60e51b815260206004820152601760248201527f54686520636f6e7472616374206973207061757365642100000000000000000060448201526064016106c6565b600c54610c929083611c81565b3414610ce05760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f756768206675636b696e67206d6f6e6579000000000000000060448201526064016106c6565b610780338361124c565b610780338383611289565b600a8054610a2a90611a93565b610d0c3383610fff565b610d285760405162461bcd60e51b81526004016106c690611bdb565b610d3484848484611357565b50505050565b6000818152600260205260409020546060906001600160a01b0316610db95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106c6565b6000610dc361138a565b90506000815111610de35760405180602001604052806000815250610e11565b80610ded84611399565b6009604051602001610e0193929190611c98565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610e4e610fa5565b6001600160a01b038116610eb35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c6565b61090b816111fa565b80546001019055565b5490565b6001600160a01b03163b151590565b6000818152600260205260409020546001600160a01b031661090b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106c6565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f6c82610ab8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6006546001600160a01b03163314610bb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c6565b60008061100b83610ab8565b9050806001600160a01b0316846001600160a01b0316148061103257506110328185610e18565b806110565750836001600160a01b031661104b8461062b565b6001600160a01b0316145b949350505050565b826001600160a01b031661107182610ab8565b6001600160a01b0316146110d55760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016106c6565b6001600160a01b0382166111375760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106c6565b611142600082610f37565b6001600160a01b038316600090815260036020526040812080546001929061116b908490611d38565b90915550506001600160a01b0382166000908152600360205260408120805460019290611199908490611c6e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8181101561076757611265600780546001019055565b6112778361127260075490565b61149a565b8061128181611c55565b91505061124f565b816001600160a01b0316836001600160a01b0316036112ea5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106c6565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61136284848461105e565b61136e848484846114b4565b610d345760405162461bcd60e51b81526004016106c690611d4b565b6060600880546105a890611a93565b6060816000036113c05750506040805180820190915260018152600360fc1b602082015290565b8160005b81156113ea57806113d481611c55565b91506113e39050600a83611db3565b91506113c4565b60008167ffffffffffffffff8111156114055761140561181f565b6040519080825280601f01601f19166020018201604052801561142f576020820181803683370190505b5090505b841561105657611444600183611d38565b9150611451600a86611dc7565b61145c906030611c6e565b60f81b81838151811061147157611471611c29565b60200101906001600160f81b031916908160001a905350611493600a86611db3565b9450611433565b6107808282604051806020016040528060008152506115b5565b60006001600160a01b0384163b156115aa57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906114f8903390899088908890600401611ddb565b6020604051808303816000875af1925050508015611533575060408051601f3d908101601f1916820190925261153091810190611e18565b60015b611590573d808015611561576040519150601f19603f3d011682016040523d82523d6000602084013e611566565b606091505b5080516000036115885760405162461bcd60e51b81526004016106c690611d4b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611056565b506001949350505050565b6115bf83836115e8565b6115cc60008484846114b4565b6107675760405162461bcd60e51b81526004016106c690611d4b565b6001600160a01b03821661163e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106c6565b6000818152600260205260409020546001600160a01b0316156116a35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106c6565b6001600160a01b03821660009081526003602052604081208054600192906116cc908490611c6e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461090b57600080fd5b60006020828403121561175257600080fd5b8135610e118161172a565b60005b83811015611778578181015183820152602001611760565b50506000910152565b6000815180845261179981602086016020860161175d565b601f01601f19169290920160200192915050565b602081526000610e116020830184611781565b6000602082840312156117d257600080fd5b5035919050565b80356001600160a01b03811681146117f057600080fd5b919050565b6000806040838503121561180857600080fd5b611811836117d9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156118505761185061181f565b604051601f8501601f19908116603f011681019082821181831017156118785761187861181f565b8160405280935085815286868601111561189157600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156118bd57600080fd5b813567ffffffffffffffff8111156118d457600080fd5b8201601f810184136118e557600080fd5b61105684823560208401611835565b803580151581146117f057600080fd5b60006020828403121561191657600080fd5b610e11826118f4565b60008060006060848603121561193457600080fd5b61193d846117d9565b925061194b602085016117d9565b9150604084013590509250925092565b60006020828403121561196d57600080fd5b610e11826117d9565b6020808252825182820181905260009190848201906040850190845b818110156119ae57835183529284019291840191600101611992565b50909695505050505050565b600080604083850312156119cd57600080fd5b6119d6836117d9565b91506119e4602084016118f4565b90509250929050565b60008060008060808587031215611a0357600080fd5b611a0c856117d9565b9350611a1a602086016117d9565b925060408501359150606085013567ffffffffffffffff811115611a3d57600080fd5b8501601f81018713611a4e57600080fd5b611a5d87823560208401611835565b91505092959194509250565b60008060408385031215611a7c57600080fd5b611a85836117d9565b91506119e4602084016117d9565b600181811c90821680611aa757607f821691505b602082108103611ac757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561076757600081815260208120601f850160051c81016020861015611af45750805b601f850160051c820191505b81811015611b1357828155600101611b00565b505050505050565b815167ffffffffffffffff811115611b3557611b3561181f565b611b4981611b438454611a93565b84611acd565b602080601f831160018114611b7e5760008415611b665750858301515b600019600386901b1c1916600185901b178555611b13565b600085815260208120601f198616915b82811015611bad57888601518255948401946001909101908401611b8e565b5085821015611bcb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c6757611c67611c3f565b5060010190565b8082018082111561059357610593611c3f565b808202811582820484141761059357610593611c3f565b600084516020611cab8285838a0161175d565b855191840191611cbe8184848a0161175d565b8554920191600090611ccf81611a93565b60018281168015611ce75760018114611cfc57611d28565b60ff1984168752821515830287019450611d28565b896000528560002060005b84811015611d2057815489820152908301908701611d07565b505082870194505b50929a9950505050505050505050565b8181038181111561059357610593611c3f565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082611dc257611dc2611d9d565b500490565b600082611dd657611dd6611d9d565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e0e90830184611781565b9695505050505050565b600060208284031215611e2a57600080fd5b8151610e118161172a56fea264697066735822122024f6f2d67078134dad5ae203d3f283cf3a2f22c86b760d6c950879bc63be62ed64736f6c634300081200334552433732313a207472616e7366657220746f206e6f6e20455243373231526568747470733a2f2f617277656176652e6e65742f46744a5a7a67496462797a345a68725a5a3246574f41705335445539414e39795f4144674f593472626d592f
Deployed Bytecode
0x6080604052600436106101c25760003560e01c806362b99ad4116100f7578063a0712d6811610095578063c87b56dd11610064578063c87b56dd146104d1578063d5abeb01146104f1578063e985e9c514610507578063f2fde38b1461052757600080fd5b8063a0712d6814610469578063a22cb4651461047c578063a45ba8e71461049c578063b88d4fde146104b157600080fd5b8063715018a6116100d1578063715018a6146104015780637ec4a659146104165780638da5cb5b1461043657806395d89b411461045457600080fd5b806362b99ad4146103ac5780636352211e146103c157806370a08231146103e157600080fd5b806323b872dd11610164578063438b63001161013e578063438b6300146103305780634fdd43cb1461035d5780635503a0e81461037d5780635c975abb1461039257600080fd5b806323b872dd146102db5780633ccfd60b146102fb57806342842e0e1461031057600080fd5b8063095ea7b3116101a0578063095ea7b31461025657806316ba10e01461027857806316c38b3c1461029857806318160ddd146102b857600080fd5b806301ffc9a7146101c757806306fdde03146101fc578063081812fc1461021e575b600080fd5b3480156101d357600080fd5b506101e76101e2366004611740565b610547565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b50610211610599565b6040516101f391906117ad565b34801561022a57600080fd5b5061023e6102393660046117c0565b61062b565b6040516001600160a01b0390911681526020016101f3565b34801561026257600080fd5b506102766102713660046117f5565b610652565b005b34801561028457600080fd5b506102766102933660046118ab565b61076c565b3480156102a457600080fd5b506102766102b3366004611904565b610784565b3480156102c457600080fd5b506102cd6107fe565b6040519081526020016101f3565b3480156102e757600080fd5b506102766102f636600461191f565b61080e565b34801561030757600080fd5b5061027661083f565b34801561031c57600080fd5b5061027661032b36600461191f565b61090e565b34801561033c57600080fd5b5061035061034b36600461195b565b610929565b6040516101f39190611976565b34801561036957600080fd5b506102766103783660046118ab565b610a09565b34801561038957600080fd5b50610211610a1d565b34801561039e57600080fd5b50600d546101e79060ff1681565b3480156103b857600080fd5b50610211610aab565b3480156103cd57600080fd5b5061023e6103dc3660046117c0565b610ab8565b3480156103ed57600080fd5b506102cd6103fc36600461195b565b610b18565b34801561040d57600080fd5b50610276610b9e565b34801561042257600080fd5b506102766104313660046118ab565b610bb2565b34801561044257600080fd5b506006546001600160a01b031661023e565b34801561046057600080fd5b50610211610bc6565b6102766104773660046117c0565b610bd5565b34801561048857600080fd5b506102766104973660046119ba565b610cea565b3480156104a857600080fd5b50610211610cf5565b3480156104bd57600080fd5b506102766104cc3660046119ed565b610d02565b3480156104dd57600080fd5b506102116104ec3660046117c0565b610d3a565b3480156104fd57600080fd5b506102cd600b5481565b34801561051357600080fd5b506101e7610522366004611a69565b610e18565b34801561053357600080fd5b5061027661054236600461195b565b610e46565b60006001600160e01b031982166380ac58cd60e01b148061057857506001600160e01b03198216635b5e139f60e01b145b8061059357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546105a890611a93565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611a93565b80156106215780601f106105f657610100808354040283529160200191610621565b820191906000526020600020905b81548152906001019060200180831161060457829003601f168201915b5050505050905090565b600061063682610ed8565b506000908152600460205260409020546001600160a01b031690565b600061065d82610ab8565b9050806001600160a01b0316836001600160a01b0316036106cf5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806106eb57506106eb8133610e18565b61075d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016106c6565b6107678383610f37565b505050565b610774610fa5565b60096107808282611b1b565b5050565b600d5461010090046001600160a01b03163314806107ac57506006546001600160a01b031633145b6107eb5760405162461bcd60e51b815260206004820152601060248201526f37b7363c9020a81037b91037bbb732b960811b60448201526064016106c6565b600d805460ff1916911515919091179055565b600061080960075490565b905090565b6108183382610fff565b6108345760405162461bcd60e51b81526004016106c690611bdb565b61076783838361105e565b600d5461010090046001600160a01b031633148061086757506006546001600160a01b031633145b6108a65760405162461bcd60e51b815260206004820152601060248201526f37b7363c9020a81037b91037bbb732b960811b60448201526064016106c6565b600d5460405160009161010090046001600160a01b03169047908381818185875af1925050503d80600081146108f8576040519150601f19603f3d011682016040523d82523d6000602084013e6108fd565b606091505b505090508061090b57600080fd5b50565b61076783838360405180602001604052806000815250610d02565b6060600061093683610b18565b905060008167ffffffffffffffff8111156109535761095361181f565b60405190808252806020026020018201604052801561097c578160200160208202803683370190505b509050600160005b83811080156109955750600b548211155b156109ff5760006109a583610ab8565b9050866001600160a01b0316816001600160a01b0316036109ec57828483815181106109d3576109d3611c29565b6020908102919091010152816109e881611c55565b9250505b826109f681611c55565b93505050610984565b5090949350505050565b610a11610fa5565b600a6107808282611b1b565b60098054610a2a90611a93565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5690611a93565b8015610aa35780601f10610a7857610100808354040283529160200191610aa3565b820191906000526020600020905b815481529060010190602001808311610a8657829003601f168201915b505050505081565b60088054610a2a90611a93565b6000818152600260205260408120546001600160a01b0316806105935760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106c6565b60006001600160a01b038216610b825760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016106c6565b506001600160a01b031660009081526003602052604090205490565b610ba6610fa5565b610bb060006111fa565b565b610bba610fa5565b60086107808282611b1b565b6060600180546105a890611a93565b80600b5481610be360075490565b610bed9190611c6e565b1115610c325760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b60448201526064016106c6565b600d5460ff1615610c855760405162461bcd60e51b815260206004820152601760248201527f54686520636f6e7472616374206973207061757365642100000000000000000060448201526064016106c6565b600c54610c929083611c81565b3414610ce05760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f756768206675636b696e67206d6f6e6579000000000000000060448201526064016106c6565b610780338361124c565b610780338383611289565b600a8054610a2a90611a93565b610d0c3383610fff565b610d285760405162461bcd60e51b81526004016106c690611bdb565b610d3484848484611357565b50505050565b6000818152600260205260409020546060906001600160a01b0316610db95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106c6565b6000610dc361138a565b90506000815111610de35760405180602001604052806000815250610e11565b80610ded84611399565b6009604051602001610e0193929190611c98565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610e4e610fa5565b6001600160a01b038116610eb35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c6565b61090b816111fa565b80546001019055565b5490565b6001600160a01b03163b151590565b6000818152600260205260409020546001600160a01b031661090b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016106c6565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f6c82610ab8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6006546001600160a01b03163314610bb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c6565b60008061100b83610ab8565b9050806001600160a01b0316846001600160a01b0316148061103257506110328185610e18565b806110565750836001600160a01b031661104b8461062b565b6001600160a01b0316145b949350505050565b826001600160a01b031661107182610ab8565b6001600160a01b0316146110d55760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016106c6565b6001600160a01b0382166111375760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016106c6565b611142600082610f37565b6001600160a01b038316600090815260036020526040812080546001929061116b908490611d38565b90915550506001600160a01b0382166000908152600360205260408120805460019290611199908490611c6e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8181101561076757611265600780546001019055565b6112778361127260075490565b61149a565b8061128181611c55565b91505061124f565b816001600160a01b0316836001600160a01b0316036112ea5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106c6565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61136284848461105e565b61136e848484846114b4565b610d345760405162461bcd60e51b81526004016106c690611d4b565b6060600880546105a890611a93565b6060816000036113c05750506040805180820190915260018152600360fc1b602082015290565b8160005b81156113ea57806113d481611c55565b91506113e39050600a83611db3565b91506113c4565b60008167ffffffffffffffff8111156114055761140561181f565b6040519080825280601f01601f19166020018201604052801561142f576020820181803683370190505b5090505b841561105657611444600183611d38565b9150611451600a86611dc7565b61145c906030611c6e565b60f81b81838151811061147157611471611c29565b60200101906001600160f81b031916908160001a905350611493600a86611db3565b9450611433565b6107808282604051806020016040528060008152506115b5565b60006001600160a01b0384163b156115aa57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906114f8903390899088908890600401611ddb565b6020604051808303816000875af1925050508015611533575060408051601f3d908101601f1916820190925261153091810190611e18565b60015b611590573d808015611561576040519150601f19603f3d011682016040523d82523d6000602084013e611566565b606091505b5080516000036115885760405162461bcd60e51b81526004016106c690611d4b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611056565b506001949350505050565b6115bf83836115e8565b6115cc60008484846114b4565b6107675760405162461bcd60e51b81526004016106c690611d4b565b6001600160a01b03821661163e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106c6565b6000818152600260205260409020546001600160a01b0316156116a35760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106c6565b6001600160a01b03821660009081526003602052604081208054600192906116cc908490611c6e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198116811461090b57600080fd5b60006020828403121561175257600080fd5b8135610e118161172a565b60005b83811015611778578181015183820152602001611760565b50506000910152565b6000815180845261179981602086016020860161175d565b601f01601f19169290920160200192915050565b602081526000610e116020830184611781565b6000602082840312156117d257600080fd5b5035919050565b80356001600160a01b03811681146117f057600080fd5b919050565b6000806040838503121561180857600080fd5b611811836117d9565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156118505761185061181f565b604051601f8501601f19908116603f011681019082821181831017156118785761187861181f565b8160405280935085815286868601111561189157600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156118bd57600080fd5b813567ffffffffffffffff8111156118d457600080fd5b8201601f810184136118e557600080fd5b61105684823560208401611835565b803580151581146117f057600080fd5b60006020828403121561191657600080fd5b610e11826118f4565b60008060006060848603121561193457600080fd5b61193d846117d9565b925061194b602085016117d9565b9150604084013590509250925092565b60006020828403121561196d57600080fd5b610e11826117d9565b6020808252825182820181905260009190848201906040850190845b818110156119ae57835183529284019291840191600101611992565b50909695505050505050565b600080604083850312156119cd57600080fd5b6119d6836117d9565b91506119e4602084016118f4565b90509250929050565b60008060008060808587031215611a0357600080fd5b611a0c856117d9565b9350611a1a602086016117d9565b925060408501359150606085013567ffffffffffffffff811115611a3d57600080fd5b8501601f81018713611a4e57600080fd5b611a5d87823560208401611835565b91505092959194509250565b60008060408385031215611a7c57600080fd5b611a85836117d9565b91506119e4602084016117d9565b600181811c90821680611aa757607f821691505b602082108103611ac757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561076757600081815260208120601f850160051c81016020861015611af45750805b601f850160051c820191505b81811015611b1357828155600101611b00565b505050505050565b815167ffffffffffffffff811115611b3557611b3561181f565b611b4981611b438454611a93565b84611acd565b602080601f831160018114611b7e5760008415611b665750858301515b600019600386901b1c1916600185901b178555611b13565b600085815260208120601f198616915b82811015611bad57888601518255948401946001909101908401611b8e565b5085821015611bcb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611c6757611c67611c3f565b5060010190565b8082018082111561059357610593611c3f565b808202811582820484141761059357610593611c3f565b600084516020611cab8285838a0161175d565b855191840191611cbe8184848a0161175d565b8554920191600090611ccf81611a93565b60018281168015611ce75760018114611cfc57611d28565b60ff1984168752821515830287019450611d28565b896000528560002060005b84811015611d2057815489820152908301908701611d07565b505082870194505b50929a9950505050505050505050565b8181038181111561059357610593611c3f565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082611dc257611dc2611d9d565b500490565b600082611dd657611dd6611d9d565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611e0e90830184611781565b9695505050505050565b600060208284031215611e2a57600080fd5b8151610e118161172a56fea264697066735822122024f6f2d67078134dad5ae203d3f283cf3a2f22c86b760d6c950879bc63be62ed64736f6c63430008120033
Deployed Bytecode Sourcemap
24794:3735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15568:321;;;;;;;;;;-1:-1:-1;15568:321:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;15568:321:0;;;;;;;;16580:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17915:187::-;;;;;;;;;;-1:-1:-1;17915:187:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:1;;;1679:51;;1667:2;1652:18;17915:187:0;1533:203:1;17432:417:0;;;;;;;;;;-1:-1:-1;17432:417:0;;;;;:::i;:::-;;:::i;:::-;;27819:106;;;;;;;;;;-1:-1:-1;27819:106:0;;;;;:::i;:::-;;:::i;27933:87::-;;;;;;;;;;-1:-1:-1;27933:87:0;;;;;:::i;:::-;;:::i;25782:95::-;;;;;;;;;;;;;:::i;:::-;;;3899:25:1;;;3887:2;3872:18;25782:95:0;3753:177:1;18681:373:0;;;;;;;;;;-1:-1:-1;18681:373:0;;;;;:::i;:::-;;:::i;28028:146::-;;;;;;;;;;;;;:::i;19125:185::-;;;;;;;;;;-1:-1:-1;19125:185:0;;;;;:::i;:::-;;:::i;26193:727::-;;;;;;;;;;-1:-1:-1;26193:727:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;27543:154::-;;;;;;;;;;-1:-1:-1;27543:154:0;;;;;:::i;:::-;;:::i;24986:33::-;;;;;;;;;;;;;:::i;25143:25::-;;;;;;;;;;-1:-1:-1;25143:25:0;;;;;;;;24951:28;;;;;;;;;;;;;:::i;16275:238::-;;;;;;;;;;-1:-1:-1;16275:238:0;;;;;:::i;:::-;;:::i;15953:260::-;;;;;;;;;;-1:-1:-1;15953:260:0;;;;;:::i;:::-;;:::i;4624:103::-;;;;;;;;;;;;;:::i;27705:106::-;;;;;;;;;;-1:-1:-1;27705:106:0;;;;;:::i;:::-;;:::i;3976:87::-;;;;;;;;;;-1:-1:-1;4049:6:0;;-1:-1:-1;;;;;4049:6:0;3976:87;;16749:104;;;;;;;;;;;;;:::i;25885:300::-;;;;;;:::i;:::-;;:::i;18174:180::-;;;;;;;;;;-1:-1:-1;18174:180:0;;;;;:::i;:::-;;:::i;25026:31::-;;;;;;;;;;;;;:::i;19381:360::-;;;;;;;;;;-1:-1:-1;19381:360:0;;;;;:::i;:::-;;:::i;26928:607::-;;;;;;;;;;-1:-1:-1;26928:607:0;;;;;:::i;:::-;;:::i;25066:30::-;;;;;;;;;;;;;;;;18425:189;;;;;;;;;;-1:-1:-1;18425:189:0;;;;;:::i;:::-;;:::i;4882:238::-;;;;;;;;;;-1:-1:-1;4882:238:0;;;;;:::i;:::-;;:::i;15568:321::-;15686:4;-1:-1:-1;;;;;;15723:40:0;;-1:-1:-1;;;15723:40:0;;:105;;-1:-1:-1;;;;;;;15780:48:0;;-1:-1:-1;;;15780:48:0;15723:105;:158;;;-1:-1:-1;;;;;;;;;;11110:40:0;;;15845:36;15703:178;15568:321;-1:-1:-1;;15568:321:0:o;16580:100::-;16634:13;16667:5;16660:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16580:100;:::o;17915:187::-;18007:7;18027:23;18042:7;18027:14;:23::i;:::-;-1:-1:-1;18070:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;18070:24:0;;17915:187::o;17432:417::-;17513:13;17529:23;17544:7;17529:14;:23::i;:::-;17513:39;;17577:5;-1:-1:-1;;;;;17571:11:0;:2;-1:-1:-1;;;;;17571:11:0;;17563:57;;;;-1:-1:-1;;;17563:57:0;;6879:2:1;17563:57:0;;;6861:21:1;6918:2;6898:18;;;6891:30;6957:34;6937:18;;;6930:62;-1:-1:-1;;;7008:18:1;;;7001:31;7049:19;;17563:57:0;;;;;;;;;3093:10;-1:-1:-1;;;;;17655:21:0;;;;:62;;-1:-1:-1;17680:37:0;17697:5;3093:10;18425:189;:::i;17680:37::-;17633:174;;;;-1:-1:-1;;;17633:174:0;;7281:2:1;17633:174:0;;;7263:21:1;7320:2;7300:18;;;7293:30;7359:34;7339:18;;;7332:62;7430:32;7410:18;;;7403:60;7480:19;;17633:174:0;7079:426:1;17633:174:0;17820:21;17829:2;17833:7;17820:8;:21::i;:::-;17502:347;17432:417;;:::o;27819:106::-;3862:13;:11;:13::i;:::-;27895:9:::1;:22;27907:10:::0;27895:9;:22:::1;:::i;:::-;;27819:106:::0;:::o;27933:87::-;25515:2;;;;;-1:-1:-1;;;;;25515:2:0;25501:10;:16;;:41;;-1:-1:-1;4049:6:0;;-1:-1:-1;;;;;4049:6:0;25521:10;:21;25501:41;25493:70;;;;-1:-1:-1;;;25493:70:0;;9916:2:1;25493:70:0;;;9898:21:1;9955:2;9935:18;;;9928:30;-1:-1:-1;;;9974:18:1;;;9967:46;10030:18;;25493:70:0;9714:340:1;25493:70:0;27997:6:::1;:15:::0;;-1:-1:-1;;27997:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27933:87::o;25782:95::-;25826:7;25853:16;:6;248:14;;156:114;25853:16;25846:23;;25782:95;:::o;18681:373::-;18890:41;3093:10;18923:7;18890:18;:41::i;:::-;18868:137;;;;-1:-1:-1;;;18868:137:0;;;;;;;:::i;:::-;19018:28;19028:4;19034:2;19038:7;19018:9;:28::i;28028:146::-;25515:2;;;;;-1:-1:-1;;;;;25515:2:0;25501:10;:16;;:41;;-1:-1:-1;4049:6:0;;-1:-1:-1;;;;;4049:6:0;25521:10;:21;25501:41;25493:70;;;;-1:-1:-1;;;25493:70:0;;9916:2:1;25493:70:0;;;9898:21:1;9955:2;9935:18;;;9928:30;-1:-1:-1;;;9974:18:1;;;9967:46;10030:18;;25493:70:0;9714:340:1;25493:70:0;28102:2:::1;::::0;28094:50:::1;::::0;28081:7:::1;::::0;28102:2:::1;::::0;::::1;-1:-1:-1::0;;;;;28102:2:0::1;::::0;28118:21:::1;::::0;28081:7;28094:50;28081:7;28094:50;28118:21;28102:2;28094:50:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28080:64;;;28163:2;28155:11;;;::::0;::::1;;28069:105;28028:146::o:0;19125:185::-;19263:39;19280:4;19286:2;19290:7;19263:39;;;;;;;;;;;;:16;:39::i;26193:727::-;26269:16;26298:23;26324:17;26334:6;26324:9;:17::i;:::-;26298:43;;26352:30;26399:15;26385:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26385:30:0;-1:-1:-1;26352:63:0;-1:-1:-1;26451:1:0;26426:22;26503:377;26542:15;26524;:33;:64;;;;;26579:9;;26561:14;:27;;26524:64;26503:377;;;26615:25;26643:23;26651:14;26643:7;:23::i;:::-;26615:51;;26708:6;-1:-1:-1;;;;;26687:27:0;:17;-1:-1:-1;;;;;26687:27:0;;26683:153;;26768:14;26735:13;26749:15;26735:30;;;;;;;;:::i;:::-;;;;;;;;;;:47;26803:17;;;;:::i;:::-;;;;26683:153;26852:16;;;;:::i;:::-;;;;26600:280;26503:377;;;-1:-1:-1;26899:13:0;;26193:727;-1:-1:-1;;;;26193:727:0:o;27543:154::-;3862:13;:11;:13::i;:::-;27651:17:::1;:38;27671:18:::0;27651:17;:38:::1;:::i;24986:33::-:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24951:28::-;;;;;;;:::i;16275:238::-;16363:7;16399:16;;;:7;:16;;;;;;-1:-1:-1;;;;;16399:16:0;;16426:56;;;;-1:-1:-1;;;16426:56:0;;11290:2:1;16426:56:0;;;11272:21:1;11329:2;11309:18;;;11302:30;-1:-1:-1;;;11348:18:1;;;11341:54;11412:18;;16426:56:0;11088:348:1;15953:260:0;16041:7;-1:-1:-1;;;;;16083:19:0;;16061:110;;;;-1:-1:-1;;;16061:110:0;;11643:2:1;16061:110:0;;;11625:21:1;11682:2;11662:18;;;11655:30;11721:34;11701:18;;;11694:62;-1:-1:-1;;;11772:18:1;;;11765:39;11821:19;;16061:110:0;11441:405:1;16061:110:0;-1:-1:-1;;;;;;16189:16:0;;;;;:9;:16;;;;;;;15953:260::o;4624:103::-;3862:13;:11;:13::i;:::-;4689:30:::1;4716:1;4689:18;:30::i;:::-;4624:103::o:0;27705:106::-;3862:13;:11;:13::i;:::-;27781:9:::1;:22;27793:10:::0;27781:9;:22:::1;:::i;16749:104::-:0;16805:13;16838:7;16831:14;;;;;:::i;25885:300::-;25944:11;25697:9;;25682:11;25663:16;:6;248:14;;156:114;25663:16;:30;;;;:::i;:::-;:43;;25641:113;;;;-1:-1:-1;;;25641:113:0;;12183:2:1;25641:113:0;;;12165:21:1;12222:2;12202:18;;;12195:30;-1:-1:-1;;;12241:18:1;;;12234:50;12301:18;;25641:113:0;11981:344:1;25641:113:0;25977:6:::1;::::0;::::1;;25976:7;25968:43;;;::::0;-1:-1:-1;;;25968:43:0;;12532:2:1;25968:43:0::1;::::0;::::1;12514:21:1::0;12571:2;12551:18;;;12544:30;12610:25;12590:18;;;12583:53;12653:18;;25968:43:0::1;12330:347:1::0;25968:43:0::1;26071:9;::::0;26057:23:::1;::::0;:11;:23:::1;:::i;:::-;26044:9;:36;26022:110;;;::::0;-1:-1:-1;;;26022:110:0;;13057:2:1;26022:110:0::1;::::0;::::1;13039:21:1::0;13096:2;13076:18;;;13069:30;13135:26;13115:18;;;13108:54;13179:18;;26022:110:0::1;12855:348:1::0;26022:110:0::1;26143:34;26153:10;26165:11;26143:9;:34::i;18174:180::-:0;18294:52;3093:10;18327:8;18337;18294:18;:52::i;25026:31::-;;;;;;;:::i;19381:360::-;19569:41;3093:10;19602:7;19569:18;:41::i;:::-;19547:137;;;;-1:-1:-1;;;19547:137:0;;;;;;;:::i;:::-;19695:38;19709:4;19715:2;19719:7;19728:4;19695:13;:38::i;:::-;19381:360;;;;:::o;26928:607::-;20172:4;20196:16;;;:7;:16;;;;;;27018:13;;-1:-1:-1;;;;;20196:16:0;27044:114;;;;-1:-1:-1;;;27044:114:0;;13410:2:1;27044:114:0;;;13392:21:1;13449:2;13429:18;;;13422:30;13488:34;13468:18;;;13461:62;-1:-1:-1;;;13539:18:1;;;13532:45;13594:19;;27044:114:0;13208:411:1;27044:114:0;27171:28;27202:10;:8;:10::i;:::-;27171:41;;27274:1;27249:14;27243:28;:32;:284;;;;;;;;;;;;;;;;;27367:14;27408:19;:8;:17;:19::i;:::-;27454:9;27324:162;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27243:284;27223:304;26928:607;-1:-1:-1;;;26928:607:0:o;18425:189::-;-1:-1:-1;;;;;18571:25:0;;;18547:4;18571:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;18425:189::o;4882:238::-;3862:13;:11;:13::i;:::-;-1:-1:-1;;;;;4985:22:0;::::1;4963:110;;;::::0;-1:-1:-1;;;4963:110:0;;15087:2:1;4963:110:0::1;::::0;::::1;15069:21:1::0;15126:2;15106:18;;;15099:30;15165:34;15145:18;;;15138:62;-1:-1:-1;;;15216:18:1;;;15209:36;15262:19;;4963:110:0::1;14885:402:1::0;4963:110:0::1;5084:28;5103:8;5084:18;:28::i;278:127::-:0;367:19;;385:1;367:19;;;278:127::o;156:114::-;248:14;;156:114::o;5724:115::-;-1:-1:-1;;;;;5808:19:0;;:23;;;5724:115::o;23276:135::-;20172:4;20196:16;;;:7;:16;;;;;;-1:-1:-1;;;;;20196:16:0;23350:53;;;;-1:-1:-1;;;23350:53:0;;11290:2:1;23350:53:0;;;11272:21:1;11329:2;11309:18;;;11302:30;-1:-1:-1;;;11348:18:1;;;11341:54;11412:18;;23350:53:0;11088:348:1;22555:174:0;22630:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;22630:29:0;-1:-1:-1;;;;;22630:29:0;;;;;;;;:24;;22684:23;22630:24;22684:14;:23::i;:::-;-1:-1:-1;;;;;22675:46:0;;;;;;;;;;;22555:174;;:::o;4141:132::-;4049:6;;-1:-1:-1;;;;;4049:6:0;3093:10;4205:23;4197:68;;;;-1:-1:-1;;;4197:68:0;;15494:2:1;4197:68:0;;;15476:21:1;;;15513:18;;;15506:30;15572:34;15552:18;;;15545:62;15624:18;;4197:68:0;15292:356:1;20242:315:0;20360:4;20377:13;20393:23;20408:7;20393:14;:23::i;:::-;20377:39;;20446:5;-1:-1:-1;;;;;20435:16:0;:7;-1:-1:-1;;;;;20435:16:0;;:65;;;;20468:32;20485:5;20492:7;20468:16;:32::i;:::-;20435:113;;;;20541:7;-1:-1:-1;;;;;20517:31:0;:20;20529:7;20517:11;:20::i;:::-;-1:-1:-1;;;;;20517:31:0;;20435:113;20427:122;20242:315;-1:-1:-1;;;;20242:315:0:o;21885:662::-;22058:4;-1:-1:-1;;;;;22031:31:0;:23;22046:7;22031:14;:23::i;:::-;-1:-1:-1;;;;;22031:31:0;;22009:118;;;;-1:-1:-1;;;22009:118:0;;15855:2:1;22009:118:0;;;15837:21:1;15894:2;15874:18;;;15867:30;15933:34;15913:18;;;15906:62;-1:-1:-1;;;15984:18:1;;;15977:35;16029:19;;22009:118:0;15653:401:1;22009:118:0;-1:-1:-1;;;;;22146:16:0;;22138:65;;;;-1:-1:-1;;;22138:65:0;;16261:2:1;22138:65:0;;;16243:21:1;16300:2;16280:18;;;16273:30;16339:34;16319:18;;;16312:62;-1:-1:-1;;;16390:18:1;;;16383:34;16434:19;;22138:65:0;16059:400:1;22138:65:0;22320:29;22337:1;22341:7;22320:8;:29::i;:::-;-1:-1:-1;;;;;22362:15:0;;;;;;:9;:15;;;;;:20;;22381:1;;22362:15;:20;;22381:1;;22362:20;:::i;:::-;;;;-1:-1:-1;;;;;;;22393:13:0;;;;;;:9;:13;;;;;:18;;22410:1;;22393:13;:18;;22410:1;;22393:18;:::i;:::-;;;;-1:-1:-1;;22422:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;22422:21:0;-1:-1:-1;;;;;22422:21:0;;;;;;;;;22461:27;;22422:16;;22461:27;;;;;;;17502:347;17432:417;;:::o;5280:191::-;5373:6;;;-1:-1:-1;;;;;5390:17:0;;;-1:-1:-1;;;;;;5390:17:0;;;;;;;5423:40;;5373:6;;;5390:17;5373:6;;5423:40;;5354:16;;5423:40;5343:128;5280:191;:::o;28182:226::-;28266:9;28261:140;28285:11;28281:1;:15;28261:140;;;28318:18;:6;367:19;;385:1;367:19;;;278:127;28318:18;28351:38;28361:9;28372:16;:6;248:14;;156:114;28372:16;28351:9;:38::i;:::-;28298:3;;;;:::i;:::-;;;;28261:140;;22872:315;23027:8;-1:-1:-1;;;;;23018:17:0;:5;-1:-1:-1;;;;;23018:17:0;;23010:55;;;;-1:-1:-1;;;23010:55:0;;16799:2:1;23010:55:0;;;16781:21:1;16838:2;16818:18;;;16811:30;16877:27;16857:18;;;16850:55;16922:18;;23010:55:0;16597:349:1;23010:55:0;-1:-1:-1;;;;;23076:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;23076:46:0;;;;;;;;;;23138:41;;540::1;;;23138::0;;513:18:1;23138:41:0;;;;;;;22872:315;;;:::o;19749:350::-;19905:28;19915:4;19921:2;19925:7;19905:9;:28::i;:::-;19966:47;19989:4;19995:2;19999:7;20008:4;19966:22;:47::i;:::-;19944:147;;;;-1:-1:-1;;;19944:147:0;;;;;;;:::i;28416:110::-;28476:13;28509:9;28502:16;;;;;:::i;1052:532::-;1108:13;1138:5;1147:1;1138:10;1134:53;;-1:-1:-1;;1165:10:0;;;;;;;;;;;;-1:-1:-1;;;1165:10:0;;;;;1052:532::o;1134:53::-;1212:5;1197:12;1253:78;1260:9;;1253:78;;1286:8;;;;:::i;:::-;;-1:-1:-1;1309:10:0;;-1:-1:-1;1317:2:0;1309:10;;:::i;:::-;;;1253:78;;;1341:19;1373:6;1363:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1363:17:0;;1341:39;;1391:154;1398:10;;1391:154;;1425:11;1435:1;1425:11;;:::i;:::-;;-1:-1:-1;1494:10:0;1502:2;1494:5;:10;:::i;:::-;1481:24;;:2;:24;:::i;:::-;1468:39;;1451:6;1458;1451:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1451:56:0;;;;;;;;-1:-1:-1;1522:11:0;1531:2;1522:11;;:::i;:::-;;;1391:154;;20565:110;20641:26;20651:2;20655:7;20641:26;;;;;;;;;;;;:9;:26::i;23419:1034::-;23573:4;-1:-1:-1;;;;;23594:13:0;;5808:19;:23;23590:856;;23647:174;;-1:-1:-1;;;23647:174:0;;-1:-1:-1;;;;;23647:36:0;;;;;:174;;3093:10;;23741:4;;23768:7;;23798:4;;23647:174;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23647:174:0;;;;;;;;-1:-1:-1;;23647:174:0;;;;;;;;;;;;:::i;:::-;;;23626:765;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24004:6;:13;24021:1;24004:18;24000:376;;24047:108;;-1:-1:-1;;;24047:108:0;;;;;;;:::i;24000:376::-;24326:6;24320:13;24311:6;24307:2;24303:15;24296:38;23626:765;-1:-1:-1;;;;;;23885:51:0;-1:-1:-1;;;23885:51:0;;-1:-1:-1;23878:58:0;;23590:856;-1:-1:-1;24430:4:0;23419:1034;;;;;;:::o;20683:319::-;20812:18;20818:2;20822:7;20812:5;:18::i;:::-;20863:53;20894:1;20898:2;20902:7;20911:4;20863:22;:53::i;:::-;20841:153;;;;-1:-1:-1;;;20841:153:0;;;;;;;:::i;21010:439::-;-1:-1:-1;;;;;21090:16:0;;21082:61;;;;-1:-1:-1;;;21082:61:0;;18694:2:1;21082:61:0;;;18676:21:1;;;18713:18;;;18706:30;18772:34;18752:18;;;18745:62;18824:18;;21082:61:0;18492:356:1;21082:61:0;20172:4;20196:16;;;:7;:16;;;;;;-1:-1:-1;;;;;20196:16:0;:30;21154:58;;;;-1:-1:-1;;;21154:58:0;;19055:2:1;21154:58:0;;;19037:21:1;19094:2;19074:18;;;19067:30;19133;19113:18;;;19106:58;19181:18;;21154:58:0;18853:352:1;21154:58:0;-1:-1:-1;;;;;21283:13:0;;;;;;:9;:13;;;;;:18;;21300:1;;21283:13;:18;;21300:1;;21283:18;:::i;:::-;;;;-1:-1:-1;;21312:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;21312:21:0;-1:-1:-1;;;;;21312:21:0;;;;;;;;21351:33;;21312:16;;;21351:33;;21312:16;;21351:33;27895:22:::1;27819:106:::0;:::o;14:131:1:-;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;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;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:1;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:1;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:1:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:1;;1348:180;-1:-1:-1;1348:180:1:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:1;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:1:o;2178:127::-;2239:10;2234:3;2230:20;2227:1;2220:31;2270:4;2267:1;2260:15;2294:4;2291:1;2284:15;2310:632;2375:5;2405:18;2446:2;2438:6;2435:14;2432:40;;;2452:18;;:::i;:::-;2527:2;2521:9;2495:2;2581:15;;-1:-1:-1;;2577:24:1;;;2603:2;2573:33;2569:42;2557:55;;;2627:18;;;2647:22;;;2624:46;2621:72;;;2673:18;;:::i;:::-;2713:10;2709:2;2702:22;2742:6;2733:15;;2772:6;2764;2757:22;2812:3;2803:6;2798:3;2794:16;2791:25;2788:45;;;2829:1;2826;2819:12;2788:45;2879:6;2874:3;2867:4;2859:6;2855:17;2842:44;2934:1;2927:4;2918:6;2910;2906:19;2902:30;2895:41;;;;2310:632;;;;;:::o;2947:451::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3125:9;3112:23;3158:18;3150:6;3147:30;3144:50;;;3190:1;3187;3180:12;3144:50;3213:22;;3266:4;3258:13;;3254:27;-1:-1:-1;3244:55:1;;3295:1;3292;3285:12;3244:55;3318:74;3384:7;3379:2;3366:16;3361:2;3357;3353:11;3318:74;:::i;3403:160::-;3468:20;;3524:13;;3517:21;3507:32;;3497:60;;3553:1;3550;3543:12;3568:180;3624:6;3677:2;3665:9;3656:7;3652:23;3648:32;3645:52;;;3693:1;3690;3683:12;3645:52;3716:26;3732:9;3716:26;:::i;3935:328::-;4012:6;4020;4028;4081:2;4069:9;4060:7;4056:23;4052:32;4049:52;;;4097:1;4094;4087:12;4049:52;4120:29;4139:9;4120:29;:::i;:::-;4110:39;;4168:38;4202:2;4191:9;4187:18;4168:38;:::i;:::-;4158:48;;4253:2;4242:9;4238:18;4225:32;4215:42;;3935:328;;;;;:::o;4268:186::-;4327:6;4380:2;4368:9;4359:7;4355:23;4351:32;4348:52;;;4396:1;4393;4386:12;4348:52;4419:29;4438:9;4419:29;:::i;4459:632::-;4630:2;4682:21;;;4752:13;;4655:18;;;4774:22;;;4601:4;;4630:2;4853:15;;;;4827:2;4812:18;;;4601:4;4896:169;4910:6;4907:1;4904:13;4896:169;;;4971:13;;4959:26;;5040:15;;;;5005:12;;;;4932:1;4925:9;4896:169;;;-1:-1:-1;5082:3:1;;4459:632;-1:-1:-1;;;;;;4459:632:1:o;5096:254::-;5161:6;5169;5222:2;5210:9;5201:7;5197:23;5193:32;5190:52;;;5238:1;5235;5228:12;5190:52;5261:29;5280:9;5261:29;:::i;:::-;5251:39;;5309:35;5340:2;5329:9;5325:18;5309:35;:::i;:::-;5299:45;;5096:254;;;;;:::o;5355:667::-;5450:6;5458;5466;5474;5527:3;5515:9;5506:7;5502:23;5498:33;5495:53;;;5544:1;5541;5534:12;5495:53;5567:29;5586:9;5567:29;:::i;:::-;5557:39;;5615:38;5649:2;5638:9;5634:18;5615:38;:::i;:::-;5605:48;;5700:2;5689:9;5685:18;5672:32;5662:42;;5755:2;5744:9;5740:18;5727:32;5782:18;5774:6;5771:30;5768:50;;;5814:1;5811;5804:12;5768:50;5837:22;;5890:4;5882:13;;5878:27;-1:-1:-1;5868:55:1;;5919:1;5916;5909:12;5868:55;5942:74;6008:7;6003:2;5990:16;5985:2;5981;5977:11;5942:74;:::i;:::-;5932:84;;;5355:667;;;;;;;:::o;6027:260::-;6095:6;6103;6156:2;6144:9;6135:7;6131:23;6127:32;6124:52;;;6172:1;6169;6162:12;6124:52;6195:29;6214:9;6195:29;:::i;:::-;6185:39;;6243:38;6277:2;6266:9;6262:18;6243:38;:::i;6292:380::-;6371:1;6367:12;;;;6414;;;6435:61;;6489:4;6481:6;6477:17;6467:27;;6435:61;6542:2;6534:6;6531:14;6511:18;6508:38;6505:161;;6588:10;6583:3;6579:20;6576:1;6569:31;6623:4;6620:1;6613:15;6651:4;6648:1;6641:15;6505:161;;6292:380;;;:::o;7636:545::-;7738:2;7733:3;7730:11;7727:448;;;7774:1;7799:5;7795:2;7788:17;7844:4;7840:2;7830:19;7914:2;7902:10;7898:19;7895:1;7891:27;7885:4;7881:38;7950:4;7938:10;7935:20;7932:47;;;-1:-1:-1;7973:4:1;7932:47;8028:2;8023:3;8019:12;8016:1;8012:20;8006:4;8002:31;7992:41;;8083:82;8101:2;8094:5;8091:13;8083:82;;;8146:17;;;8127:1;8116:13;8083:82;;;8087:3;;;7636:545;;;:::o;8357:1352::-;8483:3;8477:10;8510:18;8502:6;8499:30;8496:56;;;8532:18;;:::i;:::-;8561:97;8651:6;8611:38;8643:4;8637:11;8611:38;:::i;:::-;8605:4;8561:97;:::i;:::-;8713:4;;8777:2;8766:14;;8794:1;8789:663;;;;9496:1;9513:6;9510:89;;;-1:-1:-1;9565:19:1;;;9559:26;9510:89;-1:-1:-1;;8314:1:1;8310:11;;;8306:24;8302:29;8292:40;8338:1;8334:11;;;8289:57;9612:81;;8759:944;;8789:663;7583:1;7576:14;;;7620:4;7607:18;;-1:-1:-1;;8825:20:1;;;8943:236;8957:7;8954:1;8951:14;8943:236;;;9046:19;;;9040:26;9025:42;;9138:27;;;;9106:1;9094:14;;;;8973:19;;8943:236;;;8947:3;9207:6;9198:7;9195:19;9192:201;;;9268:19;;;9262:26;-1:-1:-1;;9351:1:1;9347:14;;;9363:3;9343:24;9339:37;9335:42;9320:58;9305:74;;9192:201;-1:-1:-1;;;;;9439:1:1;9423:14;;;9419:22;9406:36;;-1:-1:-1;8357:1352:1:o;10059:410::-;10261:2;10243:21;;;10300:2;10280:18;;;10273:30;10339:34;10334:2;10319:18;;10312:62;-1:-1:-1;;;10405:2:1;10390:18;;10383:44;10459:3;10444:19;;10059:410::o;10684:127::-;10745:10;10740:3;10736:20;10733:1;10726:31;10776:4;10773:1;10766:15;10800:4;10797:1;10790:15;10816:127;10877:10;10872:3;10868:20;10865:1;10858:31;10908:4;10905:1;10898:15;10932:4;10929:1;10922:15;10948:135;10987:3;11008:17;;;11005:43;;11028:18;;:::i;:::-;-1:-1:-1;11075:1:1;11064:13;;10948:135::o;11851:125::-;11916:9;;;11937:10;;;11934:36;;;11950:18;;:::i;12682:168::-;12755:9;;;12786;;12803:15;;;12797:22;;12783:37;12773:71;;12824:18;;:::i;13624:1256::-;13848:3;13886:6;13880:13;13912:4;13925:64;13982:6;13977:3;13972:2;13964:6;13960:15;13925:64;:::i;:::-;14052:13;;14011:16;;;;14074:68;14052:13;14011:16;14109:15;;;14074:68;:::i;:::-;14231:13;;14164:20;;;14204:1;;14269:36;14231:13;14269:36;:::i;:::-;14324:1;14341:18;;;14368:141;;;;14523:1;14518:337;;;;14334:521;;14368:141;-1:-1:-1;;14403:24:1;;14389:39;;14480:16;;14473:24;14459:39;;14448:51;;;-1:-1:-1;14368:141:1;;14518:337;14549:6;14546:1;14539:17;14597:2;14594:1;14584:16;14622:1;14636:169;14650:8;14647:1;14644:15;14636:169;;;14732:14;;14717:13;;;14710:37;14775:16;;;;14667:10;;14636:169;;;14640:3;;14836:8;14829:5;14825:20;14818:27;;14334:521;-1:-1:-1;14871:3:1;;13624:1256;-1:-1:-1;;;;;;;;;;13624:1256:1:o;16464:128::-;16531:9;;;16552:11;;;16549:37;;;16566:18;;:::i;16951:414::-;17153:2;17135:21;;;17192:2;17172:18;;;17165:30;17231:34;17226:2;17211:18;;17204:62;-1:-1:-1;;;17297:2:1;17282:18;;17275:48;17355:3;17340:19;;16951:414::o;17370:127::-;17431:10;17426:3;17422:20;17419:1;17412:31;17462:4;17459:1;17452:15;17486:4;17483:1;17476:15;17502:120;17542:1;17568;17558:35;;17573:18;;:::i;:::-;-1:-1:-1;17607:9:1;;17502:120::o;17627:112::-;17659:1;17685;17675:35;;17690:18;;:::i;:::-;-1:-1:-1;17724:9:1;;17627:112::o;17744:489::-;-1:-1:-1;;;;;18013:15:1;;;17995:34;;18065:15;;18060:2;18045:18;;18038:43;18112:2;18097:18;;18090:34;;;18160:3;18155:2;18140:18;;18133:31;;;17938:4;;18181:46;;18207:19;;18199:6;18181:46;:::i;:::-;18173:54;17744:489;-1:-1:-1;;;;;;17744:489:1:o;18238:249::-;18307:6;18360:2;18348:9;18339:7;18335:23;18331:32;18328:52;;;18376:1;18373;18366:12;18328:52;18408:9;18402:16;18427:30;18451:5;18427:30;:::i
Swarm Source
ipfs://24f6f2d67078134dad5ae203d3f283cf3a2f22c86b760d6c950879bc63be62ed
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.