ERC-721
Overview
Max Total Supply
1,069 BAK
Holders
451
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 BAKLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BadApeKids
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-18 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @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/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) /** * @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/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) /** * @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/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) /** * @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/ERC721.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) /** * @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 { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll( address owner, address operator ) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: 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); _afterTokenTransfer(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); _afterTokenTransfer(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 from incorrect owner" ); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @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 Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev 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.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 {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/BadApeKids.sol contract BadApeKids is ERC721, Ownable { using Strings for uint256; //NFT params string public baseURI; string public defaultURI = "https://www.badapekids.xyz/"; string public mycontractURI; bool public finalizeBaseUri = false; //sale stages: //stage 0: init(no minting) //stage 1: burn mint //stage 2: free mint uint8 public stage = 0; event stageChanged(uint8 stage); address private deadAddress = 0x000000000000000000000000000000000000dEaD; IERC721 public apeKidsClubNFT; IERC721 public apeKidsPetNFT; mapping(uint256 => bool) public claimKidId; mapping(uint256 => bool) public claimPetId; // config // 1 - 350 mutant // 351 - 900 samurai // 901 - 1750 scifi // 1751 - 3000 gangster uint256 public mutantCount = 1; uint256 public samuraiCount = 1; uint256 public scifiCount = 1; uint256 public gangsterCount = 1; uint16 public constant maxMutantCount = 350; uint16 public constant maxSamuraiCount = 550; uint16 public constant maxScifiCount = 850; uint16 public constant maxGangsterCount = 1250; uint16 public constant maxSupply = 3000; bool public paused = false; uint256 public currentSupply; //royalty address public royaltyAddr = 0x808385e62d8Dbb230a39291B6e3B97120eD1Ee88; uint256 public royaltyBasis = 500; address[] public tier1Box; address[] public tier2Box; address[] public tier3Box; address[] public tier4Box; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, address _apeKidsClubNFT, address _apeKidsPetNFT ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); apeKidsClubNFT = IERC721(_apeKidsClubNFT); apeKidsPetNFT = IERC721(_apeKidsPetNFT); } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function supportsInterface( bytes4 interfaceId ) public view override(ERC721) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == 0xe8a3d485 /* contractURI() */ || interfaceId == 0x2a55205a /* ERC-2981 royaltyInfo() */ || super.supportsInterface(interfaceId); } function burnMint( uint8 _option, uint256[] memory _petIdsToBurn, uint256[] memory _kidIdToBurn ) public { require(!paused, "contract paused"); require(stage == 1, "Invalid Stage"); require(_option > 0 && _option <= 4, "Invalid option"); if (_option == 1) { // burn 1 AKC, 1 PET , get 1 Mutant Bad Kid + T4 game box require(_kidIdToBurn.length >= 1, "Must burn 1 pets"); require(_petIdsToBurn.length >= 1, "Must burn at least one pet"); require( _petIdsToBurn.length == _kidIdToBurn.length, "Must burn the same amount" ); for (uint8 i = 0; i < _kidIdToBurn.length; i++) { require( mutantCount <= maxMutantCount, "Mint exceed max supply" ); apeKidsClubNFT.transferFrom( msg.sender, deadAddress, _kidIdToBurn[i] ); apeKidsPetNFT.transferFrom( msg.sender, deadAddress, _petIdsToBurn[i] ); _mint(msg.sender, mutantCount); mutantCount++; tier4Box.push(msg.sender); } } else if (_option == 2) { // Burn 1 AKC, get 1 Samurai Bad Kid + T3 game box require(_kidIdToBurn.length >= 1, "Must burn at least one kid"); for (uint8 i = 0; i < _kidIdToBurn.length; i++) { require( samuraiCount <= maxSamuraiCount, "Mint exceed max supply" ); apeKidsClubNFT.transferFrom( msg.sender, deadAddress, _kidIdToBurn[i] ); _mint( msg.sender, samuraiCount + maxSupply - maxGangsterCount - maxScifiCount - maxSamuraiCount ); samuraiCount++; tier3Box.push(msg.sender); } } else if (_option == 3) { // Burn 3 PET, get 1 Scifi Bad Kid + T2 game box require(_petIdsToBurn.length >= 3, "Must burn at least 3 pets"); require( _petIdsToBurn.length % 3 == 0, "Must burn 3 multiplier pets" ); uint256 amount = _petIdsToBurn.length / 3; for (uint8 i = 0; i < _petIdsToBurn.length; i++) { apeKidsPetNFT.transferFrom( msg.sender, deadAddress, _petIdsToBurn[i] ); } for (uint8 i = 0; i < amount; i++) { require(scifiCount <= maxScifiCount, "Mint exceed max supply"); _mint( msg.sender, scifiCount + maxSupply - maxGangsterCount - maxScifiCount ); scifiCount++; tier2Box.push(msg.sender); } } else if (_option == 4) { // Burn 2 PET, get 1 Gangsta Bad Kid + T1 game box require(_petIdsToBurn.length >= 2, "Must burn at least 2 pets"); require( _petIdsToBurn.length % 2 == 0, "Must burn 2 multiplier pets" ); uint256 amount = _petIdsToBurn.length / 2; for (uint8 i = 0; i < _petIdsToBurn.length; i++) { apeKidsPetNFT.transferFrom( msg.sender, deadAddress, _petIdsToBurn[i] ); } for (uint8 i = 0; i < amount; i++) { require( gangsterCount <= maxGangsterCount, "Mint exceed max supply" ); _mint(msg.sender, gangsterCount + maxSupply - maxGangsterCount); gangsterCount++; tier1Box.push(msg.sender); } } currentSupply++; } function freeMint( uint8 _option, uint256[] memory _kidId, uint256[] memory _petId ) public { require(stage == 2, "Invalid Stage"); require(!paused, "contract paused"); require(_option > 0 && _option <= 2, "Invalid option"); if (_option == 1) { require(_petId.length >= 1, "must have a pet"); require(_kidId.length >= 1, "must have a kid"); require(_kidId.length == _petId.length, "incorrect length"); // claim with 1 kid and pet for gangster for (uint8 i = 0; i < _kidId.length; i++) { require(!claimKidId[_kidId[i]], "Kid already claimed"); require(!claimPetId[_petId[i]], "Pet already claimed"); require( apeKidsClubNFT.ownerOf(_kidId[i]) == msg.sender, "Invalid Owner" ); require( gangsterCount <= maxGangsterCount, "Mint exceed max supply" ); claimKidId[_kidId[i]] = true; claimPetId[_petId[i]] = true; _mint(tx.origin, gangsterCount + maxSupply - maxGangsterCount); gangsterCount++; tier1Box.push(msg.sender); } } else if (_option == 2) { require(_petId.length >= 2, "must have at least 2 pet"); require(_kidId.length >= 1, "must have a kid"); require(2 * _kidId.length == _petId.length, "incorrect length"); require(scifiCount <= maxScifiCount, "Mint exceed max supply"); for (uint8 i = 0; i < _petId.length; i++) { require(!claimPetId[_petId[i]], "Pet already claimed"); require( apeKidsPetNFT.ownerOf(_petId[i]) == msg.sender, "Invalid Owner" ); claimPetId[_petId[i]] = true; } for (uint8 i = 0; i < _kidId.length; i++) { require( apeKidsClubNFT.ownerOf(_kidId[i]) == msg.sender, "Invalid Owner" ); claimKidId[_kidId[i]] = true; _mint( tx.origin, scifiCount + maxSupply - maxGangsterCount - maxScifiCount ); scifiCount++; tier1Box.push(msg.sender); } } currentSupply++; } function totalSupply() public view returns (uint256) { return currentSupply; } function tokensOfOwner( address _owner, uint256 startId, uint256 endId ) external view returns (uint256[] memory) { uint256 tokenCount = balanceOf(_owner); if (tokenCount == 0) { return new uint256[](0); } else { uint256[] memory result = new uint256[](tokenCount); uint256 index = 0; for (uint256 tokenId = startId; tokenId < endId; tokenId++) { if (index == tokenCount) break; if (ownerOf(tokenId) == _owner) { result[index] = tokenId; index++; } } return result; } } function tokenURI( uint256 tokenId ) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString())) : defaultURI; } function contractURI() public view returns (string memory) { return string(abi.encodePacked(mycontractURI)); } function royaltyInfo( uint256 _tokenId, uint256 _salePrice ) external view returns (address receiver, uint256 royaltyAmount) { return (royaltyAddr, (_salePrice * royaltyBasis) / 10000); } function nextStage() public onlyOwner { require(stage < 2, "Stage cannot be more than 2"); stage++; emit stageChanged(stage); } function setBaseURI(string memory _newBaseURI) public onlyOwner { require(!finalizeBaseUri); baseURI = _newBaseURI; } function finalizeBaseURI() public onlyOwner { finalizeBaseUri = true; } function setContractURI(string memory _contractURI) public onlyOwner { mycontractURI = _contractURI; } function setRoyalty( address _royaltyAddr, uint256 _royaltyBasis ) public onlyOwner { royaltyAddr = _royaltyAddr; royaltyBasis = _royaltyBasis; } function pause(bool _state) public onlyOwner { paused = _state; } function getAllBox( uint8 option ) public view returns (address[] memory entitledAddresses) { require(option >= 1 && option <= 4, "invalid option"); if (option == 1) { return tier1Box; } else if (option == 2) { return tier2Box; } else if (option == 3) { return tier3Box; } else if (option == 4) { return tier4Box; } } }
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":"string","name":"_initBaseURI","type":"string"},{"internalType":"address","name":"_apeKidsClubNFT","type":"address"},{"internalType":"address","name":"_apeKidsPetNFT","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"stage","type":"uint8"}],"name":"stageChanged","type":"event"},{"inputs":[],"name":"apeKidsClubNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apeKidsPetNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"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":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_option","type":"uint8"},{"internalType":"uint256[]","name":"_petIdsToBurn","type":"uint256[]"},{"internalType":"uint256[]","name":"_kidIdToBurn","type":"uint256[]"}],"name":"burnMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimKidId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimPetId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalizeBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalizeBaseUri","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_option","type":"uint8"},{"internalType":"uint256[]","name":"_kidId","type":"uint256[]"},{"internalType":"uint256[]","name":"_petId","type":"uint256[]"}],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gangsterCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"option","type":"uint8"}],"name":"getAllBox","outputs":[{"internalType":"address[]","name":"entitledAddresses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGangsterCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMutantCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSamuraiCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxScifiCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mutantCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mycontractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextStage","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":"samuraiCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scifiCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltyAddr","type":"address"},{"internalType":"uint256","name":"_royaltyBasis","type":"uint256"}],"name":"setRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tier1Box","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tier2Box","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tier3Box","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tier4Box","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052601b60808190527f68747470733a2f2f7777772e6261646170656b6964732e78797a2f000000000060a09081526200004091600891906200023f565b50600a805463dead00006001600160b01b03199091161790556001600f819055601081905560118190556012556013805460ff19169055601580546001600160a01b03191673808385e62d8dbb230a39291b6e3b97120ed1ee881790556101f4601655348015620000b057600080fd5b5060405162003eae38038062003eae833981016040819052620000d391620003b9565b845185908590620000ec9060009060208501906200023f565b508051620001029060019060208401906200023f565b5050506200011f620001196200016060201b60201c565b62000164565b6200012a83620001b6565b600b80546001600160a01b039384166001600160a01b031991821617909155600c805492909316911617905550620004c3915050565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6006546001600160a01b03163314620002155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b600a5460ff16156200022657600080fd5b80516200023b9060079060208401906200023f565b5050565b8280546200024d9062000470565b90600052602060002090601f016020900481019282620002715760008555620002bc565b82601f106200028c57805160ff1916838001178555620002bc565b82800160010185558215620002bc579182015b82811115620002bc5782518255916020019190600101906200029f565b50620002ca929150620002ce565b5090565b5b80821115620002ca5760008155600101620002cf565b80516001600160a01b0381168114620002fd57600080fd5b919050565b600082601f8301126200031457600080fd5b81516001600160401b0380821115620003315762000331620004ad565b604051601f8301601f19908116603f011681019082821181831017156200035c576200035c620004ad565b816040528381526020925086838588010111156200037957600080fd5b600091505b838210156200039d57858201830151818301840152908201906200037e565b83821115620003af5760008385830101525b9695505050505050565b600080600080600060a08688031215620003d257600080fd5b85516001600160401b0380821115620003ea57600080fd5b620003f889838a0162000302565b965060208801519150808211156200040f57600080fd5b6200041d89838a0162000302565b955060408801519150808211156200043457600080fd5b50620004438882890162000302565b9350506200045460608701620002e5565b91506200046460808701620002e5565b90509295509295909350565b600181811c908216806200048557607f821691505b60208210811415620004a757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6139db80620004d36000396000f3fe608060405234801561001057600080fd5b506004361061035c5760003560e01c806370a08231116101d3578063c6ec690911610104578063e6f3956b116100a2578063eba8c20d1161007c578063eba8c20d14610747578063ee3743ab14610750578063f053d37014610758578063f2fde38b1461076557600080fd5b8063e6f3956b146106fa578063e8a3d48514610703578063e985e9c51461070b57600080fd5b8063caca01aa116100de578063caca01aa146106b8578063d4d1a2e3146106cb578063d5abeb01146106de578063e083ee43146106e757600080fd5b8063c6ec69091461067c578063c839fe9414610685578063c87b56dd146106a557600080fd5b806395d89b4111610171578063ad7ddf271161014b578063ad7ddf2714610619578063b88d4fde1461063c578063c040e6b81461064f578063c35347371461067357600080fd5b806395d89b41146105f5578063a22cb465146105fd578063aa0003131461061057600080fd5b8063771282f6116101ad578063771282f6146105a8578063859b1f47146105b15780638da5cb5b146105d1578063938e3d7b146105e257600080fd5b806370a082311461057a57806370b274c71461058d578063715018a6146105a057600080fd5b80633009c083116102ad5780635c975abb1161024b578063639d7e1111610225578063639d7e111461053e5780636609dc251461054657806366f91fbf146105695780636c0360eb1461057257600080fd5b80635c975abb1461050b57806361a653e8146105185780636352211e1461052b57600080fd5b806337c3fdbc1161028757806337c3fdbc146104d55780633a367a67146104dd57806342842e0e146104e557806355f804b3146104f857600080fd5b80633009c083146104a657806333a52fd0146104b95780633458dcee146104cc57600080fd5b80630eb8fbb01161031a57806320bd2d4c116102f457806320bd2d4c1461044557806323b872dd146104585780632612d98e1461046b5780632a55205a1461047457600080fd5b80630eb8fbb01461040457806310fd332b1461042057806318160ddd1461043357600080fd5b80621f902f1461036157806301ffc9a71461039157806302329a29146103b457806306fdde03146103c9578063081812fc146103de578063095ea7b3146103f1575b600080fd5b61037461036f3660046133f0565b610778565b6040516001600160a01b0390911681526020015b60405180910390f35b6103a461039f36600461336d565b6107a2565b6040519015158152602001610388565b6103c76103c2366004613352565b610803565b005b6103d1610849565b6040516103889190613697565b6103746103ec3660046133f0565b6108db565b6103c76103ff3660046132f1565b610970565b61040d61022681565b60405161ffff9091168152602001610388565b6103c761042e3660046132f1565b610a86565b6014545b604051908152602001610388565b6103746104533660046133f0565b610ad6565b6103c76104663660046131fb565b610ae6565b61040d61015e81565b610487610482366004613409565b610b17565b604080516001600160a01b039093168352602083019190915201610388565b601554610374906001600160a01b031681565b6103c76104c7366004613446565b610b51565b61043760115481565b6103c7611568565b6103d16115a1565b6103c76104f33660046131fb565b61162f565b6103c76105063660046133a7565b61164a565b6013546103a49060ff1681565b600c54610374906001600160a01b031681565b6103746105393660046133f0565b61169b565b6103d1611712565b6103a46105543660046133f0565b600d6020526000908152604090205460ff1681565b610437600f5481565b6103d161171f565b610437610588366004613188565b61172c565b61037461059b3660046133f0565b6117b3565b6103c76117c3565b61043760145481565b6105c46105bf36600461342b565b6117f9565b6040516103889190613612565b6006546001600160a01b0316610374565b6103c76105f03660046133a7565b611a07565b6103d1611a44565b6103c761060b3660046132bc565b611a53565b61043760105481565b6103a46106273660046133f0565b600e6020526000908152604090205460ff1681565b6103c761064a36600461323c565b611a5e565b600a5461066190610100900460ff1681565b60405160ff9091168152602001610388565b61040d6104e281565b61043760165481565b61069861069336600461331d565b611a96565b604051610388919061365f565b6103d16106b33660046133f0565b611b8e565b600b54610374906001600160a01b031681565b6103746106d93660046133f0565b611ce3565b61040d610bb881565b6103c76106f5366004613446565b611cf3565b61040d61035281565b6103d1612636565b6103a46107193660046131c2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61043760125481565b6103c761265e565b600a546103a49060ff1681565b6103c7610773366004613188565b612754565b6019818154811061078857600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001600160e01b031982166380ac58cd60e01b14806107d3575063e8a3d48560e01b6001600160e01b03198316145b806107ee575063152a902d60e11b6001600160e01b03198316145b806107fd57506107fd826127ef565b92915050565b6006546001600160a01b031633146108365760405162461bcd60e51b815260040161082d90613723565b60405180910390fd5b6013805460ff1916911515919091179055565b60606000805461085890613898565b80601f016020809104026020016040519081016040528092919081815260200182805461088490613898565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109545760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161082d565b506000908152600460205260409020546001600160a01b031690565b600061097b8261169b565b9050806001600160a01b0316836001600160a01b031614156109e95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161082d565b336001600160a01b0382161480610a055750610a058133610719565b610a775760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161082d565b610a81838361283f565b505050565b6006546001600160a01b03163314610ab05760405162461bcd60e51b815260040161082d90613723565b601580546001600160a01b0319166001600160a01b039390931692909217909155601655565b601a818154811061078857600080fd5b610af033826128ad565b610b0c5760405162461bcd60e51b815260040161082d90613788565b610a818383836129a4565b60155460165460009182916001600160a01b039091169061271090610b3c9086613836565b610b469190613822565b915091509250929050565b60135460ff1615610b965760405162461bcd60e51b815260206004820152600f60248201526e18dbdb9d1c9858dd081c185d5cd959608a1b604482015260640161082d565b600a5460ff61010090910416600114610be15760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420537461676560981b604482015260640161082d565b60008360ff16118015610bf8575060048360ff1611155b610c355760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21037b83a34b7b760911b604482015260640161082d565b8260ff1660011415610eff57600181511015610c865760405162461bcd60e51b815260206004820152601060248201526f4d757374206275726e2031207065747360801b604482015260640161082d565b600182511015610cd85760405162461bcd60e51b815260206004820152601a60248201527f4d757374206275726e206174206c65617374206f6e6520706574000000000000604482015260640161082d565b8051825114610d295760405162461bcd60e51b815260206004820152601960248201527f4d757374206275726e207468652073616d6520616d6f756e7400000000000000604482015260640161082d565b60005b81518160ff161015610ef957600f5461015e1015610d5c5760405162461bcd60e51b815260040161082d90613758565b600b54600a5483516001600160a01b03928316926323b872dd9233926201000090910490911690869060ff8716908110610d9857610d9861394e565b60200260200101516040518463ffffffff1660e01b8152600401610dbe939291906135b1565b600060405180830381600087803b158015610dd857600080fd5b505af1158015610dec573d6000803e3d6000fd5b5050600c54600a5486516001600160a01b0392831694506323b872dd935033926201000090920490911690879060ff8716908110610e2c57610e2c61394e565b60200260200101516040518463ffffffff1660e01b8152600401610e52939291906135b1565b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b50505050610e9033600f54612b40565b600f8054906000610ea0836138d3565b9091555050601a80546001810182556000919091527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b0319163317905580610ef1816138ee565b915050610d2c565b5061154e565b8260ff16600214156110d257600181511015610f5d5760405162461bcd60e51b815260206004820152601a60248201527f4d757374206275726e206174206c65617374206f6e65206b6964000000000000604482015260640161082d565b60005b81518160ff161015610ef9576010546102261015610f905760405162461bcd60e51b815260040161082d90613758565b600b54600a5483516001600160a01b03928316926323b872dd9233926201000090910490911690869060ff8716908110610fcc57610fcc61394e565b60200260200101516040518463ffffffff1660e01b8152600401610ff2939291906135b1565b600060405180830381600087803b15801561100c57600080fd5b505af1158015611020573d6000803e3d6000fd5b5050601054611069925033915061022690610352906104e29061104690610bb89061380a565b6110509190613855565b61105a9190613855565b6110649190613855565b612b40565b60108054906000611079836138d3565b9091555050601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b03191633179055806110ca816138ee565b915050610f60565b8260ff1660031415611314576003825110156111305760405162461bcd60e51b815260206004820152601960248201527f4d757374206275726e206174206c656173742033207065747300000000000000604482015260640161082d565b6003825161113e919061390e565b1561118b5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206275726e2033206d756c7469706c69657220706574730000000000604482015260640161082d565b60006003835161119b9190613822565b905060005b83518160ff16101561125357600c54600a5485516001600160a01b03928316926323b872dd9233926201000090910490911690889060ff87169081106111e8576111e861394e565b60200260200101516040518463ffffffff1660e01b815260040161120e939291906135b1565b600060405180830381600087803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b50505050808061124b906138ee565b9150506111a0565b5060005b818160ff16101561130d5760115461035210156112865760405162461bcd60e51b815260040161082d90613758565b6011546112a4903390610352906104e29061105090610bb89061380a565b601180549060006112b4836138d3565b9091555050601880546001810182556000919091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b0319163317905580611305816138ee565b915050611257565b505061154e565b8260ff166004141561154e576002825110156113725760405162461bcd60e51b815260206004820152601960248201527f4d757374206275726e206174206c656173742032207065747300000000000000604482015260640161082d565b60028251611380919061390e565b156113cd5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206275726e2032206d756c7469706c69657220706574730000000000604482015260640161082d565b6000600283516113dd9190613822565b905060005b83518160ff16101561149557600c54600a5485516001600160a01b03928316926323b872dd9233926201000090910490911690889060ff871690811061142a5761142a61394e565b60200260200101516040518463ffffffff1660e01b8152600401611450939291906135b1565b600060405180830381600087803b15801561146a57600080fd5b505af115801561147e573d6000803e3d6000fd5b50505050808061148d906138ee565b9150506113e2565b5060005b818160ff16101561154b576012546104e210156114c85760405162461bcd60e51b815260040161082d90613758565b6012546114e29033906104e29061105a90610bb89061380a565b601280549060006114f2836138d3565b9091555050601780546001810182556000919091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b0319163317905580611543816138ee565b915050611499565b50505b6014805490600061155e836138d3565b9190505550505050565b6006546001600160a01b031633146115925760405162461bcd60e51b815260040161082d90613723565b600a805460ff19166001179055565b600880546115ae90613898565b80601f01602080910402602001604051908101604052809291908181526020018280546115da90613898565b80156116275780601f106115fc57610100808354040283529160200191611627565b820191906000526020600020905b81548152906001019060200180831161160a57829003601f168201915b505050505081565b610a8183838360405180602001604052806000815250611a5e565b6006546001600160a01b031633146116745760405162461bcd60e51b815260040161082d90613723565b600a5460ff161561168457600080fd5b8051611697906007906020840190612ff0565b5050565b6000818152600260205260408120546001600160a01b0316806107fd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161082d565b600980546115ae90613898565b600780546115ae90613898565b60006001600160a01b0382166117975760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161082d565b506001600160a01b031660009081526003602052604090205490565b6018818154811061078857600080fd5b6006546001600160a01b031633146117ed5760405162461bcd60e51b815260040161082d90613723565b6117f76000612c82565b565b606060018260ff1610158015611813575060048260ff1611155b6118505760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21037b83a34b7b760911b604482015260640161082d565b8160ff16600114156118be5760178054806020026020016040519081016040528092919081815260200182805480156118b257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611894575b50505050509050919050565b8160ff166002141561192a5760188054806020026020016040519081016040528092919081815260200182805480156118b2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118945750505050509050919050565b8160ff16600314156119965760198054806020026020016040519081016040528092919081815260200182805480156118b2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118945750505050509050919050565b8160ff1660041415611a0257601a8054806020026020016040519081016040528092919081815260200182805480156118b2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118945750505050509050919050565b919050565b6006546001600160a01b03163314611a315760405162461bcd60e51b815260040161082d90613723565b8051611697906009906020840190612ff0565b60606001805461085890613898565b611697338383612cd4565b611a6833836128ad565b611a845760405162461bcd60e51b815260040161082d90613788565b611a9084848484612da3565b50505050565b60606000611aa38561172c565b905080611ac0575050604080516000815260208101909152611b87565b60008167ffffffffffffffff811115611adb57611adb613964565b604051908082528060200260200182016040528015611b04578160200160208202803683370190505b5090506000855b85811015611b805783821415611b2057611b80565b876001600160a01b0316611b338261169b565b6001600160a01b03161415611b6e5780838381518110611b5557611b5561394e565b602090810291909101015281611b6a816138d3565b9250505b80611b78816138d3565b915050611b0b565b5090925050505b9392505050565b6000818152600260205260409020546060906001600160a01b0316611c0d5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161082d565b6000611c17612dd6565b90506000815111611cb25760088054611c2f90613898565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5b90613898565b8015611ca85780601f10611c7d57610100808354040283529160200191611ca8565b820191906000526020600020905b815481529060010190602001808311611c8b57829003601f168201915b5050505050611b87565b80611cbc84612de5565b604051602001611ccd9291906134e6565b6040516020818303038152906040529392505050565b6017818154811061078857600080fd5b600a54610100900460ff16600214611d3d5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420537461676560981b604482015260640161082d565b60135460ff1615611d825760405162461bcd60e51b815260206004820152600f60248201526e18dbdb9d1c9858dd081c185d5cd959608a1b604482015260640161082d565b60008360ff16118015611d99575060028360ff1611155b611dd65760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21037b83a34b7b760911b604482015260640161082d565b8260ff16600114156121b557600181511015611e265760405162461bcd60e51b815260206004820152600f60248201526e1b5d5cdd081a185d994818481c195d608a1b604482015260640161082d565b600182511015611e6a5760405162461bcd60e51b815260206004820152600f60248201526e1b5d5cdd081a185d994818481ada59608a1b604482015260640161082d565b8051825114611eae5760405162461bcd60e51b815260206004820152601060248201526f0d2dcc6dee4e4cac6e840d8cadccee8d60831b604482015260640161082d565b60005b82518160ff161015610ef957600d6000848360ff1681518110611ed657611ed661394e565b60209081029190910181015182528101919091526040016000205460ff1615611f375760405162461bcd60e51b815260206004820152601360248201527212da5908185b1c9958591e4818db185a5b5959606a1b604482015260640161082d565b600e6000838360ff1681518110611f5057611f5061394e565b60209081029190910181015182528101919091526040016000205460ff1615611fb15760405162461bcd60e51b815260206004820152601360248201527214195d08185b1c9958591e4818db185a5b5959606a1b604482015260640161082d565b600b54835133916001600160a01b031690636352211e90869060ff8616908110611fdd57611fdd61394e565b60200260200101516040518263ffffffff1660e01b815260040161200391815260200190565b60206040518083038186803b15801561201b57600080fd5b505afa15801561202f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205391906131a5565b6001600160a01b0316146120795760405162461bcd60e51b815260040161082d906136aa565b6012546104e2101561209d5760405162461bcd60e51b815260040161082d90613758565b6001600d6000858460ff16815181106120b8576120b861394e565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000848460ff16815181106121005761210061394e565b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555061214c326104e261ffff16610bb861ffff1660125461105a919061380a565b6012805490600061215c836138d3565b9091555050601780546001810182556000919091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b03191633179055806121ad816138ee565b915050611eb1565b8260ff166002141561154e576002815110156122135760405162461bcd60e51b815260206004820152601860248201527f6d7573742068617665206174206c656173742032207065740000000000000000604482015260640161082d565b6001825110156122575760405162461bcd60e51b815260206004820152600f60248201526e1b5d5cdd081a185d994818481ada59608a1b604482015260640161082d565b80518251612266906002613836565b146122a65760405162461bcd60e51b815260206004820152601060248201526f0d2dcc6dee4e4cac6e840d8cadccee8d60831b604482015260640161082d565b60115461035210156122ca5760405162461bcd60e51b815260040161082d90613758565b60005b81518160ff16101561247657600e6000838360ff16815181106122f2576122f261394e565b60209081029190910181015182528101919091526040016000205460ff16156123535760405162461bcd60e51b815260206004820152601360248201527214195d08185b1c9958591e4818db185a5b5959606a1b604482015260640161082d565b600c54825133916001600160a01b031690636352211e90859060ff861690811061237f5761237f61394e565b60200260200101516040518263ffffffff1660e01b81526004016123a591815260200190565b60206040518083038186803b1580156123bd57600080fd5b505afa1580156123d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f591906131a5565b6001600160a01b03161461241b5760405162461bcd60e51b815260040161082d906136aa565b6001600e6000848460ff16815181106124365761243661394e565b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061246e906138ee565b9150506122cd565b5060005b82518160ff16101561262557600b54835133916001600160a01b031690636352211e90869060ff86169081106124b2576124b261394e565b60200260200101516040518263ffffffff1660e01b81526004016124d891815260200190565b60206040518083038186803b1580156124f057600080fd5b505afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252891906131a5565b6001600160a01b03161461254e5760405162461bcd60e51b815260040161082d906136aa565b6001600d6000858460ff16815181106125695761256961394e565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506125bc3261035261ffff166104e261ffff16610bb861ffff16601154611050919061380a565b601180549060006125cc836138d3565b9091555050601780546001810182556000919091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b031916331790558061261d816138ee565b91505061247a565b506014805490600061155e836138d3565b6060600960405160200161264a9190613515565b604051602081830303815290604052905090565b6006546001600160a01b031633146126885760405162461bcd60e51b815260040161082d90613723565b600a54600261010090910460ff16106126e35760405162461bcd60e51b815260206004820152601b60248201527f53746167652063616e6e6f74206265206d6f7265207468616e20320000000000604482015260640161082d565b600a8054610100900460ff169060016126fb836138ee565b825460ff91821661010093840a9081029083021990911617909255600a5460405191900490911681527f36e08625927f4c20a74363a4c118d06899c5dbd5a27024d11ca0075e206a7ded915060200160405180910390a1565b6006546001600160a01b0316331461277e5760405162461bcd60e51b815260040161082d90613723565b6001600160a01b0381166127e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082d565b6127ec81612c82565b50565b60006001600160e01b031982166380ac58cd60e01b148061282057506001600160e01b03198216635b5e139f60e01b145b806107fd57506301ffc9a760e01b6001600160e01b03198316146107fd565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906128748261169b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166129265760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161082d565b60006129318361169b565b9050806001600160a01b0316846001600160a01b0316148061296c5750836001600160a01b0316612961846108db565b6001600160a01b0316145b8061299c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166129b78261169b565b6001600160a01b031614612a1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161082d565b6001600160a01b038216612a7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161082d565b612a8860008261283f565b6001600160a01b0383166000908152600360205260408120805460019290612ab1908490613855565b90915550506001600160a01b0382166000908152600360205260408120805460019290612adf90849061380a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216612b965760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161082d565b6000818152600260205260409020546001600160a01b031615612bfb5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161082d565b6001600160a01b0382166000908152600360205260408120805460019290612c2490849061380a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415612d365760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161082d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612dae8484846129a4565b612dba84848484612ee3565b611a905760405162461bcd60e51b815260040161082d906136d1565b60606007805461085890613898565b606081612e095750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e335780612e1d816138d3565b9150612e2c9050600a83613822565b9150612e0d565b60008167ffffffffffffffff811115612e4e57612e4e613964565b6040519080825280601f01601f191660200182016040528015612e78576020820181803683370190505b5090505b841561299c57612e8d600183613855565b9150612e9a600a8661390e565b612ea590603061380a565b60f81b818381518110612eba57612eba61394e565b60200101906001600160f81b031916908160001a905350612edc600a86613822565b9450612e7c565b60006001600160a01b0384163b15612fe557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f279033908990889088906004016135d5565b602060405180830381600087803b158015612f4157600080fd5b505af1925050508015612f71575060408051601f3d908101601f19168201909252612f6e9181019061338a565b60015b612fcb573d808015612f9f576040519150601f19603f3d011682016040523d82523d6000602084013e612fa4565b606091505b508051612fc35760405162461bcd60e51b815260040161082d906136d1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061299c565b506001949350505050565b828054612ffc90613898565b90600052602060002090601f01602090048101928261301e5760008555613064565b82601f1061303757805160ff1916838001178555613064565b82800160010185558215613064579182015b82811115613064578251825591602001919060010190613049565b50613070929150613074565b5090565b5b808211156130705760008155600101613075565b600067ffffffffffffffff8311156130a3576130a3613964565b6130b6601f8401601f19166020016137d9565b90508281528383830111156130ca57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126130f257600080fd5b8135602067ffffffffffffffff82111561310e5761310e613964565b8160051b61311d8282016137d9565b83815282810190868401838801850189101561313857600080fd5b600093505b8584101561315b57803583526001939093019291840191840161313d565b50979650505050505050565b80358015158114611a0257600080fd5b803560ff81168114611a0257600080fd5b60006020828403121561319a57600080fd5b8135611b878161397a565b6000602082840312156131b757600080fd5b8151611b878161397a565b600080604083850312156131d557600080fd5b82356131e08161397a565b915060208301356131f08161397a565b809150509250929050565b60008060006060848603121561321057600080fd5b833561321b8161397a565b9250602084013561322b8161397a565b929592945050506040919091013590565b6000806000806080858703121561325257600080fd5b843561325d8161397a565b9350602085013561326d8161397a565b925060408501359150606085013567ffffffffffffffff81111561329057600080fd5b8501601f810187136132a157600080fd5b6132b087823560208401613089565b91505092959194509250565b600080604083850312156132cf57600080fd5b82356132da8161397a565b91506132e860208401613167565b90509250929050565b6000806040838503121561330457600080fd5b823561330f8161397a565b946020939093013593505050565b60008060006060848603121561333257600080fd5b833561333d8161397a565b95602085013595506040909401359392505050565b60006020828403121561336457600080fd5b611b8782613167565b60006020828403121561337f57600080fd5b8135611b878161398f565b60006020828403121561339c57600080fd5b8151611b878161398f565b6000602082840312156133b957600080fd5b813567ffffffffffffffff8111156133d057600080fd5b8201601f810184136133e157600080fd5b61299c84823560208401613089565b60006020828403121561340257600080fd5b5035919050565b6000806040838503121561341c57600080fd5b50508035926020909101359150565b60006020828403121561343d57600080fd5b611b8782613177565b60008060006060848603121561345b57600080fd5b61346484613177565b9250602084013567ffffffffffffffff8082111561348157600080fd5b61348d878388016130e1565b935060408601359150808211156134a357600080fd5b506134b0868287016130e1565b9150509250925092565b600081518084526134d281602086016020860161386c565b601f01601f19169290920160200192915050565b600083516134f881846020880161386c565b83519083019061350c81836020880161386c565b01949350505050565b600080835481600182811c91508083168061353157607f831692505b602080841082141561355157634e487b7160e01b86526022600452602486fd5b8180156135655760018114613576576135a3565b60ff198616895284890196506135a3565b60008a81526020902060005b8681101561359b5781548b820152908501908301613582565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613608908301846134ba565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136535783516001600160a01b03168352928401929184019160010161362e565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136535783518352928401929184019160010161367b565b602081526000611b8760208301846134ba565b6020808252600d908201526c24b73b30b634b21027bbb732b960991b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601690820152754d696e7420657863656564206d617820737570706c7960501b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561380257613802613964565b604052919050565b6000821982111561381d5761381d613922565b500190565b60008261383157613831613938565b500490565b600081600019048311821515161561385057613850613922565b500290565b60008282101561386757613867613922565b500390565b60005b8381101561388757818101518382015260200161386f565b83811115611a905750506000910152565b600181811c908216806138ac57607f821691505b602082108114156138cd57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156138e7576138e7613922565b5060010190565b600060ff821660ff81141561390557613905613922565b60010192915050565b60008261391d5761391d613938565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146127ec57600080fd5b6001600160e01b0319811681146127ec57600080fdfea26469706673582212209c47c28eb7e771823937f4fddfae260c1e35d68bceec4b2fcc5f24c71c35e82064736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000009bf252f97891b907f002f2887eff9246e3054080000000000000000000000000d4c3c23349348fa67f6d044f1357c54d8e6a661b000000000000000000000000000000000000000000000000000000000000000a4261644170654b69647300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000342414b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002468747470733a2f2f7777772e6261646170656b6964732e78797a2f6170692f74656d702f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061035c5760003560e01c806370a08231116101d3578063c6ec690911610104578063e6f3956b116100a2578063eba8c20d1161007c578063eba8c20d14610747578063ee3743ab14610750578063f053d37014610758578063f2fde38b1461076557600080fd5b8063e6f3956b146106fa578063e8a3d48514610703578063e985e9c51461070b57600080fd5b8063caca01aa116100de578063caca01aa146106b8578063d4d1a2e3146106cb578063d5abeb01146106de578063e083ee43146106e757600080fd5b8063c6ec69091461067c578063c839fe9414610685578063c87b56dd146106a557600080fd5b806395d89b4111610171578063ad7ddf271161014b578063ad7ddf2714610619578063b88d4fde1461063c578063c040e6b81461064f578063c35347371461067357600080fd5b806395d89b41146105f5578063a22cb465146105fd578063aa0003131461061057600080fd5b8063771282f6116101ad578063771282f6146105a8578063859b1f47146105b15780638da5cb5b146105d1578063938e3d7b146105e257600080fd5b806370a082311461057a57806370b274c71461058d578063715018a6146105a057600080fd5b80633009c083116102ad5780635c975abb1161024b578063639d7e1111610225578063639d7e111461053e5780636609dc251461054657806366f91fbf146105695780636c0360eb1461057257600080fd5b80635c975abb1461050b57806361a653e8146105185780636352211e1461052b57600080fd5b806337c3fdbc1161028757806337c3fdbc146104d55780633a367a67146104dd57806342842e0e146104e557806355f804b3146104f857600080fd5b80633009c083146104a657806333a52fd0146104b95780633458dcee146104cc57600080fd5b80630eb8fbb01161031a57806320bd2d4c116102f457806320bd2d4c1461044557806323b872dd146104585780632612d98e1461046b5780632a55205a1461047457600080fd5b80630eb8fbb01461040457806310fd332b1461042057806318160ddd1461043357600080fd5b80621f902f1461036157806301ffc9a71461039157806302329a29146103b457806306fdde03146103c9578063081812fc146103de578063095ea7b3146103f1575b600080fd5b61037461036f3660046133f0565b610778565b6040516001600160a01b0390911681526020015b60405180910390f35b6103a461039f36600461336d565b6107a2565b6040519015158152602001610388565b6103c76103c2366004613352565b610803565b005b6103d1610849565b6040516103889190613697565b6103746103ec3660046133f0565b6108db565b6103c76103ff3660046132f1565b610970565b61040d61022681565b60405161ffff9091168152602001610388565b6103c761042e3660046132f1565b610a86565b6014545b604051908152602001610388565b6103746104533660046133f0565b610ad6565b6103c76104663660046131fb565b610ae6565b61040d61015e81565b610487610482366004613409565b610b17565b604080516001600160a01b039093168352602083019190915201610388565b601554610374906001600160a01b031681565b6103c76104c7366004613446565b610b51565b61043760115481565b6103c7611568565b6103d16115a1565b6103c76104f33660046131fb565b61162f565b6103c76105063660046133a7565b61164a565b6013546103a49060ff1681565b600c54610374906001600160a01b031681565b6103746105393660046133f0565b61169b565b6103d1611712565b6103a46105543660046133f0565b600d6020526000908152604090205460ff1681565b610437600f5481565b6103d161171f565b610437610588366004613188565b61172c565b61037461059b3660046133f0565b6117b3565b6103c76117c3565b61043760145481565b6105c46105bf36600461342b565b6117f9565b6040516103889190613612565b6006546001600160a01b0316610374565b6103c76105f03660046133a7565b611a07565b6103d1611a44565b6103c761060b3660046132bc565b611a53565b61043760105481565b6103a46106273660046133f0565b600e6020526000908152604090205460ff1681565b6103c761064a36600461323c565b611a5e565b600a5461066190610100900460ff1681565b60405160ff9091168152602001610388565b61040d6104e281565b61043760165481565b61069861069336600461331d565b611a96565b604051610388919061365f565b6103d16106b33660046133f0565b611b8e565b600b54610374906001600160a01b031681565b6103746106d93660046133f0565b611ce3565b61040d610bb881565b6103c76106f5366004613446565b611cf3565b61040d61035281565b6103d1612636565b6103a46107193660046131c2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61043760125481565b6103c761265e565b600a546103a49060ff1681565b6103c7610773366004613188565b612754565b6019818154811061078857600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001600160e01b031982166380ac58cd60e01b14806107d3575063e8a3d48560e01b6001600160e01b03198316145b806107ee575063152a902d60e11b6001600160e01b03198316145b806107fd57506107fd826127ef565b92915050565b6006546001600160a01b031633146108365760405162461bcd60e51b815260040161082d90613723565b60405180910390fd5b6013805460ff1916911515919091179055565b60606000805461085890613898565b80601f016020809104026020016040519081016040528092919081815260200182805461088490613898565b80156108d15780601f106108a6576101008083540402835291602001916108d1565b820191906000526020600020905b8154815290600101906020018083116108b457829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109545760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161082d565b506000908152600460205260409020546001600160a01b031690565b600061097b8261169b565b9050806001600160a01b0316836001600160a01b031614156109e95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161082d565b336001600160a01b0382161480610a055750610a058133610719565b610a775760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161082d565b610a81838361283f565b505050565b6006546001600160a01b03163314610ab05760405162461bcd60e51b815260040161082d90613723565b601580546001600160a01b0319166001600160a01b039390931692909217909155601655565b601a818154811061078857600080fd5b610af033826128ad565b610b0c5760405162461bcd60e51b815260040161082d90613788565b610a818383836129a4565b60155460165460009182916001600160a01b039091169061271090610b3c9086613836565b610b469190613822565b915091509250929050565b60135460ff1615610b965760405162461bcd60e51b815260206004820152600f60248201526e18dbdb9d1c9858dd081c185d5cd959608a1b604482015260640161082d565b600a5460ff61010090910416600114610be15760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420537461676560981b604482015260640161082d565b60008360ff16118015610bf8575060048360ff1611155b610c355760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21037b83a34b7b760911b604482015260640161082d565b8260ff1660011415610eff57600181511015610c865760405162461bcd60e51b815260206004820152601060248201526f4d757374206275726e2031207065747360801b604482015260640161082d565b600182511015610cd85760405162461bcd60e51b815260206004820152601a60248201527f4d757374206275726e206174206c65617374206f6e6520706574000000000000604482015260640161082d565b8051825114610d295760405162461bcd60e51b815260206004820152601960248201527f4d757374206275726e207468652073616d6520616d6f756e7400000000000000604482015260640161082d565b60005b81518160ff161015610ef957600f5461015e1015610d5c5760405162461bcd60e51b815260040161082d90613758565b600b54600a5483516001600160a01b03928316926323b872dd9233926201000090910490911690869060ff8716908110610d9857610d9861394e565b60200260200101516040518463ffffffff1660e01b8152600401610dbe939291906135b1565b600060405180830381600087803b158015610dd857600080fd5b505af1158015610dec573d6000803e3d6000fd5b5050600c54600a5486516001600160a01b0392831694506323b872dd935033926201000090920490911690879060ff8716908110610e2c57610e2c61394e565b60200260200101516040518463ffffffff1660e01b8152600401610e52939291906135b1565b600060405180830381600087803b158015610e6c57600080fd5b505af1158015610e80573d6000803e3d6000fd5b50505050610e9033600f54612b40565b600f8054906000610ea0836138d3565b9091555050601a80546001810182556000919091527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e0180546001600160a01b0319163317905580610ef1816138ee565b915050610d2c565b5061154e565b8260ff16600214156110d257600181511015610f5d5760405162461bcd60e51b815260206004820152601a60248201527f4d757374206275726e206174206c65617374206f6e65206b6964000000000000604482015260640161082d565b60005b81518160ff161015610ef9576010546102261015610f905760405162461bcd60e51b815260040161082d90613758565b600b54600a5483516001600160a01b03928316926323b872dd9233926201000090910490911690869060ff8716908110610fcc57610fcc61394e565b60200260200101516040518463ffffffff1660e01b8152600401610ff2939291906135b1565b600060405180830381600087803b15801561100c57600080fd5b505af1158015611020573d6000803e3d6000fd5b5050601054611069925033915061022690610352906104e29061104690610bb89061380a565b6110509190613855565b61105a9190613855565b6110649190613855565b612b40565b60108054906000611079836138d3565b9091555050601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b03191633179055806110ca816138ee565b915050610f60565b8260ff1660031415611314576003825110156111305760405162461bcd60e51b815260206004820152601960248201527f4d757374206275726e206174206c656173742033207065747300000000000000604482015260640161082d565b6003825161113e919061390e565b1561118b5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206275726e2033206d756c7469706c69657220706574730000000000604482015260640161082d565b60006003835161119b9190613822565b905060005b83518160ff16101561125357600c54600a5485516001600160a01b03928316926323b872dd9233926201000090910490911690889060ff87169081106111e8576111e861394e565b60200260200101516040518463ffffffff1660e01b815260040161120e939291906135b1565b600060405180830381600087803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b50505050808061124b906138ee565b9150506111a0565b5060005b818160ff16101561130d5760115461035210156112865760405162461bcd60e51b815260040161082d90613758565b6011546112a4903390610352906104e29061105090610bb89061380a565b601180549060006112b4836138d3565b9091555050601880546001810182556000919091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b0319163317905580611305816138ee565b915050611257565b505061154e565b8260ff166004141561154e576002825110156113725760405162461bcd60e51b815260206004820152601960248201527f4d757374206275726e206174206c656173742032207065747300000000000000604482015260640161082d565b60028251611380919061390e565b156113cd5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206275726e2032206d756c7469706c69657220706574730000000000604482015260640161082d565b6000600283516113dd9190613822565b905060005b83518160ff16101561149557600c54600a5485516001600160a01b03928316926323b872dd9233926201000090910490911690889060ff871690811061142a5761142a61394e565b60200260200101516040518463ffffffff1660e01b8152600401611450939291906135b1565b600060405180830381600087803b15801561146a57600080fd5b505af115801561147e573d6000803e3d6000fd5b50505050808061148d906138ee565b9150506113e2565b5060005b818160ff16101561154b576012546104e210156114c85760405162461bcd60e51b815260040161082d90613758565b6012546114e29033906104e29061105a90610bb89061380a565b601280549060006114f2836138d3565b9091555050601780546001810182556000919091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b0319163317905580611543816138ee565b915050611499565b50505b6014805490600061155e836138d3565b9190505550505050565b6006546001600160a01b031633146115925760405162461bcd60e51b815260040161082d90613723565b600a805460ff19166001179055565b600880546115ae90613898565b80601f01602080910402602001604051908101604052809291908181526020018280546115da90613898565b80156116275780601f106115fc57610100808354040283529160200191611627565b820191906000526020600020905b81548152906001019060200180831161160a57829003601f168201915b505050505081565b610a8183838360405180602001604052806000815250611a5e565b6006546001600160a01b031633146116745760405162461bcd60e51b815260040161082d90613723565b600a5460ff161561168457600080fd5b8051611697906007906020840190612ff0565b5050565b6000818152600260205260408120546001600160a01b0316806107fd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161082d565b600980546115ae90613898565b600780546115ae90613898565b60006001600160a01b0382166117975760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161082d565b506001600160a01b031660009081526003602052604090205490565b6018818154811061078857600080fd5b6006546001600160a01b031633146117ed5760405162461bcd60e51b815260040161082d90613723565b6117f76000612c82565b565b606060018260ff1610158015611813575060048260ff1611155b6118505760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21037b83a34b7b760911b604482015260640161082d565b8160ff16600114156118be5760178054806020026020016040519081016040528092919081815260200182805480156118b257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611894575b50505050509050919050565b8160ff166002141561192a5760188054806020026020016040519081016040528092919081815260200182805480156118b2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118945750505050509050919050565b8160ff16600314156119965760198054806020026020016040519081016040528092919081815260200182805480156118b2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118945750505050509050919050565b8160ff1660041415611a0257601a8054806020026020016040519081016040528092919081815260200182805480156118b2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116118945750505050509050919050565b919050565b6006546001600160a01b03163314611a315760405162461bcd60e51b815260040161082d90613723565b8051611697906009906020840190612ff0565b60606001805461085890613898565b611697338383612cd4565b611a6833836128ad565b611a845760405162461bcd60e51b815260040161082d90613788565b611a9084848484612da3565b50505050565b60606000611aa38561172c565b905080611ac0575050604080516000815260208101909152611b87565b60008167ffffffffffffffff811115611adb57611adb613964565b604051908082528060200260200182016040528015611b04578160200160208202803683370190505b5090506000855b85811015611b805783821415611b2057611b80565b876001600160a01b0316611b338261169b565b6001600160a01b03161415611b6e5780838381518110611b5557611b5561394e565b602090810291909101015281611b6a816138d3565b9250505b80611b78816138d3565b915050611b0b565b5090925050505b9392505050565b6000818152600260205260409020546060906001600160a01b0316611c0d5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161082d565b6000611c17612dd6565b90506000815111611cb25760088054611c2f90613898565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5b90613898565b8015611ca85780601f10611c7d57610100808354040283529160200191611ca8565b820191906000526020600020905b815481529060010190602001808311611c8b57829003601f168201915b5050505050611b87565b80611cbc84612de5565b604051602001611ccd9291906134e6565b6040516020818303038152906040529392505050565b6017818154811061078857600080fd5b600a54610100900460ff16600214611d3d5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420537461676560981b604482015260640161082d565b60135460ff1615611d825760405162461bcd60e51b815260206004820152600f60248201526e18dbdb9d1c9858dd081c185d5cd959608a1b604482015260640161082d565b60008360ff16118015611d99575060028360ff1611155b611dd65760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21037b83a34b7b760911b604482015260640161082d565b8260ff16600114156121b557600181511015611e265760405162461bcd60e51b815260206004820152600f60248201526e1b5d5cdd081a185d994818481c195d608a1b604482015260640161082d565b600182511015611e6a5760405162461bcd60e51b815260206004820152600f60248201526e1b5d5cdd081a185d994818481ada59608a1b604482015260640161082d565b8051825114611eae5760405162461bcd60e51b815260206004820152601060248201526f0d2dcc6dee4e4cac6e840d8cadccee8d60831b604482015260640161082d565b60005b82518160ff161015610ef957600d6000848360ff1681518110611ed657611ed661394e565b60209081029190910181015182528101919091526040016000205460ff1615611f375760405162461bcd60e51b815260206004820152601360248201527212da5908185b1c9958591e4818db185a5b5959606a1b604482015260640161082d565b600e6000838360ff1681518110611f5057611f5061394e565b60209081029190910181015182528101919091526040016000205460ff1615611fb15760405162461bcd60e51b815260206004820152601360248201527214195d08185b1c9958591e4818db185a5b5959606a1b604482015260640161082d565b600b54835133916001600160a01b031690636352211e90869060ff8616908110611fdd57611fdd61394e565b60200260200101516040518263ffffffff1660e01b815260040161200391815260200190565b60206040518083038186803b15801561201b57600080fd5b505afa15801561202f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205391906131a5565b6001600160a01b0316146120795760405162461bcd60e51b815260040161082d906136aa565b6012546104e2101561209d5760405162461bcd60e51b815260040161082d90613758565b6001600d6000858460ff16815181106120b8576120b861394e565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000848460ff16815181106121005761210061394e565b6020026020010151815260200190815260200160002060006101000a81548160ff02191690831515021790555061214c326104e261ffff16610bb861ffff1660125461105a919061380a565b6012805490600061215c836138d3565b9091555050601780546001810182556000919091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b03191633179055806121ad816138ee565b915050611eb1565b8260ff166002141561154e576002815110156122135760405162461bcd60e51b815260206004820152601860248201527f6d7573742068617665206174206c656173742032207065740000000000000000604482015260640161082d565b6001825110156122575760405162461bcd60e51b815260206004820152600f60248201526e1b5d5cdd081a185d994818481ada59608a1b604482015260640161082d565b80518251612266906002613836565b146122a65760405162461bcd60e51b815260206004820152601060248201526f0d2dcc6dee4e4cac6e840d8cadccee8d60831b604482015260640161082d565b60115461035210156122ca5760405162461bcd60e51b815260040161082d90613758565b60005b81518160ff16101561247657600e6000838360ff16815181106122f2576122f261394e565b60209081029190910181015182528101919091526040016000205460ff16156123535760405162461bcd60e51b815260206004820152601360248201527214195d08185b1c9958591e4818db185a5b5959606a1b604482015260640161082d565b600c54825133916001600160a01b031690636352211e90859060ff861690811061237f5761237f61394e565b60200260200101516040518263ffffffff1660e01b81526004016123a591815260200190565b60206040518083038186803b1580156123bd57600080fd5b505afa1580156123d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f591906131a5565b6001600160a01b03161461241b5760405162461bcd60e51b815260040161082d906136aa565b6001600e6000848460ff16815181106124365761243661394e565b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061246e906138ee565b9150506122cd565b5060005b82518160ff16101561262557600b54835133916001600160a01b031690636352211e90869060ff86169081106124b2576124b261394e565b60200260200101516040518263ffffffff1660e01b81526004016124d891815260200190565b60206040518083038186803b1580156124f057600080fd5b505afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252891906131a5565b6001600160a01b03161461254e5760405162461bcd60e51b815260040161082d906136aa565b6001600d6000858460ff16815181106125695761256961394e565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506125bc3261035261ffff166104e261ffff16610bb861ffff16601154611050919061380a565b601180549060006125cc836138d3565b9091555050601780546001810182556000919091527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c150180546001600160a01b031916331790558061261d816138ee565b91505061247a565b506014805490600061155e836138d3565b6060600960405160200161264a9190613515565b604051602081830303815290604052905090565b6006546001600160a01b031633146126885760405162461bcd60e51b815260040161082d90613723565b600a54600261010090910460ff16106126e35760405162461bcd60e51b815260206004820152601b60248201527f53746167652063616e6e6f74206265206d6f7265207468616e20320000000000604482015260640161082d565b600a8054610100900460ff169060016126fb836138ee565b825460ff91821661010093840a9081029083021990911617909255600a5460405191900490911681527f36e08625927f4c20a74363a4c118d06899c5dbd5a27024d11ca0075e206a7ded915060200160405180910390a1565b6006546001600160a01b0316331461277e5760405162461bcd60e51b815260040161082d90613723565b6001600160a01b0381166127e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082d565b6127ec81612c82565b50565b60006001600160e01b031982166380ac58cd60e01b148061282057506001600160e01b03198216635b5e139f60e01b145b806107fd57506301ffc9a760e01b6001600160e01b03198316146107fd565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906128748261169b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166129265760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161082d565b60006129318361169b565b9050806001600160a01b0316846001600160a01b0316148061296c5750836001600160a01b0316612961846108db565b6001600160a01b0316145b8061299c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166129b78261169b565b6001600160a01b031614612a1b5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161082d565b6001600160a01b038216612a7d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161082d565b612a8860008261283f565b6001600160a01b0383166000908152600360205260408120805460019290612ab1908490613855565b90915550506001600160a01b0382166000908152600360205260408120805460019290612adf90849061380a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216612b965760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161082d565b6000818152600260205260409020546001600160a01b031615612bfb5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161082d565b6001600160a01b0382166000908152600360205260408120805460019290612c2490849061380a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415612d365760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161082d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612dae8484846129a4565b612dba84848484612ee3565b611a905760405162461bcd60e51b815260040161082d906136d1565b60606007805461085890613898565b606081612e095750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612e335780612e1d816138d3565b9150612e2c9050600a83613822565b9150612e0d565b60008167ffffffffffffffff811115612e4e57612e4e613964565b6040519080825280601f01601f191660200182016040528015612e78576020820181803683370190505b5090505b841561299c57612e8d600183613855565b9150612e9a600a8661390e565b612ea590603061380a565b60f81b818381518110612eba57612eba61394e565b60200101906001600160f81b031916908160001a905350612edc600a86613822565b9450612e7c565b60006001600160a01b0384163b15612fe557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f279033908990889088906004016135d5565b602060405180830381600087803b158015612f4157600080fd5b505af1925050508015612f71575060408051601f3d908101601f19168201909252612f6e9181019061338a565b60015b612fcb573d808015612f9f576040519150601f19603f3d011682016040523d82523d6000602084013e612fa4565b606091505b508051612fc35760405162461bcd60e51b815260040161082d906136d1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061299c565b506001949350505050565b828054612ffc90613898565b90600052602060002090601f01602090048101928261301e5760008555613064565b82601f1061303757805160ff1916838001178555613064565b82800160010185558215613064579182015b82811115613064578251825591602001919060010190613049565b50613070929150613074565b5090565b5b808211156130705760008155600101613075565b600067ffffffffffffffff8311156130a3576130a3613964565b6130b6601f8401601f19166020016137d9565b90508281528383830111156130ca57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126130f257600080fd5b8135602067ffffffffffffffff82111561310e5761310e613964565b8160051b61311d8282016137d9565b83815282810190868401838801850189101561313857600080fd5b600093505b8584101561315b57803583526001939093019291840191840161313d565b50979650505050505050565b80358015158114611a0257600080fd5b803560ff81168114611a0257600080fd5b60006020828403121561319a57600080fd5b8135611b878161397a565b6000602082840312156131b757600080fd5b8151611b878161397a565b600080604083850312156131d557600080fd5b82356131e08161397a565b915060208301356131f08161397a565b809150509250929050565b60008060006060848603121561321057600080fd5b833561321b8161397a565b9250602084013561322b8161397a565b929592945050506040919091013590565b6000806000806080858703121561325257600080fd5b843561325d8161397a565b9350602085013561326d8161397a565b925060408501359150606085013567ffffffffffffffff81111561329057600080fd5b8501601f810187136132a157600080fd5b6132b087823560208401613089565b91505092959194509250565b600080604083850312156132cf57600080fd5b82356132da8161397a565b91506132e860208401613167565b90509250929050565b6000806040838503121561330457600080fd5b823561330f8161397a565b946020939093013593505050565b60008060006060848603121561333257600080fd5b833561333d8161397a565b95602085013595506040909401359392505050565b60006020828403121561336457600080fd5b611b8782613167565b60006020828403121561337f57600080fd5b8135611b878161398f565b60006020828403121561339c57600080fd5b8151611b878161398f565b6000602082840312156133b957600080fd5b813567ffffffffffffffff8111156133d057600080fd5b8201601f810184136133e157600080fd5b61299c84823560208401613089565b60006020828403121561340257600080fd5b5035919050565b6000806040838503121561341c57600080fd5b50508035926020909101359150565b60006020828403121561343d57600080fd5b611b8782613177565b60008060006060848603121561345b57600080fd5b61346484613177565b9250602084013567ffffffffffffffff8082111561348157600080fd5b61348d878388016130e1565b935060408601359150808211156134a357600080fd5b506134b0868287016130e1565b9150509250925092565b600081518084526134d281602086016020860161386c565b601f01601f19169290920160200192915050565b600083516134f881846020880161386c565b83519083019061350c81836020880161386c565b01949350505050565b600080835481600182811c91508083168061353157607f831692505b602080841082141561355157634e487b7160e01b86526022600452602486fd5b8180156135655760018114613576576135a3565b60ff198616895284890196506135a3565b60008a81526020902060005b8681101561359b5781548b820152908501908301613582565b505084890196505b509498975050505050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613608908301846134ba565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136535783516001600160a01b03168352928401929184019160010161362e565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136535783518352928401929184019160010161367b565b602081526000611b8760208301846134ba565b6020808252600d908201526c24b73b30b634b21027bbb732b960991b604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601690820152754d696e7420657863656564206d617820737570706c7960501b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561380257613802613964565b604052919050565b6000821982111561381d5761381d613922565b500190565b60008261383157613831613938565b500490565b600081600019048311821515161561385057613850613922565b500290565b60008282101561386757613867613922565b500390565b60005b8381101561388757818101518382015260200161386f565b83811115611a905750506000910152565b600181811c908216806138ac57607f821691505b602082108114156138cd57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156138e7576138e7613922565b5060010190565b600060ff821660ff81141561390557613905613922565b60010192915050565b60008261391d5761391d613938565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146127ec57600080fd5b6001600160e01b0319811681146127ec57600080fdfea26469706673582212209c47c28eb7e771823937f4fddfae260c1e35d68bceec4b2fcc5f24c71c35e82064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000009bf252f97891b907f002f2887eff9246e3054080000000000000000000000000d4c3c23349348fa67f6d044f1357c54d8e6a661b000000000000000000000000000000000000000000000000000000000000000a4261644170654b69647300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000342414b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002468747470733a2f2f7777772e6261646170656b6964732e78797a2f6170692f74656d702f00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): BadApeKids
Arg [1] : _symbol (string): BAK
Arg [2] : _initBaseURI (string): https://www.badapekids.xyz/api/temp/
Arg [3] : _apeKidsClubNFT (address): 0x9Bf252f97891b907F002F2887EfF9246e3054080
Arg [4] : _apeKidsPetNFT (address): 0xD4c3c23349348FA67f6D044F1357c54d8e6a661B
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000009bf252f97891b907f002f2887eff9246e3054080
Arg [4] : 000000000000000000000000d4c3c23349348fa67f6d044f1357c54d8e6a661b
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [6] : 4261644170654b69647300000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 42414b0000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [10] : 68747470733a2f2f7777772e6261646170656b6964732e78797a2f6170692f74
Arg [11] : 656d702f00000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
38453:12250:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39938:25;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;9112:32:1;;;9094:51;;9082:2;9067:18;39938:25:0;;;;;;;;40481:372;;;;;;:::i;:::-;;:::i;:::-;;;11773:14:1;;11766:22;11748:41;;11736:2;11721:18;40481:372:0;11608:187:1;50169:79:0;;;;;;:::i;:::-;;:::i;:::-;;23066:100;;;:::i;:::-;;;;;;;:::i;24725:274::-;;;;;;:::i;:::-;;:::i;24248:411::-;;;;;;:::i;:::-;;:::i;39468:44::-;;39509:3;39468:44;;;;;26131:6:1;26119:19;;;26101:38;;26089:2;26074:18;39468:44:0;25957:188:1;49970:191:0;;;;;;:::i;:::-;;:::i;47776:92::-;47847:13;;47776:92;;;26296:25:1;;;26284:2;26269:18;47776:92:0;26150:177:1;39970:25:0;;;;;;:::i;:::-;;:::i;25578:376::-;;;;;;:::i;:::-;;:::i;39418:43::-;;39458:3;39418:43;;49206:224;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;10221:32:1;;;10203:51;;10285:2;10270:18;;10263:34;;;;10176:18;49206:224:0;10029:274:1;39754:71:0;;;;;-1:-1:-1;;;;;39754:71:0;;;40861:4341;;;;;;:::i;:::-;;:::i;39341:29::-;;;;;;49753:85;;;:::i;38579:56::-;;;:::i;26025:185::-;;;;;;:::i;:::-;;:::i;49605:140::-;;;;;;:::i;:::-;;:::i;39669:26::-;;;;;;;;;39011:28;;;;;-1:-1:-1;;;;;39011:28:0;;;22707:292;;;;;;:::i;:::-;;:::i;38642:27::-;;;:::i;39048:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;39266:30;;;;;;38551:21;;;:::i;22384:261::-;;;;;;:::i;:::-;;:::i;39906:25::-;;;;;;:::i;:::-;;:::i;37562:103::-;;;:::i;39702:28::-;;;;;;50256:444;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;36911:87::-;36984:6;;-1:-1:-1;;;;;36984:6:0;36911:87;;49846:116;;;;;;:::i;:::-;;:::i;23235:104::-;;;:::i;25071:180::-;;;;;;:::i;:::-;;:::i;39303:31::-;;;;;;39097:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;26281:365;;;;;;:::i;:::-;;:::i;38825:22::-;;;;;;;;;;;;;;;26504:4:1;26492:17;;;26474:36;;26462:2;26447:18;38825:22:0;26332:184:1;39568:46:0;;39610:4;39568:46;;39832:33;;;;;;47876:719;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;48603:463::-;;;;;;:::i;:::-;;:::i;38975:29::-;;;;;-1:-1:-1;;;;;38975:29:0;;;39874:25;;;;;;:::i;:::-;;:::i;39621:39::-;;39656:4;39621:39;;45210:2558;;;;;;:::i;:::-;;:::i;39519:42::-;;39558:3;39519:42;;49074:124;;;:::i;25322:189::-;;;;;;:::i;:::-;-1:-1:-1;;;;;25468:25:0;;;25444:4;25468:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;25322:189;39377:32;;;;;;49438:159;;;:::i;38676:35::-;;;;;;;;;37820:238;;;;;;:::i;:::-;;:::i;39938:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39938:25:0;;-1:-1:-1;39938:25:0;:::o;40481:372::-;40582:4;-1:-1:-1;;;;;;40619:40:0;;-1:-1:-1;;;40619:40:0;;:82;;-1:-1:-1;;;;;;;;;;40676:25:0;;;40619:82;:144;;;-1:-1:-1;;;;;;;;;;40738:25:0;;;40619:144;:226;;;;40809:36;40833:11;40809:23;:36::i;:::-;40599:246;40481:372;-1:-1:-1;;40481:372:0:o;50169:79::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;;;;;;;;;50225:6:::1;:15:::0;;-1:-1:-1;;50225:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;50169:79::o;23066:100::-;23120:13;23153:5;23146:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23066:100;:::o;24725:274::-;24817:7;28282:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28282:16:0;24837:110;;;;-1:-1:-1;;;24837:110:0;;21723:2:1;24837:110:0;;;21705:21:1;21762:2;21742:18;;;21735:30;21801:34;21781:18;;;21774:62;-1:-1:-1;;;21852:18:1;;;21845:42;21904:19;;24837:110:0;21521:408:1;24837:110:0;-1:-1:-1;24967:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;24967:24:0;;24725:274::o;24248:411::-;24329:13;24345:23;24360:7;24345:14;:23::i;:::-;24329:39;;24393:5;-1:-1:-1;;;;;24387:11:0;:2;-1:-1:-1;;;;;24387:11:0;;;24379:57;;;;-1:-1:-1;;;24379:57:0;;23608:2:1;24379:57:0;;;23590:21:1;23647:2;23627:18;;;23620:30;23686:34;23666:18;;;23659:62;-1:-1:-1;;;23737:18:1;;;23730:31;23778:19;;24379:57:0;23406:397:1;24379:57:0;17367:10;-1:-1:-1;;;;;24471:21:0;;;;:62;;-1:-1:-1;24496:37:0;24513:5;17367:10;25322:189;:::i;24496:37::-;24449:168;;;;-1:-1:-1;;;24449:168:0;;19051:2:1;24449:168:0;;;19033:21:1;19090:2;19070:18;;;19063:30;19129:34;19109:18;;;19102:62;19200:26;19180:18;;;19173:54;19244:19;;24449:168:0;18849:420:1;24449:168:0;24630:21;24639:2;24643:7;24630:8;:21::i;:::-;24318:341;24248:411;;:::o;49970:191::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;50088:11:::1;:26:::0;;-1:-1:-1;;;;;;50088:26:0::1;-1:-1:-1::0;;;;;50088:26:0;;;::::1;::::0;;;::::1;::::0;;;50125:12:::1;:28:::0;49970:191::o;39970:25::-;;;;;;;;;;;;25578:376;25787:41;17367:10;25820:7;25787:18;:41::i;:::-;25765:140;;;;-1:-1:-1;;;25765:140:0;;;;;;;:::i;:::-;25918:28;25928:4;25934:2;25938:7;25918:9;:28::i;49206:224::-;49373:11;;49400:12;;49313:16;;;;-1:-1:-1;;;;;49373:11:0;;;;49416:5;;49387:25;;:10;:25;:::i;:::-;49386:35;;;;:::i;:::-;49365:57;;;;49206:224;;;;;:::o;40861:4341::-;41018:6;;;;41017:7;41009:35;;;;-1:-1:-1;;;41009:35:0;;24770:2:1;41009:35:0;;;24752:21:1;24809:2;24789:18;;;24782:30;-1:-1:-1;;;24828:18:1;;;24821:45;24883:18;;41009:35:0;24568:339:1;41009:35:0;41063:5;;;;;;;;;:10;41055:36;;;;-1:-1:-1;;;41055:36:0;;24010:2:1;41055:36:0;;;23992:21:1;24049:2;24029:18;;;24022:30;-1:-1:-1;;;24068:18:1;;;24061:43;24121:18;;41055:36:0;23808:337:1;41055:36:0;41120:1;41110:7;:11;;;:27;;;;;41136:1;41125:7;:12;;;;41110:27;41102:54;;;;-1:-1:-1;;;41102:54:0;;17241:2:1;41102:54:0;;;17223:21:1;17280:2;17260:18;;;17253:30;-1:-1:-1;;;17299:18:1;;;17292:44;17353:18;;41102:54:0;17039:338:1;41102:54:0;41173:7;:12;;41184:1;41173:12;41169:4000;;;41304:1;41281:12;:19;:24;;41273:53;;;;-1:-1:-1;;;41273:53:0;;12449:2:1;41273:53:0;;;12431:21:1;12488:2;12468:18;;;12461:30;-1:-1:-1;;;12507:18:1;;;12500:46;12563:18;;41273:53:0;12247:340:1;41273:53:0;41373:1;41349:13;:20;:25;;41341:64;;;;-1:-1:-1;;;41341:64:0;;18696:2:1;41341:64:0;;;18678:21:1;18735:2;18715:18;;;18708:30;18774:28;18754:18;;;18747:56;18820:18;;41341:64:0;18494:350:1;41341:64:0;41470:12;:19;41446:13;:20;:43;41420:130;;;;-1:-1:-1;;;41420:130:0;;17929:2:1;41420:130:0;;;17911:21:1;17968:2;17948:18;;;17941:30;18007:27;17987:18;;;17980:55;18052:18;;41420:130:0;17727:349:1;41420:130:0;41572:7;41567:673;41589:12;:19;41585:1;:23;;;41567:673;;;41664:11;;39458:3;-1:-1:-1;41664:29:0;41634:125;;;;-1:-1:-1;;;41634:125:0;;;;;;;:::i;:::-;41778:14;;41861:11;;41895:15;;-1:-1:-1;;;;;41778:14:0;;;;:27;;41828:10;;41861:11;;;;;;;;41895:12;;:15;;;;;;;;;;:::i;:::-;;;;;;;41778:151;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;41948:13:0;;42030:11;;42064:16;;-1:-1:-1;;;;;41948:13:0;;;;-1:-1:-1;41948:26:0;;-1:-1:-1;41997:10:0;;42030:11;;;;;;;;42064:13;;:16;;;;;;;;;;:::i;:::-;;;;;;;41948:151;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42118:30;42124:10;42136:11;;42118:5;:30::i;:::-;42167:11;:13;;;:11;:13;;;:::i;:::-;;;;-1:-1:-1;;42199:8:0;:25;;;;;;;-1:-1:-1;42199:25:0;;;;;;;;-1:-1:-1;;;;;;42199:25:0;42213:10;42199:25;;;41610:3;;;;:::i;:::-;;;;41567:673;;;;41169:4000;;;42261:7;:12;;42272:1;42261:12;42257:2912;;;42385:1;42362:12;:19;:24;;42354:63;;;;-1:-1:-1;;;42354:63:0;;20297:2:1;42354:63:0;;;20279:21:1;20336:2;20316:18;;;20309:30;20375:28;20355:18;;;20348:56;20421:18;;42354:63:0;20095:350:1;42354:63:0;42439:7;42434:735;42456:12;:19;42452:1;:23;;;42434:735;;;42531:12;;39509:3;-1:-1:-1;42531:31:0;42501:127;;;;-1:-1:-1;;;42501:127:0;;;;;;;:::i;:::-;42649:14;;42732:11;;42766:15;;-1:-1:-1;;;;;42649:14:0;;;;:27;;42699:10;;42732:11;;;;;;;;42766:12;;:15;;;;;;;;;;:::i;:::-;;;;;;;42649:151;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42880:12:0;;42819:257;;-1:-1:-1;42847:10:0;;-1:-1:-1;39509:3:0;;39558;;39610:4;;42880:49;;39656:4;;42880:49;:::i;:::-;:93;;;;:::i;:::-;:134;;;;:::i;:::-;:177;;;;:::i;:::-;42819:5;:257::i;:::-;43095:12;:14;;;:12;:14;;;:::i;:::-;;;;-1:-1:-1;;43128:8:0;:25;;;;;;;-1:-1:-1;43128:25:0;;;;;;;;-1:-1:-1;;;;;;43128:25:0;43142:10;43128:25;;;42477:3;;;;:::i;:::-;;;;42434:735;;42257:2912;43190:7;:12;;43201:1;43190:12;43186:1983;;;43314:1;43290:13;:20;:25;;43282:63;;;;-1:-1:-1;;;43282:63:0;;20652:2:1;43282:63:0;;;20634:21:1;20691:2;20671:18;;;20664:30;20730:27;20710:18;;;20703:55;20775:18;;43282:63:0;20450:349:1;43282:63:0;43409:1;43386:13;:20;:24;;;;:::i;:::-;:29;43360:118;;;;-1:-1:-1;;;43360:118:0;;12794:2:1;43360:118:0;;;12776:21:1;12833:2;12813:18;;;12806:30;12872:29;12852:18;;;12845:57;12919:18;;43360:118:0;12592:351:1;43360:118:0;43495:14;43535:1;43512:13;:20;:24;;;;:::i;:::-;43495:41;;43558:7;43553:235;43575:13;:20;43571:1;:24;;;43553:235;;;43621:13;;43703:11;;43737:16;;-1:-1:-1;;;;;43621:13:0;;;;:26;;43670:10;;43703:11;;;;;;;;43737:13;;:16;;;;;;;;;;:::i;:::-;;;;;;;43621:151;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43597:3;;;;;:::i;:::-;;;;43553:235;;;;43809:7;43804:363;43826:6;43822:1;:10;;;43804:363;;;43866:10;;39558:3;-1:-1:-1;43866:27:0;43858:62;;;;-1:-1:-1;;;43858:62:0;;;;;;;:::i;:::-;44000:10;;43939:137;;43967:10;;39558:3;;39610:4;;44000:22;;39656:4;;44000:22;:::i;43939:137::-;44095:10;:12;;;:10;:12;;;:::i;:::-;;;;-1:-1:-1;;44126:8:0;:25;;;;;;;-1:-1:-1;44126:25:0;;;;;;;;-1:-1:-1;;;;;;44126:25:0;44140:10;44126:25;;;43834:3;;;;:::i;:::-;;;;43804:363;;;;43204:974;43186:1983;;;44188:7;:12;;44199:1;44188:12;44184:985;;;44313:1;44289:13;:20;:25;;44281:63;;;;-1:-1:-1;;;44281:63:0;;25457:2:1;44281:63:0;;;25439:21:1;25496:2;25476:18;;;25469:30;25535:27;25515:18;;;25508:55;25580:18;;44281:63:0;25255:349:1;44281:63:0;44408:1;44385:13;:20;:24;;;;:::i;:::-;:29;44359:118;;;;-1:-1:-1;;;44359:118:0;;13150:2:1;44359:118:0;;;13132:21:1;13189:2;13169:18;;;13162:30;13228:29;13208:18;;;13201:57;13275:18;;44359:118:0;12948:351:1;44359:118:0;44492:14;44532:1;44509:13;:20;:24;;;;:::i;:::-;44492:41;;44555:7;44550:235;44572:13;:20;44568:1;:24;;;44550:235;;;44618:13;;44700:11;;44734:16;;-1:-1:-1;;;;;44618:13:0;;;;:26;;44667:10;;44700:11;;;;;;;;44734:13;;:16;;;;;;;;;;:::i;:::-;;;;;;;44618:151;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44594:3;;;;;:::i;:::-;;;;44550:235;;;;44804:7;44799:359;44821:6;44817:1;:10;;;44799:359;;;44883:13;;39610:4;-1:-1:-1;44883:33:0;44853:129;;;;-1:-1:-1;;;44853:129:0;;;;;;;:::i;:::-;45019:13;;45001:63;;45007:10;;39610:4;;45019:25;;39656:4;;45019:25;:::i;45001:63::-;45083:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;45117:8:0;:25;;;;;;;-1:-1:-1;45117:25:0;;;;;;;;-1:-1:-1;;;;;;45117:25:0;45131:10;45117:25;;;44829:3;;;;:::i;:::-;;;;44799:359;;;;44202:967;44184:985;45179:13;:15;;;:13;:15;;;:::i;:::-;;;;;;40861:4341;;;:::o;49753:85::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;49808:15:::1;:22:::0;;-1:-1:-1;;49808:22:0::1;49826:4;49808:22;::::0;;49753:85::o;38579:56::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26025:185::-;26163:39;26180:4;26186:2;26190:7;26163:39;;;;;;;;;;;;:16;:39::i;49605:140::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;49689:15:::1;::::0;::::1;;49688:16;49680:25;;;::::0;::::1;;49716:21:::0;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;49605:140:::0;:::o;22707:292::-;22795:7;22831:16;;;:7;:16;;;;;;-1:-1:-1;;;;;22831:16:0;22880:19;22858:110;;;;-1:-1:-1;;;22858:110:0;;19887:2:1;22858:110:0;;;19869:21:1;19926:2;19906:18;;;19899:30;19965:34;19945:18;;;19938:62;-1:-1:-1;;;20016:18:1;;;20009:39;20065:19;;22858:110:0;19685:405:1;38642:27:0;;;;;;;:::i;38551:21::-;;;;;;;:::i;22384:261::-;22472:7;-1:-1:-1;;;;;22514:19:0;;22492:111;;;;-1:-1:-1;;;22492:111:0;;19476:2:1;22492:111:0;;;19458:21:1;19515:2;19495:18;;;19488:30;19554:34;19534:18;;;19527:62;-1:-1:-1;;;19605:18:1;;;19598:40;19655:19;;22492:111:0;19274:406:1;22492:111:0;-1:-1:-1;;;;;;22621:16:0;;;;;:9;:16;;;;;;;22384:261::o;39906:25::-;;;;;;;;;;;;37562:103;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;37627:30:::1;37654:1;37627:18;:30::i;:::-;37562:103::o:0;50256:444::-;50326:34;50391:1;50381:6;:11;;;;:26;;;;;50406:1;50396:6;:11;;;;50381:26;50373:53;;;;-1:-1:-1;;;50373:53:0;;25114:2:1;50373:53:0;;;25096:21:1;25153:2;25133:18;;;25126:30;-1:-1:-1;;;25172:18:1;;;25165:44;25226:18;;50373:53:0;24912:338:1;50373:53:0;50443:6;:11;;50453:1;50443:11;50439:254;;;50478:8;50471:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;50471:15:0;;;;;;;;;;;;;;;;;;;;;;;50256:444;;;:::o;50439:254::-;50508:6;:11;;50518:1;50508:11;50504:189;;;50543:8;50536:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;50536:15:0;;;;;;;;;;;;;;;;;;;;;;50256:444;;;:::o;50504:189::-;50573:6;:11;;50583:1;50573:11;50569:124;;;50608:8;50601:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;50601:15:0;;;;;;;;;;;;;;;;;;;;;;50256:444;;;:::o;50569:124::-;50638:6;:11;;50648:1;50638:11;50634:59;;;50673:8;50666:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;50666:15:0;;;;;;;;;;;;;;;;;;;;;;50256:444;;;:::o;50634:59::-;50256:444;;;:::o;49846:116::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;49926:28;;::::1;::::0;:13:::1;::::0;:28:::1;::::0;::::1;::::0;::::1;:::i;23235:104::-:0;23291:13;23324:7;23317:14;;;;;:::i;25071:180::-;25191:52;17367:10;25224:8;25234;25191:18;:52::i;26281:365::-;26470:41;17367:10;26503:7;26470:18;:41::i;:::-;26448:140;;;;-1:-1:-1;;;26448:140:0;;;;;;;:::i;:::-;26599:39;26613:4;26619:2;26623:7;26632:5;26599:13;:39::i;:::-;26281:365;;;;:::o;47876:719::-;48004:16;48033:18;48054:17;48064:6;48054:9;:17::i;:::-;48033:38;-1:-1:-1;48086:15:0;48082:506;;-1:-1:-1;;48125:16:0;;;48139:1;48125:16;;;;;;;;48118:23;;48082:506;48174:23;48214:10;48200:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48200:25:0;-1:-1:-1;48174:51:0;-1:-1:-1;48240:13:0;48297:7;48274:273;48316:5;48306:7;:15;48274:273;;;48366:10;48357:5;:19;48353:30;;;48378:5;;48353:30;48428:6;-1:-1:-1;;;;;48408:26:0;:16;48416:7;48408;:16::i;:::-;-1:-1:-1;;;;;48408:26:0;;48404:128;;;48475:7;48459:6;48466:5;48459:13;;;;;;;;:::i;:::-;;;;;;;;;;:23;48505:7;;;;:::i;:::-;;;;48404:128;48323:9;;;;:::i;:::-;;;;48274:273;;;-1:-1:-1;48570:6:0;;-1:-1:-1;;;47876:719:0;;;;;;:::o;48603:463::-;28258:4;28282:16;;;:7;:16;;;;;;48692:13;;-1:-1:-1;;;;;28282:16:0;48718:113;;;;-1:-1:-1;;;48718:113:0;;23192:2:1;48718:113:0;;;23174:21:1;23231:2;23211:18;;;23204:30;23270:34;23250:18;;;23243:62;-1:-1:-1;;;23321:18:1;;;23314:45;23376:19;;48718:113:0;22990:411:1;48718:113:0;48844:28;48875:10;:8;:10::i;:::-;48844:41;;48947:1;48922:14;48916:28;:32;:142;;49048:10;48916:142;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48992:14;49008:18;:7;:16;:18::i;:::-;48975:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;48896:162;48603:463;-1:-1:-1;;;48603:463:0:o;39874:25::-;;;;;;;;;;;;45210:2558;45353:5;;;;;;;45362:1;45353:10;45345:36;;;;-1:-1:-1;;;45345:36:0;;24010:2:1;45345:36:0;;;23992:21:1;24049:2;24029:18;;;24022:30;-1:-1:-1;;;24068:18:1;;;24061:43;24121:18;;45345:36:0;23808:337:1;45345:36:0;45401:6;;;;45400:7;45392:35;;;;-1:-1:-1;;;45392:35:0;;24770:2:1;45392:35:0;;;24752:21:1;24809:2;24789:18;;;24782:30;-1:-1:-1;;;24828:18:1;;;24821:45;24883:18;;45392:35:0;24568:339:1;45392:35:0;45456:1;45446:7;:11;;;:27;;;;;45472:1;45461:7;:12;;;;45446:27;45438:54;;;;-1:-1:-1;;;45438:54:0;;17241:2:1;45438:54:0;;;17223:21:1;17280:2;17260:18;;;17253:30;-1:-1:-1;;;17299:18:1;;;17292:44;17353:18;;45438:54:0;17039:338:1;45438:54:0;45509:7;:12;;45520:1;45509:12;45505:2228;;;45563:1;45546:6;:13;:18;;45538:46;;;;-1:-1:-1;;;45538:46:0;;22848:2:1;45538:46:0;;;22830:21:1;22887:2;22867:18;;;22860:30;-1:-1:-1;;;22906:18:1;;;22899:45;22961:18;;45538:46:0;22646:339:1;45538:46:0;45624:1;45607:6;:13;:18;;45599:46;;;;-1:-1:-1;;;45599:46:0;;14620:2:1;45599:46:0;;;14602:21:1;14659:2;14639:18;;;14632:30;-1:-1:-1;;;14678:18:1;;;14671:45;14733:18;;45599:46:0;14418:339:1;45599:46:0;45685:6;:13;45668:6;:13;:30;45660:59;;;;-1:-1:-1;;;45660:59:0;;17584:2:1;45660:59:0;;;17566:21:1;17623:2;17603:18;;;17596:30;-1:-1:-1;;;17642:18:1;;;17635:46;17698:18;;45660:59:0;17382:340:1;45660:59:0;45793:7;45788:758;45810:6;:13;45806:1;:17;;;45788:758;;;45858:10;:21;45869:6;45876:1;45869:9;;;;;;;;;;:::i;:::-;;;;;;;;;;;;45858:21;;;;;;;;;;-1:-1:-1;45858:21:0;;;;45857:22;45849:54;;;;-1:-1:-1;;;45849:54:0;;16134:2:1;45849:54:0;;;16116:21:1;16173:2;16153:18;;;16146:30;-1:-1:-1;;;16192:18:1;;;16185:49;16251:18;;45849:54:0;15932:343:1;45849:54:0;45931:10;:21;45942:6;45949:1;45942:9;;;;;;;;;;:::i;:::-;;;;;;;;;;;;45931:21;;;;;;;;;;-1:-1:-1;45931:21:0;;;;45930:22;45922:54;;;;-1:-1:-1;;;45922:54:0;;25811:2:1;45922:54:0;;;25793:21:1;25850:2;25830:18;;;25823:30;-1:-1:-1;;;25869:18:1;;;25862:49;25928:18;;45922:54:0;25609:343:1;45922:54:0;46025:14;;46048:9;;46062:10;;-1:-1:-1;;;;;46025:14:0;;:22;;46048:6;;:9;;;;;;;;;;:::i;:::-;;;;;;;46025:33;;;;;;;;;;;;;26296:25:1;;26284:2;26269:18;;26150:177;46025:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;46025:47:0;;45995:134;;;;-1:-1:-1;;;45995:134:0;;;;;;;:::i;:::-;46178:13;;39610:4;-1:-1:-1;46178:33:0;46148:129;;;;-1:-1:-1;;;46148:129:0;;;;;;;:::i;:::-;46320:4;46296:10;:21;46307:6;46314:1;46307:9;;;;;;;;;;:::i;:::-;;;;;;;46296:21;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;46367:4;46343:10;:21;46354:6;46361:1;46354:9;;;;;;;;;;:::i;:::-;;;;;;;46343:21;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;46390:62;46396:9;39610:4;46407:44;;39656:4;46407:25;;:13;;:25;;;;:::i;46390:62::-;46471:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;46505:8:0;:25;;;;;;;-1:-1:-1;46505:25:0;;;;;;;;-1:-1:-1;;;;;;46505:25:0;46519:10;46505:25;;;45825:3;;;;:::i;:::-;;;;45788:758;;45505:2228;46567:7;:12;;46578:1;46567:12;46563:1170;;;46621:1;46604:6;:13;:18;;46596:55;;;;-1:-1:-1;;;46596:55:0;;13848:2:1;46596:55:0;;;13830:21:1;13887:2;13867:18;;;13860:30;13926:26;13906:18;;;13899:54;13970:18;;46596:55:0;13646:348:1;46596:55:0;46691:1;46674:6;:13;:18;;46666:46;;;;-1:-1:-1;;;46666:46:0;;14620:2:1;46666:46:0;;;14602:21:1;14659:2;14639:18;;;14632:30;-1:-1:-1;;;14678:18:1;;;14671:45;14733:18;;46666:46:0;14418:339:1;46666:46:0;46756:13;;46739;;46735:17;;:1;:17;:::i;:::-;:34;46727:63;;;;-1:-1:-1;;;46727:63:0;;17584:2:1;46727:63:0;;;17566:21:1;17623:2;17603:18;;;17596:30;-1:-1:-1;;;17642:18:1;;;17635:46;17698:18;;46727:63:0;17382:340:1;46727:63:0;46813:10;;39558:3;-1:-1:-1;46813:27:0;46805:62;;;;-1:-1:-1;;;46805:62:0;;;;;;;:::i;:::-;46889:7;46884:330;46906:6;:13;46902:1;:17;;;46884:330;;;46954:10;:21;46965:6;46972:1;46965:9;;;;;;;;;;:::i;:::-;;;;;;;;;;;;46954:21;;;;;;;;;;-1:-1:-1;46954:21:0;;;;46953:22;46945:54;;;;-1:-1:-1;;;46945:54:0;;25811:2:1;46945:54:0;;;25793:21:1;25850:2;25830:18;;;25823:30;-1:-1:-1;;;25869:18:1;;;25862:49;25928:18;;46945:54:0;25609:343:1;46945:54:0;47048:13;;47070:9;;47084:10;;-1:-1:-1;;;;;47048:13:0;;:21;;47070:6;;:9;;;;;;;;;;:::i;:::-;;;;;;;47048:32;;;;;;;;;;;;;26296:25:1;;26284:2;26269:18;;26150:177;47048:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;47048:46:0;;47018:133;;;;-1:-1:-1;;;47018:133:0;;;;;;;:::i;:::-;47194:4;47170:10;:21;47181:6;47188:1;47181:9;;;;;;;;;;:::i;:::-;;;;;;;47170:21;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;46921:3;;;;;:::i;:::-;;;;46884:330;;;;47235:7;47230:492;47252:6;:13;47248:1;:17;;;47230:492;;;47321:14;;47344:9;;47358:10;;-1:-1:-1;;;;;47321:14:0;;:22;;47344:6;;:9;;;;;;;;;;:::i;:::-;;;;;;;47321:33;;;;;;;;;;;;;26296:25:1;;26284:2;26269:18;;26150:177;47321:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;47321:47:0;;47291:134;;;;-1:-1:-1;;;47291:134:0;;;;;;;:::i;:::-;47470:4;47446:10;:21;47457:6;47464:1;47457:9;;;;;;;;;;:::i;:::-;;;;;;;47446:21;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;47495:136;47523:9;39558:3;47555:57;;39610:4;47555:41;;39656:4;47555:22;;:10;;:22;;;;:::i;47495:136::-;47650:10;:12;;;:10;:12;;;:::i;:::-;;;;-1:-1:-1;;47681:8:0;:25;;;;;;;-1:-1:-1;47681:25:0;;;;;;;;-1:-1:-1;;;;;;47681:25:0;47695:10;47681:25;;;47267:3;;;;:::i;:::-;;;;47230:492;;;;47745:13;:15;;;:13;:15;;;:::i;49074:124::-;49118:13;49175;49158:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;49144:46;;49074:124;:::o;49438:159::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;49495:5:::1;::::0;49503:1:::1;49495:5;::::0;;::::1;;;:9;49487:49;;;::::0;-1:-1:-1;;;49487:49:0;;21367:2:1;49487:49:0::1;::::0;::::1;21349:21:1::0;21406:2;21386:18;;;21379:30;21445:29;21425:18;;;21418:57;21492:18;;49487:49:0::1;21165:351:1::0;49487:49:0::1;49547:5;:7:::0;;::::1;::::0;::::1;;;::::0;:5:::1;:7;::::0;::::1;:::i;:::-;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;;::::0;;;49583:5:::1;::::0;49570:19:::1;::::0;49583:5;;::::1;::::0;;::::1;26474:36:1::0;;49570:19:0::1;::::0;-1:-1:-1;26462:2:1;26447:18;49570:19:0::1;;;;;;;49438:159::o:0;37820:238::-;36984:6;;-1:-1:-1;;;;;36984:6:0;17367:10;37131:23;37123:68;;;;-1:-1:-1;;;37123:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37923:22:0;::::1;37901:110;;;::::0;-1:-1:-1;;;37901:110:0;;14964:2:1;37901:110:0::1;::::0;::::1;14946:21:1::0;15003:2;14983:18;;;14976:30;15042:34;15022:18;;;15015:62;-1:-1:-1;;;15093:18:1;;;15086:36;15139:19;;37901:110:0::1;14762:402:1::0;37901:110:0::1;38022:28;38041:8;38022:18;:28::i;:::-;37820:238:::0;:::o;21999:321::-;22117:4;-1:-1:-1;;;;;;22154:40:0;;-1:-1:-1;;;22154:40:0;;:105;;-1:-1:-1;;;;;;;22211:48:0;;-1:-1:-1;;;22211:48:0;22154:105;:158;;;-1:-1:-1;;;;;;;;;;20580:40:0;;;22276:36;20455:173;32464:174;32539:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;32539:29:0;-1:-1:-1;;;;;32539:29:0;;;;;;;;:24;;32593:23;32539:24;32593:14;:23::i;:::-;-1:-1:-1;;;;;32584:46:0;;;;;;;;;;;32464:174;;:::o;28487:436::-;28605:4;28282:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28282:16:0;28622:110;;;;-1:-1:-1;;;28622:110:0;;18283:2:1;28622:110:0;;;18265:21:1;18322:2;18302:18;;;18295:30;18361:34;18341:18;;;18334:62;-1:-1:-1;;;18412:18:1;;;18405:42;18464:19;;28622:110:0;18081:408:1;28622:110:0;28743:13;28759:23;28774:7;28759:14;:23::i;:::-;28743:39;;28812:5;-1:-1:-1;;;;;28801:16:0;:7;-1:-1:-1;;;;;28801:16:0;;:64;;;;28858:7;-1:-1:-1;;;;;28834:31:0;:20;28846:7;28834:11;:20::i;:::-;-1:-1:-1;;;;;28834:31:0;;28801:64;:113;;;-1:-1:-1;;;;;;25468:25:0;;;25444:4;25468:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;28882:32;28793:122;28487:436;-1:-1:-1;;;;28487:436:0:o;31684:662::-;31857:4;-1:-1:-1;;;;;31830:31:0;:23;31845:7;31830:14;:23::i;:::-;-1:-1:-1;;;;;31830:31:0;;31808:118;;;;-1:-1:-1;;;31808:118:0;;15371:2:1;31808:118:0;;;15353:21:1;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;-1:-1:-1;;;15500:18:1;;;15493:35;15545:19;;31808:118:0;15169:401:1;31808:118:0;-1:-1:-1;;;;;31945:16:0;;31937:65;;;;-1:-1:-1;;;31937:65:0;;16482:2:1;31937:65:0;;;16464:21:1;16521:2;16501:18;;;16494:30;16560:34;16540:18;;;16533:62;-1:-1:-1;;;16611:18:1;;;16604:34;16655:19;;31937:65:0;16280:400:1;31937:65:0;32119:29;32136:1;32140:7;32119:8;:29::i;:::-;-1:-1:-1;;;;;32161:15:0;;;;;;:9;:15;;;;;:20;;32180:1;;32161:15;:20;;32180:1;;32161:20;:::i;:::-;;;;-1:-1:-1;;;;;;;32192:13:0;;;;;;:9;:13;;;;;:18;;32209:1;;32192:13;:18;;32209:1;;32192:18;:::i;:::-;;;;-1:-1:-1;;32221:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32221:21:0;-1:-1:-1;;;;;32221:21:0;;;;;;;;;32260:27;;32221:16;;32260:27;;;;;;;24318:341;24248:411;;:::o;30259:439::-;-1:-1:-1;;;;;30339:16:0;;30331:61;;;;-1:-1:-1;;;30331:61:0;;21006:2:1;30331:61:0;;;20988:21:1;;;21025:18;;;21018:30;21084:34;21064:18;;;21057:62;21136:18;;30331:61:0;20804:356:1;30331:61:0;28258:4;28282:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28282:16:0;:30;30403:58;;;;-1:-1:-1;;;30403:58:0;;15777:2:1;30403:58:0;;;15759:21:1;15816:2;15796:18;;;15789:30;15855;15835:18;;;15828:58;15903:18;;30403:58:0;15575:352:1;30403:58:0;-1:-1:-1;;;;;30532:13:0;;;;;;:9;:13;;;;;:18;;30549:1;;30532:13;:18;;30549:1;;30532:18;:::i;:::-;;;;-1:-1:-1;;30561:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;30561:21:0;-1:-1:-1;;;;;30561:21:0;;;;;;;;30600:33;;30561:16;;;30600:33;;30561:16;;30600:33;49716:21:::1;49605:140:::0;:::o;38218:191::-;38311:6;;;-1:-1:-1;;;;;38328:17:0;;;-1:-1:-1;;;;;;38328:17:0;;;;;;;38361:40;;38311:6;;;38328:17;38311:6;;38361:40;;38292:16;;38361:40;38281:128;38218:191;:::o;32780:315::-;32935:8;-1:-1:-1;;;;;32926:17:0;:5;-1:-1:-1;;;;;32926:17:0;;;32918:55;;;;-1:-1:-1;;;32918:55:0;;16887:2:1;32918:55:0;;;16869:21:1;16926:2;16906:18;;;16899:30;16965:27;16945:18;;;16938:55;17010:18;;32918:55:0;16685:349:1;32918:55:0;-1:-1:-1;;;;;32984:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;32984:46:0;;;;;;;;;;33046:41;;11748::1;;;33046::0;;11721:18:1;33046:41:0;;;;;;;32780:315;;;:::o;27528:352::-;27685:28;27695:4;27701:2;27705:7;27685:9;:28::i;:::-;27746:48;27769:4;27775:2;27779:7;27788:5;27746:22;:48::i;:::-;27724:148;;;;-1:-1:-1;;;27724:148:0;;;;;;;:::i;40365:108::-;40425:13;40458:7;40451:14;;;;;:::i;17837:723::-;17893:13;18114:10;18110:53;;-1:-1:-1;;18141:10:0;;;;;;;;;;;;-1:-1:-1;;;18141:10:0;;;;;17837:723::o;18110:53::-;18188:5;18173:12;18229:78;18236:9;;18229:78;;18262:8;;;;:::i;:::-;;-1:-1:-1;18285:10:0;;-1:-1:-1;18293:2:0;18285:10;;:::i;:::-;;;18229:78;;;18317:19;18349:6;18339:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18339:17:0;;18317:39;;18367:154;18374:10;;18367:154;;18401:11;18411:1;18401:11;;:::i;:::-;;-1:-1:-1;18470:10:0;18478:2;18470:5;:10;:::i;:::-;18457:24;;:2;:24;:::i;:::-;18444:39;;18427:6;18434;18427:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;18427:56:0;;;;;;;;-1:-1:-1;18498:11:0;18507:2;18498:11;;:::i;:::-;;;18367:154;;33660:980;33815:4;-1:-1:-1;;;;;33836:13:0;;9198:19;:23;33832:801;;33889:175;;-1:-1:-1;;;33889:175:0;;-1:-1:-1;;;;;33889:36:0;;;;;:175;;17367:10;;33983:4;;34010:7;;34040:5;;33889:175;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33889:175:0;;;;;;;;-1:-1:-1;;33889:175:0;;;;;;;;;;;;:::i;:::-;;;33868:710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34247:13:0;;34243:320;;34290:108;;-1:-1:-1;;;34290:108:0;;;;;;;:::i;34243:320::-;34513:6;34507:13;34498:6;34494:2;34490:15;34483:38;33868:710;-1:-1:-1;;;;;;34128:51:0;-1:-1:-1;;;34128:51:0;;-1:-1:-1;34121:58:0;;33832:801;-1:-1:-1;34617:4:0;33660:980;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:406:1;78:5;112:18;104:6;101:30;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:1;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:723::-;479:5;532:3;525:4;517:6;513:17;509:27;499:55;;550:1;547;540:12;499:55;586:6;573:20;612:4;635:18;631:2;628:26;625:52;;;657:18;;:::i;:::-;703:2;700:1;696:10;726:28;750:2;746;742:11;726:28;:::i;:::-;788:15;;;819:12;;;;851:15;;;885;;;881:24;;878:33;-1:-1:-1;875:53:1;;;924:1;921;914:12;875:53;946:1;937:10;;956:163;970:2;967:1;964:9;956:163;;;1027:17;;1015:30;;988:1;981:9;;;;;1065:12;;;;1097;;956:163;;;-1:-1:-1;1137:5:1;425:723;-1:-1:-1;;;;;;;425:723:1:o;1153:160::-;1218:20;;1274:13;;1267:21;1257:32;;1247:60;;1303:1;1300;1293:12;1318:156;1384:20;;1444:4;1433:16;;1423:27;;1413:55;;1464:1;1461;1454:12;1479:247;1538:6;1591:2;1579:9;1570:7;1566:23;1562:32;1559:52;;;1607:1;1604;1597:12;1559:52;1646:9;1633:23;1665:31;1690:5;1665:31;:::i;1731:251::-;1801:6;1854:2;1842:9;1833:7;1829:23;1825:32;1822:52;;;1870:1;1867;1860:12;1822:52;1902:9;1896:16;1921:31;1946:5;1921:31;:::i;1987:388::-;2055:6;2063;2116:2;2104:9;2095:7;2091:23;2087:32;2084:52;;;2132:1;2129;2122:12;2084:52;2171:9;2158:23;2190:31;2215:5;2190:31;:::i;:::-;2240:5;-1:-1:-1;2297:2:1;2282:18;;2269:32;2310:33;2269:32;2310:33;:::i;:::-;2362:7;2352:17;;;1987:388;;;;;:::o;2380:456::-;2457:6;2465;2473;2526:2;2514:9;2505:7;2501:23;2497:32;2494:52;;;2542:1;2539;2532:12;2494:52;2581:9;2568:23;2600:31;2625:5;2600:31;:::i;:::-;2650:5;-1:-1:-1;2707:2:1;2692:18;;2679:32;2720:33;2679:32;2720:33;:::i;:::-;2380:456;;2772:7;;-1:-1:-1;;;2826:2:1;2811:18;;;;2798:32;;2380:456::o;2841:794::-;2936:6;2944;2952;2960;3013:3;3001:9;2992:7;2988:23;2984:33;2981:53;;;3030:1;3027;3020:12;2981:53;3069:9;3056:23;3088:31;3113:5;3088:31;:::i;:::-;3138:5;-1:-1:-1;3195:2:1;3180:18;;3167:32;3208:33;3167:32;3208:33;:::i;:::-;3260:7;-1:-1:-1;3314:2:1;3299:18;;3286:32;;-1:-1:-1;3369:2:1;3354:18;;3341:32;3396:18;3385:30;;3382:50;;;3428:1;3425;3418:12;3382:50;3451:22;;3504:4;3496:13;;3492:27;-1:-1:-1;3482:55:1;;3533:1;3530;3523:12;3482:55;3556:73;3621:7;3616:2;3603:16;3598:2;3594;3590:11;3556:73;:::i;:::-;3546:83;;;2841:794;;;;;;;:::o;3640:315::-;3705:6;3713;3766:2;3754:9;3745:7;3741:23;3737:32;3734:52;;;3782:1;3779;3772:12;3734:52;3821:9;3808:23;3840:31;3865:5;3840:31;:::i;:::-;3890:5;-1:-1:-1;3914:35:1;3945:2;3930:18;;3914:35;:::i;:::-;3904:45;;3640:315;;;;;:::o;3960:::-;4028:6;4036;4089:2;4077:9;4068:7;4064:23;4060:32;4057:52;;;4105:1;4102;4095:12;4057:52;4144:9;4131:23;4163:31;4188:5;4163:31;:::i;:::-;4213:5;4265:2;4250:18;;;;4237:32;;-1:-1:-1;;;3960:315:1:o;4280:383::-;4357:6;4365;4373;4426:2;4414:9;4405:7;4401:23;4397:32;4394:52;;;4442:1;4439;4432:12;4394:52;4481:9;4468:23;4500:31;4525:5;4500:31;:::i;:::-;4550:5;4602:2;4587:18;;4574:32;;-1:-1:-1;4653:2:1;4638:18;;;4625:32;;4280:383;-1:-1:-1;;;4280:383:1:o;4668:180::-;4724:6;4777:2;4765:9;4756:7;4752:23;4748:32;4745:52;;;4793:1;4790;4783:12;4745:52;4816:26;4832:9;4816:26;:::i;4853:245::-;4911:6;4964:2;4952:9;4943:7;4939:23;4935:32;4932:52;;;4980:1;4977;4970:12;4932:52;5019:9;5006:23;5038:30;5062:5;5038:30;:::i;5103:249::-;5172:6;5225:2;5213:9;5204:7;5200:23;5196:32;5193:52;;;5241:1;5238;5231:12;5193:52;5273:9;5267:16;5292:30;5316:5;5292:30;:::i;5357:450::-;5426:6;5479:2;5467:9;5458:7;5454:23;5450:32;5447:52;;;5495:1;5492;5485:12;5447:52;5535:9;5522:23;5568:18;5560:6;5557:30;5554:50;;;5600:1;5597;5590:12;5554:50;5623:22;;5676:4;5668:13;;5664:27;-1:-1:-1;5654:55:1;;5705:1;5702;5695:12;5654:55;5728:73;5793:7;5788:2;5775:16;5770:2;5766;5762:11;5728:73;:::i;5812:180::-;5871:6;5924:2;5912:9;5903:7;5899:23;5895:32;5892:52;;;5940:1;5937;5930:12;5892:52;-1:-1:-1;5963:23:1;;5812:180;-1:-1:-1;5812:180:1:o;5997:248::-;6065:6;6073;6126:2;6114:9;6105:7;6101:23;6097:32;6094:52;;;6142:1;6139;6132:12;6094:52;-1:-1:-1;;6165:23:1;;;6235:2;6220:18;;;6207:32;;-1:-1:-1;5997:248:1:o;6250:182::-;6307:6;6360:2;6348:9;6339:7;6335:23;6331:32;6328:52;;;6376:1;6373;6366:12;6328:52;6399:27;6416:9;6399:27;:::i;6437:665::-;6562:6;6570;6578;6631:2;6619:9;6610:7;6606:23;6602:32;6599:52;;;6647:1;6644;6637:12;6599:52;6670:27;6687:9;6670:27;:::i;:::-;6660:37;;6748:2;6737:9;6733:18;6720:32;6771:18;6812:2;6804:6;6801:14;6798:34;;;6828:1;6825;6818:12;6798:34;6851:61;6904:7;6895:6;6884:9;6880:22;6851:61;:::i;:::-;6841:71;;6965:2;6954:9;6950:18;6937:32;6921:48;;6994:2;6984:8;6981:16;6978:36;;;7010:1;7007;7000:12;6978:36;;7033:63;7088:7;7077:8;7066:9;7062:24;7033:63;:::i;:::-;7023:73;;;6437:665;;;;;:::o;7107:257::-;7148:3;7186:5;7180:12;7213:6;7208:3;7201:19;7229:63;7285:6;7278:4;7273:3;7269:14;7262:4;7255:5;7251:16;7229:63;:::i;:::-;7346:2;7325:15;-1:-1:-1;;7321:29:1;7312:39;;;;7353:4;7308:50;;7107:257;-1:-1:-1;;7107:257:1:o;7369:470::-;7548:3;7586:6;7580:13;7602:53;7648:6;7643:3;7636:4;7628:6;7624:17;7602:53;:::i;:::-;7718:13;;7677:16;;;;7740:57;7718:13;7677:16;7774:4;7762:17;;7740:57;:::i;:::-;7813:20;;7369:470;-1:-1:-1;;;;7369:470:1:o;7844:1099::-;7972:3;8001:1;8034:6;8028:13;8064:3;8086:1;8114:9;8110:2;8106:18;8096:28;;8174:2;8163:9;8159:18;8196;8186:61;;8240:4;8232:6;8228:17;8218:27;;8186:61;8266:2;8314;8306:6;8303:14;8283:18;8280:38;8277:165;;;-1:-1:-1;;;8341:33:1;;8397:4;8394:1;8387:15;8427:4;8348:3;8415:17;8277:165;8458:18;8485:104;;;;8603:1;8598:320;;;;8451:467;;8485:104;-1:-1:-1;;8518:24:1;;8506:37;;8563:16;;;;-1:-1:-1;8485:104:1;;8598:320;26874:1;26867:14;;;26911:4;26898:18;;8693:1;8707:165;8721:6;8718:1;8715:13;8707:165;;;8799:14;;8786:11;;;8779:35;8842:16;;;;8736:10;;8707:165;;;8711:3;;8901:6;8896:3;8892:16;8885:23;;8451:467;-1:-1:-1;8934:3:1;;7844:1099;-1:-1:-1;;;;;;;;7844:1099:1:o;9156:375::-;-1:-1:-1;;;;;9414:15:1;;;9396:34;;9466:15;;;;9461:2;9446:18;;9439:43;9513:2;9498:18;;9491:34;;;;9346:2;9331:18;;9156:375::o;9536:488::-;-1:-1:-1;;;;;9805:15:1;;;9787:34;;9857:15;;9852:2;9837:18;;9830:43;9904:2;9889:18;;9882:34;;;9952:3;9947:2;9932:18;;9925:31;;;9730:4;;9973:45;;9998:19;;9990:6;9973:45;:::i;:::-;9965:53;9536:488;-1:-1:-1;;;;;;9536:488:1:o;10308:658::-;10479:2;10531:21;;;10601:13;;10504:18;;;10623:22;;;10450:4;;10479:2;10702:15;;;;10676:2;10661:18;;;10450:4;10745:195;10759:6;10756:1;10753:13;10745:195;;;10824:13;;-1:-1:-1;;;;;10820:39:1;10808:52;;10915:15;;;;10880:12;;;;10856:1;10774:9;10745:195;;;-1:-1:-1;10957:3:1;;10308:658;-1:-1:-1;;;;;;10308:658:1:o;10971:632::-;11142:2;11194:21;;;11264:13;;11167:18;;;11286:22;;;11113:4;;11142:2;11365:15;;;;11339:2;11324:18;;;11113:4;11408:169;11422:6;11419:1;11416:13;11408:169;;;11483:13;;11471:26;;11552:15;;;;11517:12;;;;11444:1;11437:9;11408:169;;12023:219;12172:2;12161:9;12154:21;12135:4;12192:44;12232:2;12221:9;12217:18;12209:6;12192:44;:::i;13304:337::-;13506:2;13488:21;;;13545:2;13525:18;;;13518:30;-1:-1:-1;;;13579:2:1;13564:18;;13557:43;13632:2;13617:18;;13304:337::o;13999:414::-;14201:2;14183:21;;;14240:2;14220:18;;;14213:30;14279:34;14274:2;14259:18;;14252:62;-1:-1:-1;;;14345:2:1;14330:18;;14323:48;14403:3;14388:19;;13999:414::o;21934:356::-;22136:2;22118:21;;;22155:18;;;22148:30;22214:34;22209:2;22194:18;;22187:62;22281:2;22266:18;;21934:356::o;22295:346::-;22497:2;22479:21;;;22536:2;22516:18;;;22509:30;-1:-1:-1;;;22570:2:1;22555:18;;22548:52;22632:2;22617:18;;22295:346::o;24150:413::-;24352:2;24334:21;;;24391:2;24371:18;;;24364:30;24430:34;24425:2;24410:18;;24403:62;-1:-1:-1;;;24496:2:1;24481:18;;24474:47;24553:3;24538:19;;24150:413::o;26521:275::-;26592:2;26586:9;26657:2;26638:13;;-1:-1:-1;;26634:27:1;26622:40;;26692:18;26677:34;;26713:22;;;26674:62;26671:88;;;26739:18;;:::i;:::-;26775:2;26768:22;26521:275;;-1:-1:-1;26521:275:1:o;26927:128::-;26967:3;26998:1;26994:6;26991:1;26988:13;26985:39;;;27004:18;;:::i;:::-;-1:-1:-1;27040:9:1;;26927:128::o;27060:120::-;27100:1;27126;27116:35;;27131:18;;:::i;:::-;-1:-1:-1;27165:9:1;;27060:120::o;27185:168::-;27225:7;27291:1;27287;27283:6;27279:14;27276:1;27273:21;27268:1;27261:9;27254:17;27250:45;27247:71;;;27298:18;;:::i;:::-;-1:-1:-1;27338:9:1;;27185:168::o;27358:125::-;27398:4;27426:1;27423;27420:8;27417:34;;;27431:18;;:::i;:::-;-1:-1:-1;27468:9:1;;27358:125::o;27488:258::-;27560:1;27570:113;27584:6;27581:1;27578:13;27570:113;;;27660:11;;;27654:18;27641:11;;;27634:39;27606:2;27599:10;27570:113;;;27701:6;27698:1;27695:13;27692:48;;;-1:-1:-1;;27736:1:1;27718:16;;27711:27;27488:258::o;27751:380::-;27830:1;27826:12;;;;27873;;;27894:61;;27948:4;27940:6;27936:17;27926:27;;27894:61;28001:2;27993:6;27990:14;27970:18;27967:38;27964:161;;;28047:10;28042:3;28038:20;28035:1;28028:31;28082:4;28079:1;28072:15;28110:4;28107:1;28100:15;27964:161;;27751:380;;;:::o;28136:135::-;28175:3;-1:-1:-1;;28196:17:1;;28193:43;;;28216:18;;:::i;:::-;-1:-1:-1;28263:1:1;28252:13;;28136:135::o;28276:175::-;28313:3;28357:4;28350:5;28346:16;28386:4;28377:7;28374:17;28371:43;;;28394:18;;:::i;:::-;28443:1;28430:15;;28276:175;-1:-1:-1;;28276:175:1:o;28456:112::-;28488:1;28514;28504:35;;28519:18;;:::i;:::-;-1:-1:-1;28553:9:1;;28456:112::o;28573:127::-;28634:10;28629:3;28625:20;28622:1;28615:31;28665:4;28662:1;28655:15;28689:4;28686:1;28679:15;28705:127;28766:10;28761:3;28757:20;28754:1;28747:31;28797:4;28794:1;28787:15;28821:4;28818:1;28811:15;28837:127;28898:10;28893:3;28889:20;28886:1;28879:31;28929:4;28926:1;28919:15;28953:4;28950:1;28943:15;28969:127;29030:10;29025:3;29021:20;29018:1;29011:31;29061:4;29058:1;29051:15;29085:4;29082:1;29075:15;29101:131;-1:-1:-1;;;;;29176:31:1;;29166:42;;29156:70;;29222:1;29219;29212:12;29237:131;-1:-1:-1;;;;;;29311:32:1;;29301:43;;29291:71;;29358:1;29355;29348:12
Swarm Source
ipfs://9c47c28eb7e771823937f4fddfae260c1e35d68bceec4b2fcc5f24c71c35e820
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.