Overview
FTM Balance
0 FTM
FTM Value
$0.00More Info
Private Name Tags
ContractCreator:
TokenTracker
Sponsored
Latest 25 from a total of 274 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Transfer From | 74957461 | 57 days ago | IN | 0 FTM | 0.00152144 | ||||
Set Approval For... | 74392662 | 70 days ago | IN | 0 FTM | 0.00054184 | ||||
Set Approval For... | 73137862 | 94 days ago | IN | 0 FTM | 0.00274987 | ||||
Set Approval For... | 69057812 | 174 days ago | IN | 0 FTM | 0.00100278 | ||||
Set Approval For... | 55686642 | 409 days ago | IN | 0 FTM | 0.00326534 | ||||
Set Approval For... | 41984437 | 633 days ago | IN | 0 FTM | 0.00006333 | ||||
Set Approval For... | 36884518 | 704 days ago | IN | 0 FTM | 0.00657656 | ||||
Buy | 36140224 | 713 days ago | IN | 300 FTM | 0.13125555 | ||||
Buy | 36135901 | 713 days ago | IN | 100 FTM | 0.0607819 | ||||
Buy | 36135048 | 713 days ago | IN | 100 FTM | 0.06239205 | ||||
Buy | 36121415 | 713 days ago | IN | 200 FTM | 0.11492509 | ||||
Buy | 36077263 | 714 days ago | IN | 100 FTM | 0.0801341 | ||||
Change Operator | 36072015 | 714 days ago | IN | 0 FTM | 0.0121832 | ||||
Transfer From | 36068692 | 714 days ago | IN | 0 FTM | 0.025612 | ||||
Transfer From | 36068564 | 714 days ago | IN | 0 FTM | 0.02614209 | ||||
Transfer From | 36068502 | 714 days ago | IN | 0 FTM | 0.02564221 | ||||
Transfer From | 36068422 | 714 days ago | IN | 0 FTM | 0.0290087 | ||||
Transfer From | 36068306 | 714 days ago | IN | 0 FTM | 0.02739297 | ||||
Transfer From | 36067976 | 714 days ago | IN | 0 FTM | 0.02153275 | ||||
Set Approval For... | 35143540 | 725 days ago | IN | 0 FTM | 0.01076574 | ||||
Set Approval For... | 34514133 | 732 days ago | IN | 0 FTM | 0.00891011 | ||||
Transfer From | 33803762 | 740 days ago | IN | 0 FTM | 0.0122957 | ||||
Transfer From | 33803729 | 740 days ago | IN | 0 FTM | 0.01368929 | ||||
Transfer From | 33803599 | 740 days ago | IN | 0 FTM | 0.01355174 | ||||
Transfer From | 32030855 | 761 days ago | IN | 0 FTM | 0.07830828 |
Latest 25 internal transactions (View All)
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
36140224 | 713 days ago | 300 FTM | ||||
36135901 | 713 days ago | 100 FTM | ||||
36135048 | 713 days ago | 100 FTM | ||||
36121415 | 713 days ago | 200 FTM | ||||
36077263 | 714 days ago | 100 FTM | ||||
30591384 | 777 days ago | 100 FTM | ||||
30578081 | 777 days ago | 500 FTM | ||||
30394724 | 779 days ago | 600 FTM | ||||
30393787 | 779 days ago | 100 FTM | ||||
29774125 | 785 days ago | 200 FTM | ||||
29678496 | 786 days ago | 700 FTM | ||||
28039295 | 803 days ago | 300 FTM | ||||
28026597 | 803 days ago | 100 FTM | ||||
28019064 | 803 days ago | 300 FTM | ||||
28018945 | 803 days ago | 300 FTM | ||||
28000591 | 803 days ago | 200 FTM | ||||
27997405 | 803 days ago | 700 FTM | ||||
27971160 | 804 days ago | 1,000 FTM | ||||
27961723 | 804 days ago | 200 FTM | ||||
27954132 | 804 days ago | 100 FTM | ||||
27953898 | 804 days ago | 100 FTM | ||||
27951532 | 804 days ago | 500 FTM | ||||
27951490 | 804 days ago | 3,500 FTM | ||||
27949869 | 804 days ago | 100 FTM | ||||
27949724 | 804 days ago | 600 FTM |
Loading...
Loading
Contract Name:
Station
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-11-18 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/token/ERC721/[email protected] 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`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * 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 have been allowed 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 ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @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; } // File @openzeppelin/contracts/token/ERC721/[email protected] pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ 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"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ 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); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ 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/[email protected] pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ 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_; } /** * @dev See {IERC165-supportsInterface}. */ 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: balance query for the zero address"); 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: owner query for nonexistent token"); 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) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ 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 owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ 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); } /** * @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: transfer caller is not 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: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ 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"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ 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)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ 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" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ 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); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ 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); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ 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); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ 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]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ 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); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary 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 } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) 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 // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] pragma solidity ^0.8.0; /** * @dev ERC721 token with storage based token URI management. */ abstract contract ERC721URIStorage is ERC721 { using Strings for uint256; // Optional mapping for token URIs mapping(uint256 => string) private _tokenURIs; /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return super.tokenURI(tokenId); } /** * @dev Sets `_tokenURI` as the tokenURI of `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } // File contracts/Station.sol pragma solidity 0.8.7; contract Station is ERC721Enumerable, ERC721URIStorage { uint256 public constant SALE_LIMIT = 9000; uint256 public constant TEAM_LIMIT = 1000; bytes16 internal constant ALPHABET = '0123456789abcdef'; uint256 public PRICE = 100 ether; address public owner; uint256 public sold; uint256 public teamMinted; bool public saleIsActive = true; address payable public stationLabs; address public signer; mapping(address => uint256) public bought; mapping(address => bool) public claimed; constructor( string memory _name, string memory _symbol, address payable _stationLabs, address _signer ) ERC721(_name, _symbol) { owner = msg.sender; stationLabs = _stationLabs; signer = _signer; } modifier onlyOperator { require(msg.sender == owner); _; } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override(ERC721, ERC721Enumerable) { ERC721Enumerable._beforeTokenTransfer(from, to, tokenId); } function buy(uint256 _count, uint256 _maxCount, uint8 _v, bytes32 _r, bytes32 _s) public payable { require(_count > 0, "Spaceship count cannot be Zero!"); require(_count <= SALE_LIMIT - sold, "Sale out of stock!"); require(saleIsActive, "Sale is not active!"); require(bought[msg.sender] + _count <= _maxCount); bytes32 _hash = keccak256(abi.encodePacked(msg.sender, _maxCount)); require(verifyHash(_hash, _v, _r, _s) == signer); uint256 amountDue = _count * PRICE; require(msg.value == amountDue, "Sent ether is not equal to the required amount for purchase completion"); for(uint i=0; i<_count; i++) { string memory _tokenURI = string(abi.encodePacked("https://station0x.com/api/", addressToString(address(this)), "/", toString(totalSupply()), ".json")); mint(msg.sender, totalSupply(), _tokenURI, ""); } sold += _count; bought[msg.sender] += _count; (bool success,) = stationLabs.call{value:msg.value}(''); require(success, 'Failed to forward funds'); } function claimEthSkins(uint256 _amount, uint8 _v, bytes32 _r, bytes32 _s) public { require(!claimed[msg.sender], "You already claimed your skins"); bytes32 _hash = keccak256(abi.encodePacked(msg.sender, _amount)); require(verifyHash(_hash, _v, _r, _s) == signer); for(uint i=0; i<_amount; i++) { string memory _tokenURI = string(abi.encodePacked("https://station0x.com/api/", addressToString(address(this)), "/", toString(totalSupply()), ".json")); mint(msg.sender, totalSupply(), _tokenURI, ""); } sold += _amount; bought[msg.sender] += _amount; claimed[msg.sender] = true; } function getStuckFunds() public onlyOperator { payable(msg.sender).transfer(address(this).balance); } function mintTo(address _to, uint256 _count) public onlyOperator { require(_count <= TEAM_LIMIT - teamMinted); require(_count > 0); for(uint i=0; i<_count; i++) { string memory _tokenURI = string(abi.encodePacked("https://station0x.com/api/", addressToString(address(this)), "/", toString(totalSupply()), ".json")); mint(_to, totalSupply(), _tokenURI, ""); } teamMinted += _count; } function setSaleStatus(bool _status) public onlyOperator { saleIsActive = _status; } function mint(address to, uint256 tokenId, string memory _tokenURI, bytes memory _data) internal { _safeMint(to, tokenId, _data); _setTokenURI(tokenId, _tokenURI); } function changeOperator(address _newOperator) public onlyOperator { owner = _newOperator; emit ChangeOperator(_newOperator); } function setTokenURI(uint256 tokenId, string memory _tokenURI) public onlyOperator { _setTokenURI(tokenId, _tokenURI); } function tokenURI(uint256 tokenId) public view virtual override(ERC721, ERC721URIStorage) returns (string memory) { return ERC721URIStorage.tokenURI(tokenId); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721Enumerable, ERC721) returns (bool) { return ERC721Enumerable.supportsInterface(interfaceId); } function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) { ERC721URIStorage._burn(tokenId); } function addressToString(address _addr) internal pure returns (string memory) { uint value = uint256(uint160(_addr)); uint length = 20; 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); } 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 verifyHash(bytes32 _hash, uint8 _v, bytes32 _r, bytes32 _s) internal pure returns (address _signer) { bytes32 messageDigest = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash)); return ecrecover(messageDigest, _v, _r, _s); } function changeStationLabs(address payable _newStationLabs) public { require(msg.sender == address(stationLabs)); stationLabs = _newStationLabs; } function changePrice(uint256 _newPrice) public onlyOperator { PRICE = _newPrice; } event ChangeOperator(address _newOperator); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address payable","name":"_stationLabs","type":"address"},{"internalType":"address","name":"_signer","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":false,"internalType":"address","name":"_newOperator","type":"address"}],"name":"ChangeOperator","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":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"","type":"address"}],"name":"bought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"_maxCount","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"changeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"changePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newStationLabs","type":"address"}],"name":"changeStationLabs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"claimEthSkins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"getStuckFunds","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mintTo","outputs":[],"stateMutability":"nonpayable","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":[{"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":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stationLabs","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"teamMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]
Contract Creation Code
608060405268056bc75e2d63100000600b55600f805460ff191660011790553480156200002b57600080fd5b5060405162002e6a38038062002e6a8339810160408190526200004e916200022e565b83518490849062000067906000906020850190620000d1565b5080516200007d906001906020840190620000d1565b5050600c8054336001600160a01b031991821617909155600f8054610100600160a81b0319166101006001600160a01b0396871602179055601080549091169290931691909117909155506200032e915050565b828054620000df90620002c2565b90600052602060002090601f0160209004810192826200010357600085556200014e565b82601f106200011e57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014e57825182559160200191906001019062000131565b506200015c92915062000160565b5090565b5b808211156200015c576000815560010162000161565b600082601f8301126200018957600080fd5b81516001600160401b0380821115620001a657620001a6620002ff565b604051601f8301601f19908116603f01168101908282118183101715620001d157620001d1620002ff565b81604052838152602092508683858801011115620001ee57600080fd5b600091505b83821015620002125785820183015181830184015290820190620001f3565b83821115620002245760008385830101525b9695505050505050565b600080600080608085870312156200024557600080fd5b84516001600160401b03808211156200025d57600080fd5b6200026b8883890162000177565b955060208701519150808211156200028257600080fd5b50620002918782880162000177565b9350506040850151620002a48162000315565b6060860151909250620002b78162000315565b939692955090935050565b600181811c90821680620002d757607f821691505b60208210811415620002f957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200032b57600080fd5b50565b612b2c806200033e6000396000f3fe60806040526004361061020f5760003560e01c80634f6ccce711610118578063a2b40d19116100a0578063d897833e1161006f578063d897833e146105ff578063e8b5498d1461061f578063e985e9c514610635578063eb8d24441461067e578063ef23571d1461069857600080fd5b8063a2b40d191461056f578063b88d4fde1461058f578063c87b56dd146105af578063c884ef83146105cf57600080fd5b80638d859f3e116100e75780638d859f3e146104e45780638da5cb5b146104fa57806395d89b411461051a578063998b59491461052f578063a22cb4651461054f57600080fd5b80634f6ccce7146104575780636352211e14610477578063667022fd1461049757806370a08231146104c457600080fd5b806318160ddd1161019b5780632f745c591161016a5780632f745c59146103ce578063368bf74e146103ee57806342842e0e14610404578063449a52f81461042457806346fdcb461461044457600080fd5b806318160ddd14610363578063212e8f6714610378578063238ac9331461038e57806323b872dd146103ae57600080fd5b806306fdde03116101e257806306fdde03146102a45780630804fa45146102c6578063081812fc14610303578063095ea7b314610323578063162094c41461034357600080fd5b806301ffc9a71461021457806302c7e7af1461024957806303f8ee411461026d57806306394c9b14610284575b600080fd5b34801561022057600080fd5b5061023461022f366004612659565b6106b8565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025f600d5481565b604051908152602001610240565b34801561027957600080fd5b506102826106c9565b005b34801561029057600080fd5b5061028261029f3660046124c6565b61070f565b3480156102b057600080fd5b506102b961077a565b6040516102409190612898565b3480156102d257600080fd5b50600f546102eb9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610240565b34801561030f57600080fd5b506102eb61031e366004612693565b61080c565b34801561032f57600080fd5b5061028261033e366004612612565b610899565b34801561034f57600080fd5b5061028261035e3660046126ac565b6109af565b34801561036f57600080fd5b5060085461025f565b34801561038457600080fd5b5061025f61232881565b34801561039a57600080fd5b506010546102eb906001600160a01b031681565b3480156103ba57600080fd5b506102826103c936600461251c565b6109d4565b3480156103da57600080fd5b5061025f6103e9366004612612565b610a05565b3480156103fa57600080fd5b5061025f6103e881565b34801561041057600080fd5b5061028261041f36600461251c565b610a9b565b34801561043057600080fd5b5061028261043f366004612612565b610ab6565b610282610452366004612707565b610b90565b34801561046357600080fd5b5061025f610472366004612693565b610ef9565b34801561048357600080fd5b506102eb610492366004612693565b610f8c565b3480156104a357600080fd5b5061025f6104b23660046124c6565b60116020526000908152604090205481565b3480156104d057600080fd5b5061025f6104df3660046124c6565b611003565b3480156104f057600080fd5b5061025f600b5481565b34801561050657600080fd5b50600c546102eb906001600160a01b031681565b34801561052657600080fd5b506102b961108a565b34801561053b57600080fd5b5061028261054a3660046124c6565b611099565b34801561055b57600080fd5b5061028261056a3660046125dd565b6110dd565b34801561057b57600080fd5b5061028261058a366004612693565b6111a2565b34801561059b57600080fd5b506102826105aa36600461255d565b6111be565b3480156105bb57600080fd5b506102b96105ca366004612693565b6111f6565b3480156105db57600080fd5b506102346105ea3660046124c6565b60126020526000908152604090205460ff1681565b34801561060b57600080fd5b5061028261061a36600461263e565b611201565b34801561062b57600080fd5b5061025f600e5481565b34801561064157600080fd5b506102346106503660046124e3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561068a57600080fd5b50600f546102349060ff1681565b3480156106a457600080fd5b506102826106b336600461274e565b61122b565b60006106c3826113ba565b92915050565b600c546001600160a01b031633146106e057600080fd5b60405133904780156108fc02916000818181858888f1935050505015801561070c573d6000803e3d6000fd5b50565b600c546001600160a01b0316331461072657600080fd5b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c9060200160405180910390a150565b606060008054610789906129f3565b80601f01602080910402602001604051908101604052809291908181526020018280546107b5906129f3565b80156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b6000610817826113df565b61087d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006108a482610f8c565b9050806001600160a01b0316836001600160a01b031614156109125760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610874565b336001600160a01b038216148061092e575061092e8133610650565b6109a05760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610874565b6109aa83836113fc565b505050565b600c546001600160a01b031633146109c657600080fd5b6109d0828261146a565b5050565b6109de33826114f5565b6109fa5760405162461bcd60e51b8152600401610874906128fd565b6109aa8383836115df565b6000610a1083611003565b8210610a725760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610874565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6109aa838383604051806020016040528060008152506111be565b600c546001600160a01b03163314610acd57600080fd5b600e54610adc906103e8612999565b811115610ae857600080fd5b60008111610af557600080fd5b60005b81811015610b74576000610b0b3061178a565b610b1c610b1760085490565b611932565b604051602001610b2d9291906127e4565b6040516020818303038152906040529050610b6184610b4b60085490565b8360405180602001604052806000815250611a30565b5080610b6c81612a2e565b915050610af8565b5080600e6000828254610b87919061294e565b90915550505050565b60008511610be05760405162461bcd60e51b815260206004820152601f60248201527f53706163657368697020636f756e742063616e6e6f74206265205a65726f21006044820152606401610874565b600d54610bef90612328612999565b851115610c335760405162461bcd60e51b815260206004820152601260248201527153616c65206f7574206f662073746f636b2160701b6044820152606401610874565b600f5460ff16610c7b5760405162461bcd60e51b815260206004820152601360248201527253616c65206973206e6f74206163746976652160681b6044820152606401610874565b336000908152601160205260409020548490610c9890879061294e565b1115610ca357600080fd5b6040516bffffffffffffffffffffffff193360601b1660208201526034810185905260009060540160408051601f1981840301815291905280516020909101206010549091506001600160a01b0316610cfe82868686611a45565b6001600160a01b031614610d1157600080fd5b6000600b5487610d21919061297a565b9050803414610da75760405162461bcd60e51b815260206004820152604660248201527f53656e74206574686572206973206e6f7420657175616c20746f20746865207260448201527f6571756972656420616d6f756e7420666f7220707572636861736520636f6d706064820152653632ba34b7b760d11b608482015260a401610874565b60005b87811015610e0b576000610dbd3061178a565b610dc9610b1760085490565b604051602001610dda9291906127e4565b6040516020818303038152906040529050610df833610b4b60085490565b5080610e0381612a2e565b915050610daa565b5086600d6000828254610e1e919061294e565b90915550503360009081526011602052604081208054899290610e4290849061294e565b9091555050600f5460405160009161010090046001600160a01b03169034908381818185875af1925050503d8060008114610e99576040519150601f19603f3d011682016040523d82523d6000602084013e610e9e565b606091505b5050905080610eef5760405162461bcd60e51b815260206004820152601760248201527f4661696c656420746f20666f72776172642066756e64730000000000000000006044820152606401610874565b5050505050505050565b6000610f0460085490565b8210610f675760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610874565b60088281548110610f7a57610f7a612a9f565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806106c35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610874565b60006001600160a01b03821661106e5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610874565b506001600160a01b031660009081526003602052604090205490565b606060018054610789906129f3565b600f5461010090046001600160a01b031633146110b557600080fd5b600f80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b0382163314156111365760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610874565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600c546001600160a01b031633146111b957600080fd5b600b55565b6111c833836114f5565b6111e45760405162461bcd60e51b8152600401610874906128fd565b6111f084848484611afa565b50505050565b60606106c382611b2d565b600c546001600160a01b0316331461121857600080fd5b600f805460ff1916911515919091179055565b3360009081526012602052604090205460ff161561128b5760405162461bcd60e51b815260206004820152601e60248201527f596f7520616c726561647920636c61696d656420796f757220736b696e7300006044820152606401610874565b6040516bffffffffffffffffffffffff193360601b1660208201526034810185905260009060540160408051601f1981840301815291905280516020909101206010549091506001600160a01b03166112e682868686611a45565b6001600160a01b0316146112f957600080fd5b60005b8581101561135d57600061130f3061178a565b61131b610b1760085490565b60405160200161132c9291906127e4565b604051602081830303815290604052905061134a33610b4b60085490565b508061135581612a2e565b9150506112fc565b5084600d6000828254611370919061294e565b9091555050336000908152601160205260408120805487929061139490849061294e565b9091555050336000908152601260205260409020805460ff191660011790555050505050565b60006001600160e01b0319821663780e9d6360e01b14806106c357506106c382611c9c565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061143182610f8c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611473826113df565b6114d65760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610874565b6000828152600a6020908152604090912082516109aa92840190612391565b6000611500826113df565b6115615760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610874565b600061156c83610f8c565b9050806001600160a01b0316846001600160a01b031614806115a75750836001600160a01b031661159c8461080c565b6001600160a01b0316145b806115d757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115f282610f8c565b6001600160a01b03161461165a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610874565b6001600160a01b0382166116bc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610874565b6116c7838383611cec565b6116d26000826113fc565b6001600160a01b03831660009081526003602052604081208054600192906116fb908490612999565b90915550506001600160a01b038216600090815260036020526040812080546001929061172990849061294e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60606001600160a01b038216601460006117a582600261297a565b6117b090600261294e565b67ffffffffffffffff8111156117c8576117c8612ab5565b6040519080825280601f01601f1916602001820160405280156117f2576020820181803683370190505b509050600360fc1b8160008151811061180d5761180d612a9f565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061183c5761183c612a9f565b60200101906001600160f81b031916908160001a905350600061186083600261297a565b61186b90600161294e565b90505b60018111156118e3576f181899199a1a9b1b9c1cb0b131b232b360811b84600f166010811061189f5761189f612a9f565b1a60f81b8282815181106118b5576118b5612a9f565b60200101906001600160f81b031916908160001a90535060049390931c926118dc816129dc565b905061186e565b5082156115d75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610874565b6060816119565750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611980578061196a81612a2e565b91506119799050600a83612966565b915061195a565b60008167ffffffffffffffff81111561199b5761199b612ab5565b6040519080825280601f01601f1916602001820160405280156119c5576020820181803683370190505b5090505b84156115d7576119da600183612999565b91506119e7600a86612a49565b6119f290603061294e565b60f81b818381518110611a0757611a07612a9f565b60200101906001600160f81b031916908160001a905350611a29600a86612966565b94506119c9565b611a3b848483611cf7565b6111f0838361146a565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018590526000908190605c0160408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611ae5573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b611b058484846115df565b611b1184848484611d2a565b6111f05760405162461bcd60e51b8152600401610874906128ab565b6060611b38826113df565b611b9e5760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b6064820152608401610874565b6000828152600a602052604081208054611bb7906129f3565b80601f0160208091040260200160405190810160405280929190818152602001828054611be3906129f3565b8015611c305780601f10611c0557610100808354040283529160200191611c30565b820191906000526020600020905b815481529060010190602001808311611c1357829003601f168201915b505050505090506000611c4e60408051602081019091526000815290565b9050805160001415611c61575092915050565b815115611c93578082604051602001611c7b9291906127b5565b60405160208183030381529060405292505050919050565b6115d784611e34565b60006001600160e01b031982166380ac58cd60e01b1480611ccd57506001600160e01b03198216635b5e139f60e01b145b806106c357506301ffc9a760e01b6001600160e01b03198316146106c3565b6109aa838383611f0c565b611d018383611fc4565b611d0e6000848484611d2a565b6109aa5760405162461bcd60e51b8152600401610874906128ab565b60006001600160a01b0384163b15611e2c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d6e90339089908890889060040161285b565b602060405180830381600087803b158015611d8857600080fd5b505af1925050508015611db8575060408051601f3d908101601f19168201909252611db591810190612676565b60015b611e12573d808015611de6576040519150601f19603f3d011682016040523d82523d6000602084013e611deb565b606091505b508051611e0a5760405162461bcd60e51b8152600401610874906128ab565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115d7565b5060016115d7565b6060611e3f826113df565b611ea35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610874565b6000611eba60408051602081019091526000815290565b90506000815111611eda5760405180602001604052806000815250611f05565b80611ee484612103565b604051602001611ef59291906127b5565b6040516020818303038152906040525b9392505050565b6001600160a01b038316611f6757611f6281600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611f8a565b816001600160a01b0316836001600160a01b031614611f8a57611f8a8382612201565b6001600160a01b038216611fa1576109aa8161229e565b826001600160a01b0316826001600160a01b0316146109aa576109aa828261234d565b6001600160a01b03821661201a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610874565b612023816113df565b156120705760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610874565b61207c60008383611cec565b6001600160a01b03821660009081526003602052604081208054600192906120a590849061294e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060816121275750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612151578061213b81612a2e565b915061214a9050600a83612966565b915061212b565b60008167ffffffffffffffff81111561216c5761216c612ab5565b6040519080825280601f01601f191660200182016040528015612196576020820181803683370190505b5090505b84156115d7576121ab600183612999565b91506121b8600a86612a49565b6121c390603061294e565b60f81b8183815181106121d8576121d8612a9f565b60200101906001600160f81b031916908160001a9053506121fa600a86612966565b945061219a565b6000600161220e84611003565b6122189190612999565b60008381526007602052604090205490915080821461226b576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906122b090600190612999565b600083815260096020526040812054600880549394509092849081106122d8576122d8612a9f565b9060005260206000200154905080600883815481106122f9576122f9612a9f565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061233157612331612a89565b6001900381819060005260206000200160009055905550505050565b600061235883611003565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b82805461239d906129f3565b90600052602060002090601f0160209004810192826123bf5760008555612405565b82601f106123d857805160ff1916838001178555612405565b82800160010185558215612405579182015b828111156124055782518255916020019190600101906123ea565b50612411929150612415565b5090565b5b808211156124115760008155600101612416565b600067ffffffffffffffff8084111561244557612445612ab5565b604051601f8501601f19908116603f0116810190828211818310171561246d5761246d612ab5565b8160405280935085815286868601111561248657600080fd5b858560208301376000602087830101525050509392505050565b803580151581146124b057600080fd5b919050565b803560ff811681146124b057600080fd5b6000602082840312156124d857600080fd5b8135611f0581612acb565b600080604083850312156124f657600080fd5b823561250181612acb565b9150602083013561251181612acb565b809150509250929050565b60008060006060848603121561253157600080fd5b833561253c81612acb565b9250602084013561254c81612acb565b929592945050506040919091013590565b6000806000806080858703121561257357600080fd5b843561257e81612acb565b9350602085013561258e81612acb565b925060408501359150606085013567ffffffffffffffff8111156125b157600080fd5b8501601f810187136125c257600080fd5b6125d18782356020840161242a565b91505092959194509250565b600080604083850312156125f057600080fd5b82356125fb81612acb565b9150612609602084016124a0565b90509250929050565b6000806040838503121561262557600080fd5b823561263081612acb565b946020939093013593505050565b60006020828403121561265057600080fd5b611f05826124a0565b60006020828403121561266b57600080fd5b8135611f0581612ae0565b60006020828403121561268857600080fd5b8151611f0581612ae0565b6000602082840312156126a557600080fd5b5035919050565b600080604083850312156126bf57600080fd5b82359150602083013567ffffffffffffffff8111156126dd57600080fd5b8301601f810185136126ee57600080fd5b6126fd8582356020840161242a565b9150509250929050565b600080600080600060a0868803121561271f57600080fd5b8535945060208601359350612736604087016124b5565b94979396509394606081013594506080013592915050565b6000806000806080858703121561276457600080fd5b84359350612774602086016124b5565b93969395505050506040820135916060013590565b600081518084526127a18160208601602086016129b0565b601f01601f19169290920160200192915050565b600083516127c78184602088016129b0565b8351908301906127db8183602088016129b0565b01949350505050565b7f68747470733a2f2f73746174696f6e30782e636f6d2f6170692f00000000000081526000835161281c81601a8501602088016129b0565b602f60f81b601a91840191820152835161283d81601b8401602088016129b0565b64173539b7b760d91b601b9290910191820152602001949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061288e90830184612789565b9695505050505050565b602081526000611f056020830184612789565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561296157612961612a5d565b500190565b60008261297557612975612a73565b500490565b600081600019048311821515161561299457612994612a5d565b500290565b6000828210156129ab576129ab612a5d565b500390565b60005b838110156129cb5781810151838201526020016129b3565b838111156111f05750506000910152565b6000816129eb576129eb612a5d565b506000190190565b600181811c90821680612a0757607f821691505b60208210811415612a2857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612a4257612a42612a5d565b5060010190565b600082612a5857612a58612a73565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461070c57600080fd5b6001600160e01b03198116811461070c57600080fdfea2646970667358221220a54fd76fb71dca976924f8aaec6b313cd64dd0c00167ab37c85094064cb0cc7964736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000006bdd6bb68ec6927f56749b46746f0afa7cda9f3c0000000000000000000000009dbfb700505854c2ab7d545482cec74d4771a091000000000000000000000000000000000000000000000000000000000000001353746174696f6e3a2043616c6c6973746f2d3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443414c3600000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061020f5760003560e01c80634f6ccce711610118578063a2b40d19116100a0578063d897833e1161006f578063d897833e146105ff578063e8b5498d1461061f578063e985e9c514610635578063eb8d24441461067e578063ef23571d1461069857600080fd5b8063a2b40d191461056f578063b88d4fde1461058f578063c87b56dd146105af578063c884ef83146105cf57600080fd5b80638d859f3e116100e75780638d859f3e146104e45780638da5cb5b146104fa57806395d89b411461051a578063998b59491461052f578063a22cb4651461054f57600080fd5b80634f6ccce7146104575780636352211e14610477578063667022fd1461049757806370a08231146104c457600080fd5b806318160ddd1161019b5780632f745c591161016a5780632f745c59146103ce578063368bf74e146103ee57806342842e0e14610404578063449a52f81461042457806346fdcb461461044457600080fd5b806318160ddd14610363578063212e8f6714610378578063238ac9331461038e57806323b872dd146103ae57600080fd5b806306fdde03116101e257806306fdde03146102a45780630804fa45146102c6578063081812fc14610303578063095ea7b314610323578063162094c41461034357600080fd5b806301ffc9a71461021457806302c7e7af1461024957806303f8ee411461026d57806306394c9b14610284575b600080fd5b34801561022057600080fd5b5061023461022f366004612659565b6106b8565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025f600d5481565b604051908152602001610240565b34801561027957600080fd5b506102826106c9565b005b34801561029057600080fd5b5061028261029f3660046124c6565b61070f565b3480156102b057600080fd5b506102b961077a565b6040516102409190612898565b3480156102d257600080fd5b50600f546102eb9061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610240565b34801561030f57600080fd5b506102eb61031e366004612693565b61080c565b34801561032f57600080fd5b5061028261033e366004612612565b610899565b34801561034f57600080fd5b5061028261035e3660046126ac565b6109af565b34801561036f57600080fd5b5060085461025f565b34801561038457600080fd5b5061025f61232881565b34801561039a57600080fd5b506010546102eb906001600160a01b031681565b3480156103ba57600080fd5b506102826103c936600461251c565b6109d4565b3480156103da57600080fd5b5061025f6103e9366004612612565b610a05565b3480156103fa57600080fd5b5061025f6103e881565b34801561041057600080fd5b5061028261041f36600461251c565b610a9b565b34801561043057600080fd5b5061028261043f366004612612565b610ab6565b610282610452366004612707565b610b90565b34801561046357600080fd5b5061025f610472366004612693565b610ef9565b34801561048357600080fd5b506102eb610492366004612693565b610f8c565b3480156104a357600080fd5b5061025f6104b23660046124c6565b60116020526000908152604090205481565b3480156104d057600080fd5b5061025f6104df3660046124c6565b611003565b3480156104f057600080fd5b5061025f600b5481565b34801561050657600080fd5b50600c546102eb906001600160a01b031681565b34801561052657600080fd5b506102b961108a565b34801561053b57600080fd5b5061028261054a3660046124c6565b611099565b34801561055b57600080fd5b5061028261056a3660046125dd565b6110dd565b34801561057b57600080fd5b5061028261058a366004612693565b6111a2565b34801561059b57600080fd5b506102826105aa36600461255d565b6111be565b3480156105bb57600080fd5b506102b96105ca366004612693565b6111f6565b3480156105db57600080fd5b506102346105ea3660046124c6565b60126020526000908152604090205460ff1681565b34801561060b57600080fd5b5061028261061a36600461263e565b611201565b34801561062b57600080fd5b5061025f600e5481565b34801561064157600080fd5b506102346106503660046124e3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561068a57600080fd5b50600f546102349060ff1681565b3480156106a457600080fd5b506102826106b336600461274e565b61122b565b60006106c3826113ba565b92915050565b600c546001600160a01b031633146106e057600080fd5b60405133904780156108fc02916000818181858888f1935050505015801561070c573d6000803e3d6000fd5b50565b600c546001600160a01b0316331461072657600080fd5b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f8eb831fe42156caaf4721a87ad40c6e662b893dbeee76d7a3ed2564a318b091c9060200160405180910390a150565b606060008054610789906129f3565b80601f01602080910402602001604051908101604052809291908181526020018280546107b5906129f3565b80156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b6000610817826113df565b61087d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006108a482610f8c565b9050806001600160a01b0316836001600160a01b031614156109125760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610874565b336001600160a01b038216148061092e575061092e8133610650565b6109a05760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610874565b6109aa83836113fc565b505050565b600c546001600160a01b031633146109c657600080fd5b6109d0828261146a565b5050565b6109de33826114f5565b6109fa5760405162461bcd60e51b8152600401610874906128fd565b6109aa8383836115df565b6000610a1083611003565b8210610a725760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610874565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6109aa838383604051806020016040528060008152506111be565b600c546001600160a01b03163314610acd57600080fd5b600e54610adc906103e8612999565b811115610ae857600080fd5b60008111610af557600080fd5b60005b81811015610b74576000610b0b3061178a565b610b1c610b1760085490565b611932565b604051602001610b2d9291906127e4565b6040516020818303038152906040529050610b6184610b4b60085490565b8360405180602001604052806000815250611a30565b5080610b6c81612a2e565b915050610af8565b5080600e6000828254610b87919061294e565b90915550505050565b60008511610be05760405162461bcd60e51b815260206004820152601f60248201527f53706163657368697020636f756e742063616e6e6f74206265205a65726f21006044820152606401610874565b600d54610bef90612328612999565b851115610c335760405162461bcd60e51b815260206004820152601260248201527153616c65206f7574206f662073746f636b2160701b6044820152606401610874565b600f5460ff16610c7b5760405162461bcd60e51b815260206004820152601360248201527253616c65206973206e6f74206163746976652160681b6044820152606401610874565b336000908152601160205260409020548490610c9890879061294e565b1115610ca357600080fd5b6040516bffffffffffffffffffffffff193360601b1660208201526034810185905260009060540160408051601f1981840301815291905280516020909101206010549091506001600160a01b0316610cfe82868686611a45565b6001600160a01b031614610d1157600080fd5b6000600b5487610d21919061297a565b9050803414610da75760405162461bcd60e51b815260206004820152604660248201527f53656e74206574686572206973206e6f7420657175616c20746f20746865207260448201527f6571756972656420616d6f756e7420666f7220707572636861736520636f6d706064820152653632ba34b7b760d11b608482015260a401610874565b60005b87811015610e0b576000610dbd3061178a565b610dc9610b1760085490565b604051602001610dda9291906127e4565b6040516020818303038152906040529050610df833610b4b60085490565b5080610e0381612a2e565b915050610daa565b5086600d6000828254610e1e919061294e565b90915550503360009081526011602052604081208054899290610e4290849061294e565b9091555050600f5460405160009161010090046001600160a01b03169034908381818185875af1925050503d8060008114610e99576040519150601f19603f3d011682016040523d82523d6000602084013e610e9e565b606091505b5050905080610eef5760405162461bcd60e51b815260206004820152601760248201527f4661696c656420746f20666f72776172642066756e64730000000000000000006044820152606401610874565b5050505050505050565b6000610f0460085490565b8210610f675760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610874565b60088281548110610f7a57610f7a612a9f565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806106c35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610874565b60006001600160a01b03821661106e5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610874565b506001600160a01b031660009081526003602052604090205490565b606060018054610789906129f3565b600f5461010090046001600160a01b031633146110b557600080fd5b600f80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b0382163314156111365760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610874565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600c546001600160a01b031633146111b957600080fd5b600b55565b6111c833836114f5565b6111e45760405162461bcd60e51b8152600401610874906128fd565b6111f084848484611afa565b50505050565b60606106c382611b2d565b600c546001600160a01b0316331461121857600080fd5b600f805460ff1916911515919091179055565b3360009081526012602052604090205460ff161561128b5760405162461bcd60e51b815260206004820152601e60248201527f596f7520616c726561647920636c61696d656420796f757220736b696e7300006044820152606401610874565b6040516bffffffffffffffffffffffff193360601b1660208201526034810185905260009060540160408051601f1981840301815291905280516020909101206010549091506001600160a01b03166112e682868686611a45565b6001600160a01b0316146112f957600080fd5b60005b8581101561135d57600061130f3061178a565b61131b610b1760085490565b60405160200161132c9291906127e4565b604051602081830303815290604052905061134a33610b4b60085490565b508061135581612a2e565b9150506112fc565b5084600d6000828254611370919061294e565b9091555050336000908152601160205260408120805487929061139490849061294e565b9091555050336000908152601260205260409020805460ff191660011790555050505050565b60006001600160e01b0319821663780e9d6360e01b14806106c357506106c382611c9c565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061143182610f8c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611473826113df565b6114d65760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610874565b6000828152600a6020908152604090912082516109aa92840190612391565b6000611500826113df565b6115615760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610874565b600061156c83610f8c565b9050806001600160a01b0316846001600160a01b031614806115a75750836001600160a01b031661159c8461080c565b6001600160a01b0316145b806115d757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166115f282610f8c565b6001600160a01b03161461165a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610874565b6001600160a01b0382166116bc5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610874565b6116c7838383611cec565b6116d26000826113fc565b6001600160a01b03831660009081526003602052604081208054600192906116fb908490612999565b90915550506001600160a01b038216600090815260036020526040812080546001929061172990849061294e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60606001600160a01b038216601460006117a582600261297a565b6117b090600261294e565b67ffffffffffffffff8111156117c8576117c8612ab5565b6040519080825280601f01601f1916602001820160405280156117f2576020820181803683370190505b509050600360fc1b8160008151811061180d5761180d612a9f565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061183c5761183c612a9f565b60200101906001600160f81b031916908160001a905350600061186083600261297a565b61186b90600161294e565b90505b60018111156118e3576f181899199a1a9b1b9c1cb0b131b232b360811b84600f166010811061189f5761189f612a9f565b1a60f81b8282815181106118b5576118b5612a9f565b60200101906001600160f81b031916908160001a90535060049390931c926118dc816129dc565b905061186e565b5082156115d75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610874565b6060816119565750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611980578061196a81612a2e565b91506119799050600a83612966565b915061195a565b60008167ffffffffffffffff81111561199b5761199b612ab5565b6040519080825280601f01601f1916602001820160405280156119c5576020820181803683370190505b5090505b84156115d7576119da600183612999565b91506119e7600a86612a49565b6119f290603061294e565b60f81b818381518110611a0757611a07612a9f565b60200101906001600160f81b031916908160001a905350611a29600a86612966565b94506119c9565b611a3b848483611cf7565b6111f0838361146a565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018590526000908190605c0160408051601f1981840301815282825280516020918201206000845290830180835281905260ff8816918301919091526060820186905260808201859052915060019060a0016020604051602081039080840390855afa158015611ae5573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b611b058484846115df565b611b1184848484611d2a565b6111f05760405162461bcd60e51b8152600401610874906128ab565b6060611b38826113df565b611b9e5760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b6064820152608401610874565b6000828152600a602052604081208054611bb7906129f3565b80601f0160208091040260200160405190810160405280929190818152602001828054611be3906129f3565b8015611c305780601f10611c0557610100808354040283529160200191611c30565b820191906000526020600020905b815481529060010190602001808311611c1357829003601f168201915b505050505090506000611c4e60408051602081019091526000815290565b9050805160001415611c61575092915050565b815115611c93578082604051602001611c7b9291906127b5565b60405160208183030381529060405292505050919050565b6115d784611e34565b60006001600160e01b031982166380ac58cd60e01b1480611ccd57506001600160e01b03198216635b5e139f60e01b145b806106c357506301ffc9a760e01b6001600160e01b03198316146106c3565b6109aa838383611f0c565b611d018383611fc4565b611d0e6000848484611d2a565b6109aa5760405162461bcd60e51b8152600401610874906128ab565b60006001600160a01b0384163b15611e2c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d6e90339089908890889060040161285b565b602060405180830381600087803b158015611d8857600080fd5b505af1925050508015611db8575060408051601f3d908101601f19168201909252611db591810190612676565b60015b611e12573d808015611de6576040519150601f19603f3d011682016040523d82523d6000602084013e611deb565b606091505b508051611e0a5760405162461bcd60e51b8152600401610874906128ab565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115d7565b5060016115d7565b6060611e3f826113df565b611ea35760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610874565b6000611eba60408051602081019091526000815290565b90506000815111611eda5760405180602001604052806000815250611f05565b80611ee484612103565b604051602001611ef59291906127b5565b6040516020818303038152906040525b9392505050565b6001600160a01b038316611f6757611f6281600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611f8a565b816001600160a01b0316836001600160a01b031614611f8a57611f8a8382612201565b6001600160a01b038216611fa1576109aa8161229e565b826001600160a01b0316826001600160a01b0316146109aa576109aa828261234d565b6001600160a01b03821661201a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610874565b612023816113df565b156120705760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610874565b61207c60008383611cec565b6001600160a01b03821660009081526003602052604081208054600192906120a590849061294e565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060816121275750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612151578061213b81612a2e565b915061214a9050600a83612966565b915061212b565b60008167ffffffffffffffff81111561216c5761216c612ab5565b6040519080825280601f01601f191660200182016040528015612196576020820181803683370190505b5090505b84156115d7576121ab600183612999565b91506121b8600a86612a49565b6121c390603061294e565b60f81b8183815181106121d8576121d8612a9f565b60200101906001600160f81b031916908160001a9053506121fa600a86612966565b945061219a565b6000600161220e84611003565b6122189190612999565b60008381526007602052604090205490915080821461226b576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906122b090600190612999565b600083815260096020526040812054600880549394509092849081106122d8576122d8612a9f565b9060005260206000200154905080600883815481106122f9576122f9612a9f565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061233157612331612a89565b6001900381819060005260206000200160009055905550505050565b600061235883611003565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b82805461239d906129f3565b90600052602060002090601f0160209004810192826123bf5760008555612405565b82601f106123d857805160ff1916838001178555612405565b82800160010185558215612405579182015b828111156124055782518255916020019190600101906123ea565b50612411929150612415565b5090565b5b808211156124115760008155600101612416565b600067ffffffffffffffff8084111561244557612445612ab5565b604051601f8501601f19908116603f0116810190828211818310171561246d5761246d612ab5565b8160405280935085815286868601111561248657600080fd5b858560208301376000602087830101525050509392505050565b803580151581146124b057600080fd5b919050565b803560ff811681146124b057600080fd5b6000602082840312156124d857600080fd5b8135611f0581612acb565b600080604083850312156124f657600080fd5b823561250181612acb565b9150602083013561251181612acb565b809150509250929050565b60008060006060848603121561253157600080fd5b833561253c81612acb565b9250602084013561254c81612acb565b929592945050506040919091013590565b6000806000806080858703121561257357600080fd5b843561257e81612acb565b9350602085013561258e81612acb565b925060408501359150606085013567ffffffffffffffff8111156125b157600080fd5b8501601f810187136125c257600080fd5b6125d18782356020840161242a565b91505092959194509250565b600080604083850312156125f057600080fd5b82356125fb81612acb565b9150612609602084016124a0565b90509250929050565b6000806040838503121561262557600080fd5b823561263081612acb565b946020939093013593505050565b60006020828403121561265057600080fd5b611f05826124a0565b60006020828403121561266b57600080fd5b8135611f0581612ae0565b60006020828403121561268857600080fd5b8151611f0581612ae0565b6000602082840312156126a557600080fd5b5035919050565b600080604083850312156126bf57600080fd5b82359150602083013567ffffffffffffffff8111156126dd57600080fd5b8301601f810185136126ee57600080fd5b6126fd8582356020840161242a565b9150509250929050565b600080600080600060a0868803121561271f57600080fd5b8535945060208601359350612736604087016124b5565b94979396509394606081013594506080013592915050565b6000806000806080858703121561276457600080fd5b84359350612774602086016124b5565b93969395505050506040820135916060013590565b600081518084526127a18160208601602086016129b0565b601f01601f19169290920160200192915050565b600083516127c78184602088016129b0565b8351908301906127db8183602088016129b0565b01949350505050565b7f68747470733a2f2f73746174696f6e30782e636f6d2f6170692f00000000000081526000835161281c81601a8501602088016129b0565b602f60f81b601a91840191820152835161283d81601b8401602088016129b0565b64173539b7b760d91b601b9290910191820152602001949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061288e90830184612789565b9695505050505050565b602081526000611f056020830184612789565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6000821982111561296157612961612a5d565b500190565b60008261297557612975612a73565b500490565b600081600019048311821515161561299457612994612a5d565b500290565b6000828210156129ab576129ab612a5d565b500390565b60005b838110156129cb5781810151838201526020016129b3565b838111156111f05750506000910152565b6000816129eb576129eb612a5d565b506000190190565b600181811c90821680612a0757607f821691505b60208210811415612a2857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612a4257612a42612a5d565b5060010190565b600082612a5857612a58612a73565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461070c57600080fd5b6001600160e01b03198116811461070c57600080fdfea2646970667358221220a54fd76fb71dca976924f8aaec6b313cd64dd0c00167ab37c85094064cb0cc7964736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000006bdd6bb68ec6927f56749b46746f0afa7cda9f3c0000000000000000000000009dbfb700505854c2ab7d545482cec74d4771a091000000000000000000000000000000000000000000000000000000000000001353746174696f6e3a2043616c6c6973746f2d3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443414c3600000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Station: Callisto-6
Arg [1] : _symbol (string): CAL6
Arg [2] : _stationLabs (address): 0x6BDD6Bb68Ec6927F56749b46746F0AFA7CdA9F3c
Arg [3] : _signer (address): 0x9dBfB700505854c2ab7d545482cec74D4771A091
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000006bdd6bb68ec6927f56749b46746f0afa7cda9f3c
Arg [3] : 0000000000000000000000009dbfb700505854c2ab7d545482cec74d4771a091
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [5] : 53746174696f6e3a2043616c6c6973746f2d3600000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 43414c3600000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
42647:6041:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46687:184;;;;;;;;;;-1:-1:-1;46687:184:0;;;;;:::i;:::-;;:::i;:::-;;;9691:14:1;;9684:22;9666:41;;9654:2;9639:18;46687:184:0;;;;;;;;42927:19;;;;;;;;;;;;;;;;;;;20369:25:1;;;20357:2;20342:18;42927:19:0;20223:177:1;45405:109:0;;;;;;;;;;;;;:::i;:::-;;46234:139;;;;;;;;;;-1:-1:-1;46234:139:0;;;;;:::i;:::-;;:::i;21391:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;43017:34::-;;;;;;;;;;-1:-1:-1;43017:34:0;;;;;;;-1:-1:-1;;;;;43017:34:0;;;;;;-1:-1:-1;;;;;8765:32:1;;;8747:51;;8735:2;8720:18;43017:34:0;8601:203:1;22950:221:0;;;;;;;;;;-1:-1:-1;22950:221:0;;;;;:::i;:::-;;:::i;22473:411::-;;;;;;;;;;-1:-1:-1;22473:411:0;;;;;:::i;:::-;;:::i;46379:128::-;;;;;;;;;;-1:-1:-1;46379:128:0;;;;;:::i;:::-;;:::i;35146:113::-;;;;;;;;;;-1:-1:-1;35234:10:0;:17;35146:113;;42707:41;;;;;;;;;;;;42744:4;42707:41;;43056:21;;;;;;;;;;-1:-1:-1;43056:21:0;;;;-1:-1:-1;;;;;43056:21:0;;;23840:339;;;;;;;;;;-1:-1:-1;23840:339:0;;;;;:::i;:::-;;:::i;34814:256::-;;;;;;;;;;-1:-1:-1;34814:256:0;;;;;:::i;:::-;;:::i;42753:41::-;;;;;;;;;;;;42790:4;42753:41;;24250:185;;;;;;;;;;-1:-1:-1;24250:185:0;;;;;:::i;:::-;;:::i;45520:426::-;;;;;;;;;;-1:-1:-1;45520:426:0;;;;;:::i;:::-;;:::i;43717:1043::-;;;;;;:::i;:::-;;:::i;35336:233::-;;;;;;;;;;-1:-1:-1;35336:233:0;;;;;:::i;:::-;;:::i;21085:239::-;;;;;;;;;;-1:-1:-1;21085:239:0;;;;;:::i;:::-;;:::i;43084:41::-;;;;;;;;;;-1:-1:-1;43084:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;20815:208;;;;;;;;;;-1:-1:-1;20815:208:0;;;;;:::i;:::-;;:::i;42863:32::-;;;;;;;;;;;;;;;;42902:20;;;;;;;;;;-1:-1:-1;42902:20:0;;;;-1:-1:-1;;;;;42902:20:0;;;21560:104;;;;;;;;;;;;;:::i;48381:159::-;;;;;;;;;;-1:-1:-1;48381:159:0;;;;;:::i;:::-;;:::i;23243:295::-;;;;;;;;;;-1:-1:-1;23243:295:0;;;;;:::i;:::-;;:::i;48546:90::-;;;;;;;;;;-1:-1:-1;48546:90:0;;;;;:::i;:::-;;:::i;24506:328::-;;;;;;;;;;-1:-1:-1;24506:328:0;;;;;:::i;:::-;;:::i;46513:168::-;;;;;;;;;;-1:-1:-1;46513:168:0;;;;;:::i;:::-;;:::i;43130:39::-;;;;;;;;;;-1:-1:-1;43130:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;45952:92;;;;;;;;;;-1:-1:-1;45952:92:0;;;;;:::i;:::-;;:::i;42951:25::-;;;;;;;;;;;;;;;;23609:164;;;;;;;;;;-1:-1:-1;23609:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;23730:25:0;;;23706:4;23730:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;23609:164;42981:31;;;;;;;;;;-1:-1:-1;42981:31:0;;;;;;;;44766:633;;;;;;;;;;-1:-1:-1;44766:633:0;;;;;:::i;:::-;;:::i;46687:184::-;46798:4;46818:47;46853:11;46818:34;:47::i;:::-;46811:54;46687:184;-1:-1:-1;;46687:184:0:o;45405:109::-;43471:5;;-1:-1:-1;;;;;43471:5:0;43457:10;:19;43449:28;;;;;;45457:51:::1;::::0;45465:10:::1;::::0;45486:21:::1;45457:51:::0;::::1;;;::::0;::::1;::::0;;;45486:21;45465:10;45457:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;45405:109::o:0;46234:139::-;43471:5;;-1:-1:-1;;;;;43471:5:0;43457:10;:19;43449:28;;;;;;46307:5:::1;:20:::0;;-1:-1:-1;;;;;;46307:20:0::1;-1:-1:-1::0;;;;;46307:20:0;::::1;::::0;;::::1;::::0;;;46339:28:::1;::::0;8747:51:1;;;46339:28:0::1;::::0;8735:2:1;8720:18;46339:28:0::1;;;;;;;46234:139:::0;:::o;21391:100::-;21445:13;21478:5;21471:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21391:100;:::o;22950:221::-;23026:7;23054:16;23062:7;23054;:16::i;:::-;23046:73;;;;-1:-1:-1;;;23046:73:0;;16187:2:1;23046:73:0;;;16169:21:1;16226:2;16206:18;;;16199:30;16265:34;16245:18;;;16238:62;-1:-1:-1;;;16316:18:1;;;16309:42;16368:19;;23046:73:0;;;;;;;;;-1:-1:-1;23139:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;23139:24:0;;22950:221::o;22473:411::-;22554:13;22570:23;22585:7;22570:14;:23::i;:::-;22554:39;;22618:5;-1:-1:-1;;;;;22612:11:0;:2;-1:-1:-1;;;;;22612:11:0;;;22604:57;;;;-1:-1:-1;;;22604:57:0;;18133:2:1;22604:57:0;;;18115:21:1;18172:2;18152:18;;;18145:30;18211:34;18191:18;;;18184:62;-1:-1:-1;;;18262:18:1;;;18255:31;18303:19;;22604:57:0;17931:397:1;22604:57:0;15928:10;-1:-1:-1;;;;;22696:21:0;;;;:62;;-1:-1:-1;22721:37:0;22738:5;15928:10;23609:164;:::i;22721:37::-;22674:168;;;;-1:-1:-1;;;22674:168:0;;13268:2:1;22674:168:0;;;13250:21:1;13307:2;13287:18;;;13280:30;13346:34;13326:18;;;13319:62;13417:26;13397:18;;;13390:54;13461:19;;22674:168:0;13066:420:1;22674:168:0;22855:21;22864:2;22868:7;22855:8;:21::i;:::-;22543:341;22473:411;;:::o;46379:128::-;43471:5;;-1:-1:-1;;;;;43471:5:0;43457:10;:19;43449:28;;;;;;46469:32:::1;46482:7;46491:9;46469:12;:32::i;:::-;46379:128:::0;;:::o;23840:339::-;24035:41;15928:10;24068:7;24035:18;:41::i;:::-;24027:103;;;;-1:-1:-1;;;24027:103:0;;;;;;;:::i;:::-;24143:28;24153:4;24159:2;24163:7;24143:9;:28::i;34814:256::-;34911:7;34947:23;34964:5;34947:16;:23::i;:::-;34939:5;:31;34931:87;;;;-1:-1:-1;;;34931:87:0;;10908:2:1;34931:87:0;;;10890:21:1;10947:2;10927:18;;;10920:30;10986:34;10966:18;;;10959:62;-1:-1:-1;;;11037:18:1;;;11030:41;11088:19;;34931:87:0;10706:407:1;34931:87:0;-1:-1:-1;;;;;;35036:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;34814:256::o;24250:185::-;24388:39;24405:4;24411:2;24415:7;24388:39;;;;;;;;;;;;:16;:39::i;45520:426::-;43471:5;;-1:-1:-1;;;;;43471:5:0;43457:10;:19;43449:28;;;;;;45623:10:::1;::::0;45610:23:::1;::::0;42790:4:::1;45610:23;:::i;:::-;45600:6;:33;;45592:42;;;::::0;::::1;;45658:1;45649:6;:10;45641:19;;;::::0;::::1;;45673:6;45669:245;45685:6;45683:1;:8;45669:245;;;45707:23;45787:30;45811:4;45787:15;:30::i;:::-;45824:23;45833:13;35234:10:::0;:17;;35146:113;45833:13:::1;45824:8;:23::i;:::-;45740:117;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45707:151;;45867:39;45872:3;45877:13;35234:10:::0;:17;;35146:113;45877:13:::1;45892:9;45867:39;;;;;;;;;;;::::0;:4:::1;:39::i;:::-;-1:-1:-1::0;45693:3:0;::::1;::::0;::::1;:::i;:::-;;;;45669:245;;;;45934:6;45920:10;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;45520:426:0:o;43717:1043::-;43838:1;43829:6;:10;43821:54;;;;-1:-1:-1;;;43821:54:0;;20065:2:1;43821:54:0;;;20047:21:1;20104:2;20084:18;;;20077:30;20143:33;20123:18;;;20116:61;20194:18;;43821:54:0;19863:355:1;43821:54:0;43913:4;;43900:17;;42744:4;43900:17;:::i;:::-;43890:6;:27;;43882:58;;;;-1:-1:-1;;;43882:58:0;;19718:2:1;43882:58:0;;;19700:21:1;19757:2;19737:18;;;19730:30;-1:-1:-1;;;19776:18:1;;;19769:48;19834:18;;43882:58:0;19516:342:1;43882:58:0;43955:12;;;;43947:44;;;;-1:-1:-1;;;43947:44:0;;17785:2:1;43947:44:0;;;17767:21:1;17824:2;17804:18;;;17797:30;-1:-1:-1;;;17843:18:1;;;17836:49;17902:18;;43947:44:0;17583:343:1;43947:44:0;44013:10;44006:18;;;;:6;:18;;;;;;44037:9;;44006:27;;44027:6;;44006:27;:::i;:::-;:40;;43998:49;;;;;;44080:39;;-1:-1:-1;;44097:10:0;6470:2:1;6466:15;6462:53;44080:39:0;;;6450:66:1;6532:12;;;6525:28;;;44054:13:0;;6569:12:1;;44080:39:0;;;-1:-1:-1;;44080:39:0;;;;;;;;;44070:50;;44080:39;44070:50;;;;44168:6;;44070:50;;-1:-1:-1;;;;;;44168:6:0;44135:29;44070:50;44153:2;44157;44161;44135:10;:29::i;:::-;-1:-1:-1;;;;;44135:39:0;;44127:48;;;;;;44182:17;44211:5;;44202:6;:14;;;;:::i;:::-;44182:34;;44244:9;44231;:22;44223:105;;;;-1:-1:-1;;;44223:105:0;;14929:2:1;44223:105:0;;;14911:21:1;14968:2;14948:18;;;14941:30;15007:34;14987:18;;;14980:62;15078:34;15058:18;;;15051:62;-1:-1:-1;;;15129:19:1;;;15122:37;15176:19;;44223:105:0;14727:474:1;44223:105:0;44339:6;44335:252;44351:6;44349:1;:8;44335:252;;;44373:23;44453:30;44477:4;44453:15;:30::i;:::-;44490:23;44499:13;35234:10;:17;;35146:113;44490:23;44406:117;;;;;;;;;:::i;:::-;;;;;;;;;;;;;44373:151;;44533:46;44538:10;44550:13;35234:10;:17;;35146:113;44533:46;-1:-1:-1;44359:3:0;;;;:::i;:::-;;;;44335:252;;;;44601:6;44593:4;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;44621:10:0;44614:18;;;;:6;:18;;;;;:28;;44636:6;;44614:18;:28;;44636:6;;44614:28;:::i;:::-;;;;-1:-1:-1;;44667:11:0;;:37;;44650:12;;44667:11;;;-1:-1:-1;;;;;44667:11:0;;44690:9;;44650:12;44667:37;44650:12;44667:37;44690:9;44667:11;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44649:55;;;44719:7;44711:43;;;;-1:-1:-1;;;44711:43:0;;19366:2:1;44711:43:0;;;19348:21:1;19405:2;19385:18;;;19378:30;19444:25;19424:18;;;19417:53;19487:18;;44711:43:0;19164:347:1;44711:43:0;43814:946;;;43717:1043;;;;;:::o;35336:233::-;35411:7;35447:30;35234:10;:17;;35146:113;35447:30;35439:5;:38;35431:95;;;;-1:-1:-1;;;35431:95:0;;18953:2:1;35431:95:0;;;18935:21:1;18992:2;18972:18;;;18965:30;19031:34;19011:18;;;19004:62;-1:-1:-1;;;19082:18:1;;;19075:42;19134:19;;35431:95:0;18751:408:1;35431:95:0;35544:10;35555:5;35544:17;;;;;;;;:::i;:::-;;;;;;;;;35537:24;;35336:233;;;:::o;21085:239::-;21157:7;21193:16;;;:7;:16;;;;;;-1:-1:-1;;;;;21193:16:0;21228:19;21220:73;;;;-1:-1:-1;;;21220:73:0;;14104:2:1;21220:73:0;;;14086:21:1;14143:2;14123:18;;;14116:30;14182:34;14162:18;;;14155:62;-1:-1:-1;;;14233:18:1;;;14226:39;14282:19;;21220:73:0;13902:405:1;20815:208:0;20887:7;-1:-1:-1;;;;;20915:19:0;;20907:74;;;;-1:-1:-1;;;20907:74:0;;13693:2:1;20907:74:0;;;13675:21:1;13732:2;13712:18;;;13705:30;13771:34;13751:18;;;13744:62;-1:-1:-1;;;13822:18:1;;;13815:40;13872:19;;20907:74:0;13491:406:1;20907:74:0;-1:-1:-1;;;;;;20999:16:0;;;;;:9;:16;;;;;;;20815:208::o;21560:104::-;21616:13;21649:7;21642:14;;;;;:::i;48381:159::-;48485:11;;;;;-1:-1:-1;;;;;48485:11:0;48463:10;:34;48455:43;;;;;;48505:11;:29;;-1:-1:-1;;;;;48505:29:0;;;;;-1:-1:-1;;;;;;48505:29:0;;;;;;;;;48381:159::o;23243:295::-;-1:-1:-1;;;;;23346:24:0;;15928:10;23346:24;;23338:62;;;;-1:-1:-1;;;23338:62:0;;12501:2:1;23338:62:0;;;12483:21:1;12540:2;12520:18;;;12513:30;12579:27;12559:18;;;12552:55;12624:18;;23338:62:0;12299:349:1;23338:62:0;15928:10;23413:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;23413:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;23413:53:0;;;;;;;;;;23482:48;;9666:41:1;;;23413:42:0;;15928:10;23482:48;;9639:18:1;23482:48:0;;;;;;;23243:295;;:::o;48546:90::-;43471:5;;-1:-1:-1;;;;;43471:5:0;43457:10;:19;43449:28;;;;;;48613:5:::1;:17:::0;48546:90::o;24506:328::-;24681:41;15928:10;24714:7;24681:18;:41::i;:::-;24673:103;;;;-1:-1:-1;;;24673:103:0;;;;;;;:::i;:::-;24787:39;24801:4;24807:2;24811:7;24820:5;24787:13;:39::i;:::-;24506:328;;;;:::o;46513:168::-;46612:13;46641:34;46667:7;46641:25;:34::i;45952:92::-;43471:5;;-1:-1:-1;;;;;43471:5:0;43457:10;:19;43449:28;;;;;;46016:12:::1;:22:::0;;-1:-1:-1;;46016:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;45952:92::o;44766:633::-;44871:10;44863:19;;;;:7;:19;;;;;;;;44862:20;44854:63;;;;-1:-1:-1;;;44854:63:0;;17010:2:1;44854:63:0;;;16992:21:1;17049:2;17029:18;;;17022:30;17088:32;17068:18;;;17061:60;17138:18;;44854:63:0;16808:354:1;44854:63:0;44950:37;;-1:-1:-1;;44967:10:0;6470:2:1;6466:15;6462:53;44950:37:0;;;6450:66:1;6532:12;;;6525:28;;;44924:13:0;;6569:12:1;;44950:37:0;;;-1:-1:-1;;44950:37:0;;;;;;;;;44940:48;;44950:37;44940:48;;;;45036:6;;44940:48;;-1:-1:-1;;;;;;45036:6:0;45003:29;44940:48;45021:2;45025;45029;45003:10;:29::i;:::-;-1:-1:-1;;;;;45003:39:0;;44995:48;;;;;;45054:6;45050:253;45066:7;45064:1;:9;45050:253;;;45089:23;45169:30;45193:4;45169:15;:30::i;:::-;45206:23;45215:13;35234:10;:17;;35146:113;45206:23;45122:117;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45089:151;;45249:46;45254:10;45266:13;35234:10;:17;;35146:113;45249:46;-1:-1:-1;45075:3:0;;;;:::i;:::-;;;;45050:253;;;;45317:7;45309:4;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;45338:10:0;45331:18;;;;:6;:18;;;;;:29;;45353:7;;45331:18;:29;;45353:7;;45331:29;:::i;:::-;;;;-1:-1:-1;;45375:10:0;45367:19;;;;:7;:19;;;;;:26;;-1:-1:-1;;45367:26:0;45389:4;45367:26;;;-1:-1:-1;;;;;44766:633:0:o;34506:224::-;34608:4;-1:-1:-1;;;;;;34632:50:0;;-1:-1:-1;;;34632:50:0;;:90;;;34686:36;34710:11;34686:23;:36::i;26344:127::-;26409:4;26433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;26433:16:0;:30;;;26344:127::o;30326:174::-;30401:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;30401:29:0;-1:-1:-1;;;;;30401:29:0;;;;;;;;:24;;30455:23;30401:24;30455:14;:23::i;:::-;-1:-1:-1;;;;;30446:46:0;;;;;;;;;;;30326:174;;:::o;41925:217::-;42025:16;42033:7;42025;:16::i;:::-;42017:75;;;;-1:-1:-1;;;42017:75:0;;14514:2:1;42017:75:0;;;14496:21:1;14553:2;14533:18;;;14526:30;14592:34;14572:18;;;14565:62;-1:-1:-1;;;14643:18:1;;;14636:44;14697:19;;42017:75:0;14312:410:1;42017:75:0;42103:19;;;;:10;:19;;;;;;;;:31;;;;;;;;:::i;26638:348::-;26731:4;26756:16;26764:7;26756;:16::i;:::-;26748:73;;;;-1:-1:-1;;;26748:73:0;;12855:2:1;26748:73:0;;;12837:21:1;12894:2;12874:18;;;12867:30;12933:34;12913:18;;;12906:62;-1:-1:-1;;;12984:18:1;;;12977:42;13036:19;;26748:73:0;12653:408:1;26748:73:0;26832:13;26848:23;26863:7;26848:14;:23::i;:::-;26832:39;;26901:5;-1:-1:-1;;;;;26890:16:0;:7;-1:-1:-1;;;;;26890:16:0;;:51;;;;26934:7;-1:-1:-1;;;;;26910:31:0;:20;26922:7;26910:11;:20::i;:::-;-1:-1:-1;;;;;26910:31:0;;26890:51;:87;;;-1:-1:-1;;;;;;23730:25:0;;;23706:4;23730:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;26945:32;26882:96;26638:348;-1:-1:-1;;;;26638:348:0:o;29630:578::-;29789:4;-1:-1:-1;;;;;29762:31:0;:23;29777:7;29762:14;:23::i;:::-;-1:-1:-1;;;;;29762:31:0;;29754:85;;;;-1:-1:-1;;;29754:85:0;;16600:2:1;29754:85:0;;;16582:21:1;16639:2;16619:18;;;16612:30;16678:34;16658:18;;;16651:62;-1:-1:-1;;;16729:18:1;;;16722:39;16778:19;;29754:85:0;16398:405:1;29754:85:0;-1:-1:-1;;;;;29858:16:0;;29850:65;;;;-1:-1:-1;;;29850:65:0;;12096:2:1;29850:65:0;;;12078:21:1;12135:2;12115:18;;;12108:30;12174:34;12154:18;;;12147:62;-1:-1:-1;;;12225:18:1;;;12218:34;12269:19;;29850:65:0;11894:400:1;29850:65:0;29928:39;29949:4;29955:2;29959:7;29928:20;:39::i;:::-;30032:29;30049:1;30053:7;30032:8;:29::i;:::-;-1:-1:-1;;;;;30074:15:0;;;;;;:9;:15;;;;;:20;;30093:1;;30074:15;:20;;30093:1;;30074:20;:::i;:::-;;;;-1:-1:-1;;;;;;;30105:13:0;;;;;;:9;:13;;;;;:18;;30122:1;;30105:13;:18;;30122:1;;30105:18;:::i;:::-;;;;-1:-1:-1;;30134:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;30134:21:0;-1:-1:-1;;;;;30134:21:0;;;;;;;;;30173:27;;30134:16;;30173:27;;;;;;;29630:578;;;:::o;47003:459::-;47066:13;-1:-1:-1;;;;;47101:23:0;;47145:2;47088:10;47186;47145:2;47186:1;:10;:::i;:::-;:14;;47199:1;47186:14;:::i;:::-;47176:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47176:25:0;;47154:47;;-1:-1:-1;;;47208:6:0;47215:1;47208:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;47208:15:0;;;;;;;;;-1:-1:-1;;;47230:6:0;47237:1;47230:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;47230:15:0;;;;;;;;-1:-1:-1;47257:9:0;47269:10;47273:6;47269:1;:10;:::i;:::-;:14;;47282:1;47269:14;:::i;:::-;47257:26;;47252:115;47289:1;47285;:5;47252:115;;;-1:-1:-1;;;47327:5:0;47335:3;47327:11;47318:21;;;;;;;:::i;:::-;;;;47306:6;47313:1;47306:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;47306:33:0;;;;;;;;-1:-1:-1;47358:1:0;47348:11;;;;;47292:3;;;:::i;:::-;;;47252:115;;;-1:-1:-1;47381:10:0;;47373:55;;;;-1:-1:-1;;;47373:55:0;;10547:2:1;47373:55:0;;;10529:21:1;;;10566:18;;;10559:30;10625:34;10605:18;;;10598:62;10677:18;;47373:55:0;10345:356:1;47472:631:0;47528:13;47731:10;47727:43;;-1:-1:-1;;47752:10:0;;;;;;;;;;;;-1:-1:-1;;;47752:10:0;;;;;47472:631::o;47727:43::-;47791:5;47776:12;47824:62;47831:9;;47824:62;;47851:8;;;;:::i;:::-;;-1:-1:-1;47868:10:0;;-1:-1:-1;47876:2:0;47868:10;;:::i;:::-;;;47824:62;;;47892:19;47924:6;47914:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47914:17:0;;47892:39;;47938:132;47945:10;;47938:132;;47966:11;47976:1;47966:11;;:::i;:::-;;-1:-1:-1;48029:10:0;48037:2;48029:5;:10;:::i;:::-;48016:24;;:2;:24;:::i;:::-;48003:39;;47986:6;47993;47986:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;47986:56:0;;;;;;;;-1:-1:-1;48051:11:0;48060:2;48051:11;;:::i;:::-;;;47938:132;;46050:178;46154:29;46164:2;46168:7;46177:5;46154:9;:29::i;:::-;46190:32;46203:7;46212:9;46190:12;:32::i;48109:266::-;48259:59;;7309:66:1;48259:59:0;;;7297:79:1;7392:12;;;7385:28;;;48201:15:0;;;;7429:12:1;;48259:59:0;;;-1:-1:-1;;48259:59:0;;;;;;;;;48249:70;;48259:59;48249:70;;;;48333:36;;;;;;;;;9945:25:1;;;10018:4;10006:17;;9986:18;;;9979:45;;;;10040:18;;;10033:34;;;10083:18;;;10076:34;;;48249:70:0;-1:-1:-1;48333:36:0;;9917:19:1;;48333:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;48333:36:0;;-1:-1:-1;;48333:36:0;;;48109:266;-1:-1:-1;;;;;;;48109:266:0:o;25716:315::-;25873:28;25883:4;25889:2;25893:7;25873:9;:28::i;:::-;25920:48;25943:4;25949:2;25953:7;25962:5;25920:22;:48::i;:::-;25912:111;;;;-1:-1:-1;;;25912:111:0;;;;;;;:::i;41090:679::-;41163:13;41197:16;41205:7;41197;:16::i;:::-;41189:78;;;;-1:-1:-1;;;41189:78:0;;15769:2:1;41189:78:0;;;15751:21:1;15808:2;15788:18;;;15781:30;15847:34;15827:18;;;15820:62;-1:-1:-1;;;15898:18:1;;;15891:47;15955:19;;41189:78:0;15567:413:1;41189:78:0;41280:23;41306:19;;;:10;:19;;;;;41280:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41336:18;41357:10;22394:9;;;;;;;;;-1:-1:-1;22394:9:0;;;22317:94;41357:10;41336:31;;41449:4;41443:18;41465:1;41443:23;41439:72;;;-1:-1:-1;41490:9:0;41090:679;-1:-1:-1;;41090:679:0:o;41439:72::-;41615:23;;:27;41611:108;;41690:4;41696:9;41673:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;41659:48;;;;41090:679;;;:::o;41611:108::-;41738:23;41753:7;41738:14;:23::i;20446:305::-;20548:4;-1:-1:-1;;;;;;20585:40:0;;-1:-1:-1;;;20585:40:0;;:105;;-1:-1:-1;;;;;;;20642:48:0;;-1:-1:-1;;;20642:48:0;20585:105;:158;;;-1:-1:-1;;;;;;;;;;19053:40:0;;;20707:36;18944:157;43497:214;43649:56;43687:4;43693:2;43697:7;43649:37;:56::i;27665:321::-;27795:18;27801:2;27805:7;27795:5;:18::i;:::-;27846:54;27877:1;27881:2;27885:7;27894:5;27846:22;:54::i;:::-;27824:154;;;;-1:-1:-1;;;27824:154:0;;;;;;;:::i;31065:803::-;31220:4;-1:-1:-1;;;;;31241:13:0;;8425:20;8473:8;31237:624;;31277:72;;-1:-1:-1;;;31277:72:0;;-1:-1:-1;;;;;31277:36:0;;;;;:72;;15928:10;;31328:4;;31334:7;;31343:5;;31277:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31277:72:0;;;;;;;;-1:-1:-1;;31277:72:0;;;;;;;;;;;;:::i;:::-;;;31273:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31523:13:0;;31519:272;;31566:60;;-1:-1:-1;;;31566:60:0;;;;;;;:::i;31519:272::-;31741:6;31735:13;31726:6;31722:2;31718:15;31711:38;31273:533;-1:-1:-1;;;;;;31400:55:0;-1:-1:-1;;;31400:55:0;;-1:-1:-1;31393:62:0;;31237:624;-1:-1:-1;31845:4:0;31838:11;;21735:334;21808:13;21842:16;21850:7;21842;:16::i;:::-;21834:76;;;;-1:-1:-1;;;21834:76:0;;17369:2:1;21834:76:0;;;17351:21:1;17408:2;17388:18;;;17381:30;17447:34;17427:18;;;17420:62;-1:-1:-1;;;17498:18:1;;;17491:45;17553:19;;21834:76:0;17167:411:1;21834:76:0;21923:21;21947:10;22394:9;;;;;;;;;-1:-1:-1;22394:9:0;;;22317:94;21947:10;21923:34;;21999:1;21981:7;21975:21;:25;:86;;;;;;;;;;;;;;;;;22027:7;22036:18;:7;:16;:18::i;:::-;22010:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21975:86;21968:93;21735:334;-1:-1:-1;;;21735:334:0:o;36182:589::-;-1:-1:-1;;;;;36388:18:0;;36384:187;;36423:40;36455:7;37598:10;:17;;37571:24;;;;:15;:24;;;;;:44;;;37626:24;;;;;;;;;;;;37494:164;36423:40;36384:187;;;36493:2;-1:-1:-1;;;;;36485:10:0;:4;-1:-1:-1;;;;;36485:10:0;;36481:90;;36512:47;36545:4;36551:7;36512:32;:47::i;:::-;-1:-1:-1;;;;;36585:16:0;;36581:183;;36618:45;36655:7;36618:36;:45::i;36581:183::-;36691:4;-1:-1:-1;;;;;36685:10:0;:2;-1:-1:-1;;;;;36685:10:0;;36681:83;;36712:40;36740:2;36744:7;36712:27;:40::i;28322:382::-;-1:-1:-1;;;;;28402:16:0;;28394:61;;;;-1:-1:-1;;;28394:61:0;;15408:2:1;28394:61:0;;;15390:21:1;;;15427:18;;;15420:30;15486:34;15466:18;;;15459:62;15538:18;;28394:61:0;15206:356:1;28394:61:0;28475:16;28483:7;28475;:16::i;:::-;28474:17;28466:58;;;;-1:-1:-1;;;28466:58:0;;11739:2:1;28466:58:0;;;11721:21:1;11778:2;11758:18;;;11751:30;11817;11797:18;;;11790:58;11865:18;;28466:58:0;11537:352:1;28466:58:0;28537:45;28566:1;28570:2;28574:7;28537:20;:45::i;:::-;-1:-1:-1;;;;;28595:13:0;;;;;;:9;:13;;;;;:18;;28612:1;;28595:13;:18;;28612:1;;28595:18;:::i;:::-;;;;-1:-1:-1;;28624:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;28624:21:0;-1:-1:-1;;;;;28624:21:0;;;;;;;;28663:33;;28624:16;;;28663:33;;28624:16;;28663:33;28322:382;;:::o;16381:723::-;16437:13;16658:10;16654:53;;-1:-1:-1;;16685:10:0;;;;;;;;;;;;-1:-1:-1;;;16685:10:0;;;;;16381:723::o;16654:53::-;16732:5;16717:12;16773:78;16780:9;;16773:78;;16806:8;;;;:::i;:::-;;-1:-1:-1;16829:10:0;;-1:-1:-1;16837:2:0;16829:10;;:::i;:::-;;;16773:78;;;16861:19;16893:6;16883:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16883:17:0;;16861:39;;16911:154;16918:10;;16911:154;;16945:11;16955:1;16945:11;;:::i;:::-;;-1:-1:-1;17014:10:0;17022:2;17014:5;:10;:::i;:::-;17001:24;;:2;:24;:::i;:::-;16988:39;;16971:6;16978;16971:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;16971:56:0;;;;;;;;-1:-1:-1;17042:11:0;17051:2;17042:11;;:::i;:::-;;;16911:154;;38285:988;38551:22;38601:1;38576:22;38593:4;38576:16;:22::i;:::-;:26;;;;:::i;:::-;38613:18;38634:26;;;:17;:26;;;;;;38551:51;;-1:-1:-1;38767:28:0;;;38763:328;;-1:-1:-1;;;;;38834:18:0;;38812:19;38834:18;;;:12;:18;;;;;;;;:34;;;;;;;;;38885:30;;;;;;:44;;;39002:30;;:17;:30;;;;;:43;;;38763:328;-1:-1:-1;39187:26:0;;;;:17;:26;;;;;;;;39180:33;;;-1:-1:-1;;;;;39231:18:0;;;;;:12;:18;;;;;:34;;;;;;;39224:41;38285:988::o;39568:1079::-;39846:10;:17;39821:22;;39846:21;;39866:1;;39846:21;:::i;:::-;39878:18;39899:24;;;:15;:24;;;;;;40272:10;:26;;39821:46;;-1:-1:-1;39899:24:0;;39821:46;;40272:26;;;;;;:::i;:::-;;;;;;;;;40250:48;;40336:11;40311:10;40322;40311:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;40416:28;;;:15;:28;;;;;;;:41;;;40588:24;;;;;40581:31;40623:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;39639:1008;;;39568:1079;:::o;37072:221::-;37157:14;37174:20;37191:2;37174:16;:20::i;:::-;-1:-1:-1;;;;;37205:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;37250:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;37072:221:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:160::-;715:20;;771:13;;764:21;754:32;;744:60;;800:1;797;790:12;744:60;650:160;;;:::o;815:156::-;881:20;;941:4;930:16;;920:27;;910:55;;961:1;958;951:12;976:247;1035:6;1088:2;1076:9;1067:7;1063:23;1059:32;1056:52;;;1104:1;1101;1094:12;1056:52;1143:9;1130:23;1162:31;1187:5;1162:31;:::i;1488:388::-;1556:6;1564;1617:2;1605:9;1596:7;1592:23;1588:32;1585:52;;;1633:1;1630;1623:12;1585:52;1672:9;1659:23;1691:31;1716:5;1691:31;:::i;:::-;1741:5;-1:-1:-1;1798:2:1;1783:18;;1770:32;1811:33;1770:32;1811:33;:::i;:::-;1863:7;1853:17;;;1488:388;;;;;:::o;1881:456::-;1958:6;1966;1974;2027:2;2015:9;2006:7;2002:23;1998:32;1995:52;;;2043:1;2040;2033:12;1995:52;2082:9;2069:23;2101:31;2126:5;2101:31;:::i;:::-;2151:5;-1:-1:-1;2208:2:1;2193:18;;2180:32;2221:33;2180:32;2221:33;:::i;:::-;1881:456;;2273:7;;-1:-1:-1;;;2327:2:1;2312:18;;;;2299:32;;1881:456::o;2342:794::-;2437:6;2445;2453;2461;2514:3;2502:9;2493:7;2489:23;2485:33;2482:53;;;2531:1;2528;2521:12;2482:53;2570:9;2557:23;2589:31;2614:5;2589:31;:::i;:::-;2639:5;-1:-1:-1;2696:2:1;2681:18;;2668:32;2709:33;2668:32;2709:33;:::i;:::-;2761:7;-1:-1:-1;2815:2:1;2800:18;;2787:32;;-1:-1:-1;2870:2:1;2855:18;;2842:32;2897:18;2886:30;;2883:50;;;2929:1;2926;2919:12;2883:50;2952:22;;3005:4;2997:13;;2993:27;-1:-1:-1;2983:55:1;;3034:1;3031;3024:12;2983:55;3057:73;3122:7;3117:2;3104:16;3099:2;3095;3091:11;3057:73;:::i;:::-;3047:83;;;2342:794;;;;;;;:::o;3141:315::-;3206:6;3214;3267:2;3255:9;3246:7;3242:23;3238:32;3235:52;;;3283:1;3280;3273:12;3235:52;3322:9;3309:23;3341:31;3366:5;3341:31;:::i;:::-;3391:5;-1:-1:-1;3415:35:1;3446:2;3431:18;;3415:35;:::i;:::-;3405:45;;3141:315;;;;;:::o;3461:::-;3529:6;3537;3590:2;3578:9;3569:7;3565:23;3561:32;3558:52;;;3606:1;3603;3596:12;3558:52;3645:9;3632:23;3664:31;3689:5;3664:31;:::i;:::-;3714:5;3766:2;3751:18;;;;3738:32;;-1:-1:-1;;;3461:315:1:o;3781:180::-;3837:6;3890:2;3878:9;3869:7;3865:23;3861:32;3858:52;;;3906:1;3903;3896:12;3858:52;3929:26;3945:9;3929:26;:::i;3966:245::-;4024:6;4077:2;4065:9;4056:7;4052:23;4048:32;4045:52;;;4093:1;4090;4083:12;4045:52;4132:9;4119:23;4151:30;4175:5;4151:30;:::i;4216:249::-;4285:6;4338:2;4326:9;4317:7;4313:23;4309:32;4306:52;;;4354:1;4351;4344:12;4306:52;4386:9;4380:16;4405:30;4429:5;4405:30;:::i;4470:180::-;4529:6;4582:2;4570:9;4561:7;4557:23;4553:32;4550:52;;;4598:1;4595;4588:12;4550:52;-1:-1:-1;4621:23:1;;4470:180;-1:-1:-1;4470:180:1:o;4655:518::-;4733:6;4741;4794:2;4782:9;4773:7;4769:23;4765:32;4762:52;;;4810:1;4807;4800:12;4762:52;4846:9;4833:23;4823:33;;4907:2;4896:9;4892:18;4879:32;4934:18;4926:6;4923:30;4920:50;;;4966:1;4963;4956:12;4920:50;4989:22;;5042:4;5034:13;;5030:27;-1:-1:-1;5020:55:1;;5071:1;5068;5061:12;5020:55;5094:73;5159:7;5154:2;5141:16;5136:2;5132;5128:11;5094:73;:::i;:::-;5084:83;;;4655:518;;;;;:::o;5178:456::-;5271:6;5279;5287;5295;5303;5356:3;5344:9;5335:7;5331:23;5327:33;5324:53;;;5373:1;5370;5363:12;5324:53;5409:9;5396:23;5386:33;;5466:2;5455:9;5451:18;5438:32;5428:42;;5489:36;5521:2;5510:9;5506:18;5489:36;:::i;:::-;5178:456;;;;-1:-1:-1;5479:46:1;;5572:2;5557:18;;5544:32;;-1:-1:-1;5623:3:1;5608:19;5595:33;;5178:456;-1:-1:-1;;5178:456:1:o;5639:387::-;5723:6;5731;5739;5747;5800:3;5788:9;5779:7;5775:23;5771:33;5768:53;;;5817:1;5814;5807:12;5768:53;5853:9;5840:23;5830:33;;5882:36;5914:2;5903:9;5899:18;5882:36;:::i;:::-;5639:387;;5872:46;;-1:-1:-1;;;;5965:2:1;5950:18;;5937:32;;6016:2;6001:18;5988:32;;5639:387::o;6031:257::-;6072:3;6110:5;6104:12;6137:6;6132:3;6125:19;6153:63;6209:6;6202:4;6197:3;6193:14;6186:4;6179:5;6175:16;6153:63;:::i;:::-;6270:2;6249:15;-1:-1:-1;;6245:29:1;6236:39;;;;6277:4;6232:50;;6031:257;-1:-1:-1;;6031:257:1:o;6592:470::-;6771:3;6809:6;6803:13;6825:53;6871:6;6866:3;6859:4;6851:6;6847:17;6825:53;:::i;:::-;6941:13;;6900:16;;;;6963:57;6941:13;6900:16;6997:4;6985:17;;6963:57;:::i;:::-;7036:20;;6592:470;-1:-1:-1;;;;6592:470:1:o;7452:934::-;7964:28;7959:3;7952:41;7934:3;8022:6;8016:13;8038:62;8093:6;8088:2;8083:3;8079:12;8072:4;8064:6;8060:17;8038:62;:::i;:::-;-1:-1:-1;;;8159:2:1;8119:16;;;8151:11;;;8144:24;8193:13;;8215:63;8193:13;8264:2;8256:11;;8249:4;8237:17;;8215:63;:::i;:::-;-1:-1:-1;;;8338:2:1;8297:17;;;;8330:11;;;8323:28;8375:4;8367:13;;7452:934;-1:-1:-1;;;;7452:934:1:o;9033:488::-;-1:-1:-1;;;;;9302:15:1;;;9284:34;;9354:15;;9349:2;9334:18;;9327:43;9401:2;9386:18;;9379:34;;;9449:3;9444:2;9429:18;;9422:31;;;9227:4;;9470:45;;9495:19;;9487:6;9470:45;:::i;:::-;9462:53;9033:488;-1:-1:-1;;;;;;9033:488:1:o;10121:219::-;10270:2;10259:9;10252:21;10233:4;10290:44;10330:2;10319:9;10315:18;10307:6;10290:44;:::i;11118:414::-;11320:2;11302:21;;;11359:2;11339:18;;;11332:30;11398:34;11393:2;11378:18;;11371:62;-1:-1:-1;;;11464:2:1;11449:18;;11442:48;11522:3;11507:19;;11118:414::o;18333:413::-;18535:2;18517:21;;;18574:2;18554:18;;;18547:30;18613:34;18608:2;18593:18;;18586:62;-1:-1:-1;;;18679:2:1;18664:18;;18657:47;18736:3;18721:19;;18333:413::o;20405:128::-;20445:3;20476:1;20472:6;20469:1;20466:13;20463:39;;;20482:18;;:::i;:::-;-1:-1:-1;20518:9:1;;20405:128::o;20538:120::-;20578:1;20604;20594:35;;20609:18;;:::i;:::-;-1:-1:-1;20643:9:1;;20538:120::o;20663:168::-;20703:7;20769:1;20765;20761:6;20757:14;20754:1;20751:21;20746:1;20739:9;20732:17;20728:45;20725:71;;;20776:18;;:::i;:::-;-1:-1:-1;20816:9:1;;20663:168::o;20836:125::-;20876:4;20904:1;20901;20898:8;20895:34;;;20909:18;;:::i;:::-;-1:-1:-1;20946:9:1;;20836:125::o;20966:258::-;21038:1;21048:113;21062:6;21059:1;21056:13;21048:113;;;21138:11;;;21132:18;21119:11;;;21112:39;21084:2;21077:10;21048:113;;;21179:6;21176:1;21173:13;21170:48;;;-1:-1:-1;;21214:1:1;21196:16;;21189:27;20966:258::o;21229:136::-;21268:3;21296:5;21286:39;;21305:18;;:::i;:::-;-1:-1:-1;;;21341:18:1;;21229:136::o;21370:380::-;21449:1;21445:12;;;;21492;;;21513:61;;21567:4;21559:6;21555:17;21545:27;;21513:61;21620:2;21612:6;21609:14;21589:18;21586:38;21583:161;;;21666:10;21661:3;21657:20;21654:1;21647:31;21701:4;21698:1;21691:15;21729:4;21726:1;21719:15;21583:161;;21370:380;;;:::o;21755:135::-;21794:3;-1:-1:-1;;21815:17:1;;21812:43;;;21835:18;;:::i;:::-;-1:-1:-1;21882:1:1;21871:13;;21755:135::o;21895:112::-;21927:1;21953;21943:35;;21958:18;;:::i;:::-;-1:-1:-1;21992:9:1;;21895:112::o;22012:127::-;22073:10;22068:3;22064:20;22061:1;22054:31;22104:4;22101:1;22094:15;22128:4;22125:1;22118:15;22144:127;22205:10;22200:3;22196:20;22193:1;22186:31;22236:4;22233:1;22226:15;22260:4;22257:1;22250:15;22276:127;22337:10;22332:3;22328:20;22325:1;22318:31;22368:4;22365:1;22358:15;22392:4;22389:1;22382:15;22408:127;22469:10;22464:3;22460:20;22457:1;22450:31;22500:4;22497:1;22490:15;22524:4;22521:1;22514:15;22540:127;22601:10;22596:3;22592:20;22589:1;22582:31;22632:4;22629:1;22622:15;22656:4;22653:1;22646:15;22672:131;-1:-1:-1;;;;;22747:31:1;;22737:42;;22727:70;;22793:1;22790;22783:12;22808:131;-1:-1:-1;;;;;;22882:32:1;;22872:43;;22862:71;;22929:1;22926;22919:12
Swarm Source
ipfs://a54fd76fb71dca976924f8aaec6b313cd64dd0c00167ab37c85094064cb0cc79
Loading...
Loading
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.