ERC-721
Overview
Max Total Supply
10,333 CCC
Holders
429
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 CCCLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
CheekyCubClub
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-06 */ /** *Submitted for verification at Etherscan.io on 2022-03-21 */ // Hi. If you have any questions or comments in this smart contract please let me know at: // Whatsapp +923178866631, website : http://corecis.org // // // Complete DApp created by Corecis // // // // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @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); } } } } 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); } } 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); } 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); } abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } 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; } 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev 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 {} } /* _____ _ _ / __ \ | | | | / \/ |__ ___ ___| | ___ _ | | | '_ \ / _ \/ _ \ |/ / | | | | \__/\ | | | __/ __/ <| |_| | \____/_| |_|\___|\___|_|\_\\__, | __/ | |___/ / _____ _ / __ \ | | | / \/_ _| |__ | | | | | | '_ \ | \__/\ |_| | |_) | \____/\__,_|_.__/ / _____ _ _ / __ \ | | | | / \/ |_ _| |__ | | | | | | | '_ \ | \__/\ | |_| | |_) | \____/_|\__,_|_.__/ */ contract CheekyCubClub is ERC721("Cheeky Cub Club", "CCC") { IERC721 public Lion; IERC721 public Cougar; string public baseURI; bool public isSaleActive; bool isBreedCubActive; uint256 public circulatingSupply; address public owner; uint[] _BreadedLion; uint[] _BreededCougar; uint256 public constant totalSupply = 10333; uint256 public itemPrice = 0.04 ether; mapping(uint => uint) BreededLion; mapping(uint => uint) BreededCougar; constructor(address _lion, address _cougar, address _owner) { Lion = IERC721(_lion); Cougar = IERC721(_cougar); owner = _owner; } ///////////////////////////////// // breeding conditioner // ///////////////////////////////// // ✅ done Checked function breedingCondition(uint _howMany, uint _Lion, uint _Cougar)internal{ require(Lion.ownerOf(_Lion) == msg.sender, "your are not owner of this Lion"); require(Cougar.ownerOf(_Cougar) == msg.sender, "your are not owner of this Cougar"); require(breededLion(_Lion) != true && breededCougar(_Cougar) != true, "already Breeded"); require(_howMany <= Lion.balanceOf(msg.sender), "You dont have enough Lions"); require(_howMany <= Cougar.balanceOf(msg.sender), "You dont have enough Cougars"); _BreadedLion.push(_Lion); _BreededCougar.push(_Cougar); BreededLion[_Lion] = _Cougar; BreededCougar[_Cougar] = _Lion; } // ✅ done Checked function checkAvailabilityOfLion(uint _Lion) public view returns(string memory message){ if(breededLion(_Lion) == true){ return message = "not availability"; }else{ return message = "available"; } } // ✅ done Checked function checkAvailabilityOfCougar(uint _Cougar) public view returns(string memory message){ if(breededCougar(_Cougar) == true){ return message = "not availability"; }else{ return message = "available"; } } // ✅ done Checked function breededLion(uint _Lion) public view returns(bool breeded){ if(BreededLion[_Lion] > 0){ return breeded = true; } } // ✅ done Checked function breededCougar(uint _Cougar) public view returns(bool breeded){ if(BreededCougar[_Cougar] > 0){ return breeded = true; } } //////////////////// // PUBLIC SALE // //////////////////// // Purchase NFT // ✅ done Checked function breedCub(uint256 _howMany, uint _Lion, uint _Cougar) external tokensAvailable(_howMany) { require( isBreedCubActive && circulatingSupply <= 10333, "Breed is not active" ); breedingCondition(_howMany,_Lion,_Cougar); _mint(msg.sender, ++circulatingSupply); } // ✅ done Checked function startBreedCub() external onlyOwner { isBreedCubActive = true; } // ✅ done Checked function stopBreedCub() external onlyOwner { isBreedCubActive = false; } // ✅ done Checked // Purchase multiple NFTs at once function purchaseTokens(uint256 _howMany) external payable tokensAvailable(_howMany) { require( isSaleActive, "Sale is not active" ); require( _howMany > 0 && _howMany <= 10, "Mint min 1, max 10" ); require( msg.value >= _howMany * itemPrice, "Try to send more ETH" ); require( circulatingSupply <= 10333, "can't mint more then circulating supply" ); payable(owner).transfer(msg.value); for (uint256 i = 0; i < _howMany; i++) _mint(msg.sender, ++circulatingSupply); } //Gift // Send NFTs to a list of addresses function giftNftToList(address[] calldata _sendNftsTo) external onlyOwner tokensAvailable(_sendNftsTo.length) { for (uint256 i = 0; i < _sendNftsTo.length; i++) _mint(_sendNftsTo[i], ++circulatingSupply); } function LionFinder() public view returns(uint[] memory){ return _BreadedLion; } function CougarFinder() public view returns(uint[] memory){ return _BreededCougar; } ////////////////////////// // Only Owner Methods // ////////////////////////// // ✅ done Checked function stopSale() external onlyOwner { isSaleActive = false; } // ✅ done Checked function startSale() external onlyOwner { isSaleActive = true; } // Hide identity or show identity from here // ✅ done Checked function setBaseURI(string memory __baseURI) external onlyOwner { baseURI = __baseURI; } // ✅ done Checked // Change price in case of ETH price changes too much function setPrice(uint256 _newPrice) external onlyOwner { itemPrice = _newPrice; } /////////////////// // Query Method // /////////////////// // ✅ done Checked function tokensRemaining() public view returns (uint256) { return totalSupply - circulatingSupply; } function _baseURI() internal view override returns (string memory) { return baseURI; } /////////////////// // Modifiers // /////////////////// // ✅ done Checked modifier tokensAvailable(uint256 _howMany) { require(_howMany <= tokensRemaining(), "Try minting less tokens"); _; } // ✅ done Checked modifier onlyOwner() { require(owner == msg.sender, "Ownable: caller is not the owner"); _; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_lion","type":"address"},{"internalType":"address","name":"_cougar","type":"address"},{"internalType":"address","name":"_owner","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Cougar","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CougarFinder","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Lion","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LionFinder","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_howMany","type":"uint256"},{"internalType":"uint256","name":"_Lion","type":"uint256"},{"internalType":"uint256","name":"_Cougar","type":"uint256"}],"name":"breedCub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Cougar","type":"uint256"}],"name":"breededCougar","outputs":[{"internalType":"bool","name":"breeded","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Lion","type":"uint256"}],"name":"breededLion","outputs":[{"internalType":"bool","name":"breeded","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Cougar","type":"uint256"}],"name":"checkAvailabilityOfCougar","outputs":[{"internalType":"string","name":"message","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Lion","type":"uint256"}],"name":"checkAvailabilityOfLion","outputs":[{"internalType":"string","name":"message","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_sendNftsTo","type":"address[]"}],"name":"giftNftToList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"itemPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_howMany","type":"uint256"}],"name":"purchaseTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBreedCub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopBreedCub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensRemaining","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"}]
Contract Creation Code
6080604052668e1bc9bf040000600e553480156200001c57600080fd5b5060405162002d0238038062002d028339810160408190526200003f91620001b0565b604080518082018252600f81526e21b432b2b5bc9021bab11021b63ab160891b60208083019182528351808501909452600384526243434360e81b9084015281519192916200009191600091620000ed565b508051620000a7906001906020840190620000ed565b5050600680546001600160a01b039586166001600160a01b031991821617909155600780549486169482169490941790935550600b805491909316911617905562000237565b828054620000fb90620001fa565b90600052602060002090601f0160209004810192826200011f57600085556200016a565b82601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b80516001600160a01b0381168114620001ab57600080fd5b919050565b600080600060608486031215620001c657600080fd5b620001d18462000193565b9250620001e16020850162000193565b9150620001f16040850162000193565b90509250925092565b600181811c908216806200020f57607f821691505b602082108114156200023157634e487b7160e01b600052602260045260246000fd5b50919050565b612abb80620002476000396000f3fe60806040526004361061026a5760003560e01c80637b97008d11610153578063b66a0e5d116100cb578063dac6db1c1161007f578063e939e70211610064578063e939e70214610672578063e985e9c514610687578063f9529a26146106d057600080fd5b8063dac6db1c14610647578063e36b0b371461065d57600080fd5b8063c2f55bcd116100b0578063c2f55bcd146105fd578063c87b56dd14610612578063c8b081251461063257600080fd5b8063b66a0e5d146105c8578063b88d4fde146105dd57600080fd5b806395d89b4111610122578063ae14698211610107578063ae14698214610568578063b35695e514610588578063b50153e2146105a857600080fd5b806395d89b4114610533578063a22cb4651461054857600080fd5b80637b97008d146104ca5780638da5cb5b146104dd57806391b7f5ed146104fd5780639358928b1461051d57600080fd5b8063354cf32d116101e65780636352211e116101b557806370a082311161019a57806370a082311461046a57806371365d081461048a5780637579e9a3146104aa57600080fd5b80636352211e146104355780636c0360eb1461045557600080fd5b8063354cf32d146103bb57806342842e0e146103db57806355f804b3146103fb578063564566a81461041b57600080fd5b8063122eb3941161023d57806323b872dd1161022257806323b872dd146103645780632dbe93781461038457806333718aa11461039957600080fd5b8063122eb3941461032057806318160ddd1461034057600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063081812fc146102c6578063095ea7b3146102fe575b600080fd5b34801561027b57600080fd5b5061028f61028a3660046124d3565b6106f0565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b96107d5565b60405161029b9190612548565b3480156102d257600080fd5b506102e66102e136600461255b565b610867565b6040516001600160a01b03909116815260200161029b565b34801561030a57600080fd5b5061031e610319366004612589565b610912565b005b34801561032c57600080fd5b5061031e61033b3660046125b5565b610a44565b34801561034c57600080fd5b5061035661285d81565b60405190815260200161029b565b34801561037057600080fd5b5061031e61037f3660046125e1565b610b31565b34801561039057600080fd5b5061031e610bb8565b3480156103a557600080fd5b506103ae610c23565b60405161029b9190612622565b3480156103c757600080fd5b506102b96103d636600461255b565b610c7a565b3480156103e757600080fd5b5061031e6103f63660046125e1565b610d06565b34801561040757600080fd5b5061031e6104163660046126f2565b610d21565b34801561042757600080fd5b5060095461028f9060ff1681565b34801561044157600080fd5b506102e661045036600461255b565b610d92565b34801561046157600080fd5b506102b9610e1d565b34801561047657600080fd5b5061035661048536600461273b565b610eab565b34801561049657600080fd5b5061028f6104a536600461255b565b610f45565b3480156104b657600080fd5b5061028f6104c536600461255b565b610f61565b61031e6104d836600461255b565b610f7d565b3480156104e957600080fd5b50600b546102e6906001600160a01b031681565b34801561050957600080fd5b5061031e61051836600461255b565b6111c4565b34801561052957600080fd5b50610356600a5481565b34801561053f57600080fd5b506102b9611223565b34801561055457600080fd5b5061031e610563366004612758565b611232565b34801561057457600080fd5b506007546102e6906001600160a01b031681565b34801561059457600080fd5b506006546102e6906001600160a01b031681565b3480156105b457600080fd5b506102b96105c336600461255b565b61123d565b3480156105d457600080fd5b5061031e611248565b3480156105e957600080fd5b5061031e6105f8366004612796565b6112b1565b34801561060957600080fd5b506103ae611339565b34801561061e57600080fd5b506102b961062d36600461255b565b61138f565b34801561063e57600080fd5b50610356611478565b34801561065357600080fd5b50610356600e5481565b34801561066957600080fd5b5061031e61148f565b34801561067e57600080fd5b5061031e6114f5565b34801561069357600080fd5b5061028f6106a2366004612816565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156106dc57600080fd5b5061031e6106eb366004612844565b61155c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061078357507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546107e4906128b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610810906128b9565b801561085d5780601f106108325761010080835404028352916020019161085d565b820191906000526020600020905b81548152906001019060200180831161084057829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108f65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061091d82610d92565b9050806001600160a01b0316836001600160a01b031614156109a75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016108ed565b336001600160a01b03821614806109c357506109c381336106a2565b610a355760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016108ed565b610a3f8383611664565b505050565b82610a4d611478565b811115610a9c5760405162461bcd60e51b815260206004820152601760248201527f547279206d696e74696e67206c65737320746f6b656e7300000000000000000060448201526064016108ed565b600954610100900460ff168015610ab7575061285d600a5411155b610b035760405162461bcd60e51b815260206004820152601360248201527f4272656564206973206e6f74206163746976650000000000000000000000000060448201526064016108ed565b610b0e8484846116df565b610b2b33600a60008154610b219061290a565b9182905550611b92565b50505050565b610b3b3382611ce1565b610bad5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016108ed565b610a3f838383611de9565b600b546001600160a01b03163314610c125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805461ff001916610100179055565b6060600c80548060200260200160405190810160405280929190818152602001828054801561085d57602002820191906000526020600020905b815481526020019060010190808311610c5d575050505050905090565b6060610c8582610f45565b151560011415610cc857505060408051808201909152601081527f6e6f7420617661696c6162696c69747900000000000000000000000000000000602082015290565b505060408051808201909152600981527f617661696c61626c650000000000000000000000000000000000000000000000602082015290565b919050565b610a3f838383604051806020016040528060008152506112b1565b600b546001600160a01b03163314610d7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b8051610d8e906008906020840190612409565b5050565b6000818152600260205260408120546001600160a01b0316806107cf5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016108ed565b60088054610e2a906128b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e56906128b9565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b505050505081565b60006001600160a01b038216610f295760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016108ed565b506001600160a01b031660009081526003602052604090205490565b60008181526010602052604081205415610d0157506001919050565b6000818152600f602052604081205415610d0157506001919050565b80610f86611478565b811115610fd55760405162461bcd60e51b815260206004820152601760248201527f547279206d696e74696e67206c65737320746f6b656e7300000000000000000060448201526064016108ed565b60095460ff166110275760405162461bcd60e51b815260206004820152601260248201527f53616c65206973206e6f7420616374697665000000000000000000000000000060448201526064016108ed565b6000821180156110385750600a8211155b6110845760405162461bcd60e51b815260206004820152601260248201527f4d696e74206d696e20312c206d6178203130000000000000000000000000000060448201526064016108ed565b600e546110919083612925565b3410156110e05760405162461bcd60e51b815260206004820152601460248201527f54727920746f2073656e64206d6f72652045544800000000000000000000000060448201526064016108ed565b61285d600a54111561115a5760405162461bcd60e51b815260206004820152602760248201527f63616e2774206d696e74206d6f7265207468656e2063697263756c6174696e6760448201527f20737570706c790000000000000000000000000000000000000000000000000060648201526084016108ed565b600b546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015611193573d6000803e3d6000fd5b5060005b82811015610a3f576111b233600a60008154610b219061290a565b806111bc8161290a565b915050611197565b600b546001600160a01b0316331461121e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b600e55565b6060600180546107e4906128b9565b610d8e338383611fc3565b6060610c8582610f61565b600b546001600160a01b031633146112a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805460ff19166001179055565b6112bb3383611ce1565b61132d5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016108ed565b610b2b84848484612092565b6060600d80548060200260200160405190810160405280929190818152602001828054801561085d5760200282019190600052602060002090815481526020019060010190808311610c5d575050505050905090565b6000818152600260205260409020546060906001600160a01b031661141c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016108ed565b600061142661211b565b905060008151116114465760405180602001604052806000815250611471565b806114508461212a565b604051602001611461929190612944565b6040516020818303038152906040525b9392505050565b6000600a5461285d61148a9190612973565b905090565b600b546001600160a01b031633146114e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805460ff19169055565b600b546001600160a01b0316331461154f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805461ff0019169055565b600b546001600160a01b031633146115b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b806115bf611478565b81111561160e5760405162461bcd60e51b815260206004820152601760248201527f547279206d696e74696e67206c65737320746f6b656e7300000000000000000060448201526064016108ed565b60005b82811015610b2b5761165284848381811061162e5761162e61298a565b9050602002016020810190611643919061273b565b600a60008154610b219061290a565b8061165c8161290a565b915050611611565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906116a682610d92565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6006546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810184905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561173c57600080fd5b505afa158015611750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177491906129a0565b6001600160a01b0316146117ca5760405162461bcd60e51b815260206004820152601f60248201527f796f757220617265206e6f74206f776e6572206f662074686973204c696f6e0060448201526064016108ed565b6007546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561182757600080fd5b505afa15801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f91906129a0565b6001600160a01b0316146118db5760405162461bcd60e51b815260206004820152602160248201527f796f757220617265206e6f74206f776e6572206f66207468697320436f75676160448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016108ed565b6118e482610f61565b151560011480159061190157506118fa81610f45565b1515600114155b61194d5760405162461bcd60e51b815260206004820152600f60248201527f616c72656164792042726565646564000000000000000000000000000000000060448201526064016108ed565b6006546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e191906129bd565b831115611a305760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e74206861766520656e6f756768204c696f6e7300000000000060448201526064016108ed565b6007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015611a8c57600080fd5b505afa158015611aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac491906129bd565b831115611b135760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6e74206861766520656e6f75676820436f75676172730000000060448201526064016108ed565b600c805460018181019092557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701839055600d805491820190557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018190556000828152600f6020908152604080832084905592825260109052205550565b6001600160a01b038216611be85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108ed565b6000818152600260205260409020546001600160a01b031615611c4d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108ed565b6001600160a01b0382166000908152600360205260408120805460019290611c769084906129d6565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260408120546001600160a01b0316611d6b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016108ed565b6000611d7683610d92565b9050806001600160a01b0316846001600160a01b03161480611db15750836001600160a01b0316611da684610867565b6001600160a01b0316145b80611de157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611dfc82610d92565b6001600160a01b031614611e785760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016108ed565b6001600160a01b038216611ef35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108ed565b611efe600082611664565b6001600160a01b0383166000908152600360205260408120805460019290611f27908490612973565b90915550506001600160a01b0382166000908152600360205260408120805460019290611f559084906129d6565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156120255760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108ed565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61209d848484611de9565b6120a98484848461225c565b610b2b5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108ed565b6060600880546107e4906128b9565b60608161216a57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612194578061217e8161290a565b915061218d9050600a83612a04565b915061216e565b60008167ffffffffffffffff8111156121af576121af612666565b6040519080825280601f01601f1916602001820160405280156121d9576020820181803683370190505b5090505b8415611de1576121ee600183612973565b91506121fb600a86612a18565b6122069060306129d6565b60f81b81838151811061221b5761221b61298a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612255600a86612a04565b94506121dd565b60006001600160a01b0384163b156123fe576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a02906122b9903390899088908890600401612a2c565b602060405180830381600087803b1580156122d357600080fd5b505af1925050508015612303575060408051601f3d908101601f1916820190925261230091810190612a68565b60015b6123b3573d808015612331576040519150601f19603f3d011682016040523d82523d6000602084013e612336565b606091505b5080516123ab5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108ed565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611de1565b506001949350505050565b828054612415906128b9565b90600052602060002090601f016020900481019282612437576000855561247d565b82601f1061245057805160ff191683800117855561247d565b8280016001018555821561247d579182015b8281111561247d578251825591602001919060010190612462565b5061248992915061248d565b5090565b5b80821115612489576000815560010161248e565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146124d057600080fd5b50565b6000602082840312156124e557600080fd5b8135611471816124a2565b60005b8381101561250b5781810151838201526020016124f3565b83811115610b2b5750506000910152565b600081518084526125348160208601602086016124f0565b601f01601f19169290920160200192915050565b602081526000611471602083018461251c565b60006020828403121561256d57600080fd5b5035919050565b6001600160a01b03811681146124d057600080fd5b6000806040838503121561259c57600080fd5b82356125a781612574565b946020939093013593505050565b6000806000606084860312156125ca57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156125f657600080fd5b833561260181612574565b9250602084013561261181612574565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561265a5783518352928401929184019160010161263e565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561269757612697612666565b604051601f8501601f19908116603f011681019082821181831017156126bf576126bf612666565b816040528093508581528686860111156126d857600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561270457600080fd5b813567ffffffffffffffff81111561271b57600080fd5b8201601f8101841361272c57600080fd5b611de18482356020840161267c565b60006020828403121561274d57600080fd5b813561147181612574565b6000806040838503121561276b57600080fd5b823561277681612574565b91506020830135801515811461278b57600080fd5b809150509250929050565b600080600080608085870312156127ac57600080fd5b84356127b781612574565b935060208501356127c781612574565b925060408501359150606085013567ffffffffffffffff8111156127ea57600080fd5b8501601f810187136127fb57600080fd5b61280a8782356020840161267c565b91505092959194509250565b6000806040838503121561282957600080fd5b823561283481612574565b9150602083013561278b81612574565b6000806020838503121561285757600080fd5b823567ffffffffffffffff8082111561286f57600080fd5b818501915085601f83011261288357600080fd5b81358181111561289257600080fd5b8660208260051b85010111156128a757600080fd5b60209290920196919550909350505050565b600181811c908216806128cd57607f821691505b602082108114156128ee57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060001982141561291e5761291e6128f4565b5060010190565b600081600019048311821515161561293f5761293f6128f4565b500290565b600083516129568184602088016124f0565b83519083019061296a8183602088016124f0565b01949350505050565b600082821015612985576129856128f4565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156129b257600080fd5b815161147181612574565b6000602082840312156129cf57600080fd5b5051919050565b600082198211156129e9576129e96128f4565b500190565b634e487b7160e01b600052601260045260246000fd5b600082612a1357612a136129ee565b500490565b600082612a2757612a276129ee565b500690565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612a5e608083018461251c565b9695505050505050565b600060208284031215612a7a57600080fd5b8151611471816124a256fea2646970667358221220e4033374e7aaa6f217668813faf1df8fbcbf63a7754bcf3e6b25eb6ba73bf3c564736f6c6343000809003300000000000000000000000018f87c05325ae47bfe75c039198b3dc1cb2ed23d000000000000000000000000734f5d723f27963ba48589170fbd39453196cb0f000000000000000000000000351073cb997927bc15ce8af475862034acb97749
Deployed Bytecode
0x60806040526004361061026a5760003560e01c80637b97008d11610153578063b66a0e5d116100cb578063dac6db1c1161007f578063e939e70211610064578063e939e70214610672578063e985e9c514610687578063f9529a26146106d057600080fd5b8063dac6db1c14610647578063e36b0b371461065d57600080fd5b8063c2f55bcd116100b0578063c2f55bcd146105fd578063c87b56dd14610612578063c8b081251461063257600080fd5b8063b66a0e5d146105c8578063b88d4fde146105dd57600080fd5b806395d89b4111610122578063ae14698211610107578063ae14698214610568578063b35695e514610588578063b50153e2146105a857600080fd5b806395d89b4114610533578063a22cb4651461054857600080fd5b80637b97008d146104ca5780638da5cb5b146104dd57806391b7f5ed146104fd5780639358928b1461051d57600080fd5b8063354cf32d116101e65780636352211e116101b557806370a082311161019a57806370a082311461046a57806371365d081461048a5780637579e9a3146104aa57600080fd5b80636352211e146104355780636c0360eb1461045557600080fd5b8063354cf32d146103bb57806342842e0e146103db57806355f804b3146103fb578063564566a81461041b57600080fd5b8063122eb3941161023d57806323b872dd1161022257806323b872dd146103645780632dbe93781461038457806333718aa11461039957600080fd5b8063122eb3941461032057806318160ddd1461034057600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063081812fc146102c6578063095ea7b3146102fe575b600080fd5b34801561027b57600080fd5b5061028f61028a3660046124d3565b6106f0565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b96107d5565b60405161029b9190612548565b3480156102d257600080fd5b506102e66102e136600461255b565b610867565b6040516001600160a01b03909116815260200161029b565b34801561030a57600080fd5b5061031e610319366004612589565b610912565b005b34801561032c57600080fd5b5061031e61033b3660046125b5565b610a44565b34801561034c57600080fd5b5061035661285d81565b60405190815260200161029b565b34801561037057600080fd5b5061031e61037f3660046125e1565b610b31565b34801561039057600080fd5b5061031e610bb8565b3480156103a557600080fd5b506103ae610c23565b60405161029b9190612622565b3480156103c757600080fd5b506102b96103d636600461255b565b610c7a565b3480156103e757600080fd5b5061031e6103f63660046125e1565b610d06565b34801561040757600080fd5b5061031e6104163660046126f2565b610d21565b34801561042757600080fd5b5060095461028f9060ff1681565b34801561044157600080fd5b506102e661045036600461255b565b610d92565b34801561046157600080fd5b506102b9610e1d565b34801561047657600080fd5b5061035661048536600461273b565b610eab565b34801561049657600080fd5b5061028f6104a536600461255b565b610f45565b3480156104b657600080fd5b5061028f6104c536600461255b565b610f61565b61031e6104d836600461255b565b610f7d565b3480156104e957600080fd5b50600b546102e6906001600160a01b031681565b34801561050957600080fd5b5061031e61051836600461255b565b6111c4565b34801561052957600080fd5b50610356600a5481565b34801561053f57600080fd5b506102b9611223565b34801561055457600080fd5b5061031e610563366004612758565b611232565b34801561057457600080fd5b506007546102e6906001600160a01b031681565b34801561059457600080fd5b506006546102e6906001600160a01b031681565b3480156105b457600080fd5b506102b96105c336600461255b565b61123d565b3480156105d457600080fd5b5061031e611248565b3480156105e957600080fd5b5061031e6105f8366004612796565b6112b1565b34801561060957600080fd5b506103ae611339565b34801561061e57600080fd5b506102b961062d36600461255b565b61138f565b34801561063e57600080fd5b50610356611478565b34801561065357600080fd5b50610356600e5481565b34801561066957600080fd5b5061031e61148f565b34801561067e57600080fd5b5061031e6114f5565b34801561069357600080fd5b5061028f6106a2366004612816565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156106dc57600080fd5b5061031e6106eb366004612844565b61155c565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061078357507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806107cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546107e4906128b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610810906128b9565b801561085d5780601f106108325761010080835404028352916020019161085d565b820191906000526020600020905b81548152906001019060200180831161084057829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166108f65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061091d82610d92565b9050806001600160a01b0316836001600160a01b031614156109a75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016108ed565b336001600160a01b03821614806109c357506109c381336106a2565b610a355760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016108ed565b610a3f8383611664565b505050565b82610a4d611478565b811115610a9c5760405162461bcd60e51b815260206004820152601760248201527f547279206d696e74696e67206c65737320746f6b656e7300000000000000000060448201526064016108ed565b600954610100900460ff168015610ab7575061285d600a5411155b610b035760405162461bcd60e51b815260206004820152601360248201527f4272656564206973206e6f74206163746976650000000000000000000000000060448201526064016108ed565b610b0e8484846116df565b610b2b33600a60008154610b219061290a565b9182905550611b92565b50505050565b610b3b3382611ce1565b610bad5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016108ed565b610a3f838383611de9565b600b546001600160a01b03163314610c125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805461ff001916610100179055565b6060600c80548060200260200160405190810160405280929190818152602001828054801561085d57602002820191906000526020600020905b815481526020019060010190808311610c5d575050505050905090565b6060610c8582610f45565b151560011415610cc857505060408051808201909152601081527f6e6f7420617661696c6162696c69747900000000000000000000000000000000602082015290565b505060408051808201909152600981527f617661696c61626c650000000000000000000000000000000000000000000000602082015290565b919050565b610a3f838383604051806020016040528060008152506112b1565b600b546001600160a01b03163314610d7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b8051610d8e906008906020840190612409565b5050565b6000818152600260205260408120546001600160a01b0316806107cf5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016108ed565b60088054610e2a906128b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e56906128b9565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b505050505081565b60006001600160a01b038216610f295760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016108ed565b506001600160a01b031660009081526003602052604090205490565b60008181526010602052604081205415610d0157506001919050565b6000818152600f602052604081205415610d0157506001919050565b80610f86611478565b811115610fd55760405162461bcd60e51b815260206004820152601760248201527f547279206d696e74696e67206c65737320746f6b656e7300000000000000000060448201526064016108ed565b60095460ff166110275760405162461bcd60e51b815260206004820152601260248201527f53616c65206973206e6f7420616374697665000000000000000000000000000060448201526064016108ed565b6000821180156110385750600a8211155b6110845760405162461bcd60e51b815260206004820152601260248201527f4d696e74206d696e20312c206d6178203130000000000000000000000000000060448201526064016108ed565b600e546110919083612925565b3410156110e05760405162461bcd60e51b815260206004820152601460248201527f54727920746f2073656e64206d6f72652045544800000000000000000000000060448201526064016108ed565b61285d600a54111561115a5760405162461bcd60e51b815260206004820152602760248201527f63616e2774206d696e74206d6f7265207468656e2063697263756c6174696e6760448201527f20737570706c790000000000000000000000000000000000000000000000000060648201526084016108ed565b600b546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015611193573d6000803e3d6000fd5b5060005b82811015610a3f576111b233600a60008154610b219061290a565b806111bc8161290a565b915050611197565b600b546001600160a01b0316331461121e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b600e55565b6060600180546107e4906128b9565b610d8e338383611fc3565b6060610c8582610f61565b600b546001600160a01b031633146112a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805460ff19166001179055565b6112bb3383611ce1565b61132d5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016108ed565b610b2b84848484612092565b6060600d80548060200260200160405190810160405280929190818152602001828054801561085d5760200282019190600052602060002090815481526020019060010190808311610c5d575050505050905090565b6000818152600260205260409020546060906001600160a01b031661141c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016108ed565b600061142661211b565b905060008151116114465760405180602001604052806000815250611471565b806114508461212a565b604051602001611461929190612944565b6040516020818303038152906040525b9392505050565b6000600a5461285d61148a9190612973565b905090565b600b546001600160a01b031633146114e95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805460ff19169055565b600b546001600160a01b0316331461154f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b6009805461ff0019169055565b600b546001600160a01b031633146115b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ed565b806115bf611478565b81111561160e5760405162461bcd60e51b815260206004820152601760248201527f547279206d696e74696e67206c65737320746f6b656e7300000000000000000060448201526064016108ed565b60005b82811015610b2b5761165284848381811061162e5761162e61298a565b9050602002016020810190611643919061273b565b600a60008154610b219061290a565b8061165c8161290a565b915050611611565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906116a682610d92565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6006546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810184905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561173c57600080fd5b505afa158015611750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177491906129a0565b6001600160a01b0316146117ca5760405162461bcd60e51b815260206004820152601f60248201527f796f757220617265206e6f74206f776e6572206f662074686973204c696f6e0060448201526064016108ed565b6007546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561182757600080fd5b505afa15801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f91906129a0565b6001600160a01b0316146118db5760405162461bcd60e51b815260206004820152602160248201527f796f757220617265206e6f74206f776e6572206f66207468697320436f75676160448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016108ed565b6118e482610f61565b151560011480159061190157506118fa81610f45565b1515600114155b61194d5760405162461bcd60e51b815260206004820152600f60248201527f616c72656164792042726565646564000000000000000000000000000000000060448201526064016108ed565b6006546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e191906129bd565b831115611a305760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e74206861766520656e6f756768204c696f6e7300000000000060448201526064016108ed565b6007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015611a8c57600080fd5b505afa158015611aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac491906129bd565b831115611b135760405162461bcd60e51b815260206004820152601c60248201527f596f7520646f6e74206861766520656e6f75676820436f75676172730000000060448201526064016108ed565b600c805460018181019092557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c701839055600d805491820190557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018190556000828152600f6020908152604080832084905592825260109052205550565b6001600160a01b038216611be85760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108ed565b6000818152600260205260409020546001600160a01b031615611c4d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108ed565b6001600160a01b0382166000908152600360205260408120805460019290611c769084906129d6565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260408120546001600160a01b0316611d6b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016108ed565b6000611d7683610d92565b9050806001600160a01b0316846001600160a01b03161480611db15750836001600160a01b0316611da684610867565b6001600160a01b0316145b80611de157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611dfc82610d92565b6001600160a01b031614611e785760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016108ed565b6001600160a01b038216611ef35760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108ed565b611efe600082611664565b6001600160a01b0383166000908152600360205260408120805460019290611f27908490612973565b90915550506001600160a01b0382166000908152600360205260408120805460019290611f559084906129d6565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031614156120255760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108ed565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61209d848484611de9565b6120a98484848461225c565b610b2b5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108ed565b6060600880546107e4906128b9565b60608161216a57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612194578061217e8161290a565b915061218d9050600a83612a04565b915061216e565b60008167ffffffffffffffff8111156121af576121af612666565b6040519080825280601f01601f1916602001820160405280156121d9576020820181803683370190505b5090505b8415611de1576121ee600183612973565b91506121fb600a86612a18565b6122069060306129d6565b60f81b81838151811061221b5761221b61298a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612255600a86612a04565b94506121dd565b60006001600160a01b0384163b156123fe576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a02906122b9903390899088908890600401612a2c565b602060405180830381600087803b1580156122d357600080fd5b505af1925050508015612303575060408051601f3d908101601f1916820190925261230091810190612a68565b60015b6123b3573d808015612331576040519150601f19603f3d011682016040523d82523d6000602084013e612336565b606091505b5080516123ab5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108ed565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611de1565b506001949350505050565b828054612415906128b9565b90600052602060002090601f016020900481019282612437576000855561247d565b82601f1061245057805160ff191683800117855561247d565b8280016001018555821561247d579182015b8281111561247d578251825591602001919060010190612462565b5061248992915061248d565b5090565b5b80821115612489576000815560010161248e565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146124d057600080fd5b50565b6000602082840312156124e557600080fd5b8135611471816124a2565b60005b8381101561250b5781810151838201526020016124f3565b83811115610b2b5750506000910152565b600081518084526125348160208601602086016124f0565b601f01601f19169290920160200192915050565b602081526000611471602083018461251c565b60006020828403121561256d57600080fd5b5035919050565b6001600160a01b03811681146124d057600080fd5b6000806040838503121561259c57600080fd5b82356125a781612574565b946020939093013593505050565b6000806000606084860312156125ca57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156125f657600080fd5b833561260181612574565b9250602084013561261181612574565b929592945050506040919091013590565b6020808252825182820181905260009190848201906040850190845b8181101561265a5783518352928401929184019160010161263e565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561269757612697612666565b604051601f8501601f19908116603f011681019082821181831017156126bf576126bf612666565b816040528093508581528686860111156126d857600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561270457600080fd5b813567ffffffffffffffff81111561271b57600080fd5b8201601f8101841361272c57600080fd5b611de18482356020840161267c565b60006020828403121561274d57600080fd5b813561147181612574565b6000806040838503121561276b57600080fd5b823561277681612574565b91506020830135801515811461278b57600080fd5b809150509250929050565b600080600080608085870312156127ac57600080fd5b84356127b781612574565b935060208501356127c781612574565b925060408501359150606085013567ffffffffffffffff8111156127ea57600080fd5b8501601f810187136127fb57600080fd5b61280a8782356020840161267c565b91505092959194509250565b6000806040838503121561282957600080fd5b823561283481612574565b9150602083013561278b81612574565b6000806020838503121561285757600080fd5b823567ffffffffffffffff8082111561286f57600080fd5b818501915085601f83011261288357600080fd5b81358181111561289257600080fd5b8660208260051b85010111156128a757600080fd5b60209290920196919550909350505050565b600181811c908216806128cd57607f821691505b602082108114156128ee57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060001982141561291e5761291e6128f4565b5060010190565b600081600019048311821515161561293f5761293f6128f4565b500290565b600083516129568184602088016124f0565b83519083019061296a8183602088016124f0565b01949350505050565b600082821015612985576129856128f4565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156129b257600080fd5b815161147181612574565b6000602082840312156129cf57600080fd5b5051919050565b600082198211156129e9576129e96128f4565b500190565b634e487b7160e01b600052601260045260246000fd5b600082612a1357612a136129ee565b500490565b600082612a2757612a276129ee565b500690565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612a5e608083018461251c565b9695505050505050565b600060208284031215612a7a57600080fd5b8151611471816124a256fea2646970667358221220e4033374e7aaa6f217668813faf1df8fbcbf63a7754bcf3e6b25eb6ba73bf3c564736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000018f87c05325ae47bfe75c039198b3dc1cb2ed23d000000000000000000000000734f5d723f27963ba48589170fbd39453196cb0f000000000000000000000000351073cb997927bc15ce8af475862034acb97749
-----Decoded View---------------
Arg [0] : _lion (address): 0x18f87c05325AE47bfe75c039198b3Dc1CB2ED23D
Arg [1] : _cougar (address): 0x734f5D723F27963bA48589170fbd39453196cb0F
Arg [2] : _owner (address): 0x351073CB997927BC15cE8Af475862034acb97749
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000018f87c05325ae47bfe75c039198b3dc1cb2ed23d
Arg [1] : 000000000000000000000000734f5d723f27963ba48589170fbd39453196cb0f
Arg [2] : 000000000000000000000000351073cb997927bc15ce8af475862034acb97749
Deployed Bytecode Sourcemap
31619:5882:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17988:305;;;;;;;;;;-1:-1:-1;17988:305:0;;;;;:::i;:::-;;:::i;:::-;;;611:14:1;;604:22;586:41;;574:2;559:18;17988:305:0;;;;;;;;18933:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20492:221::-;;;;;;;;;;-1:-1:-1;20492:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1797:55:1;;;1779:74;;1767:2;1752:18;20492:221:0;1633:226:1;20015:411:0;;;;;;;;;;-1:-1:-1;20015:411:0;;;;;:::i;:::-;;:::i;:::-;;34279:355;;;;;;;;;;-1:-1:-1;34279:355:0;;;;;:::i;:::-;;:::i;31948:43::-;;;;;;;;;;;;31986:5;31948:43;;;;;2810:25:1;;;2798:2;2783:18;31948:43:0;2664:177:1;21242:339:0;;;;;;;;;;-1:-1:-1;21242:339:0;;;;;:::i;:::-;;:::i;34667:86::-;;;;;;;;;;;;;:::i;35866:94::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;33465:264::-;;;;;;;;;;-1:-1:-1;33465:264:0;;;;;:::i;:::-;;:::i;21652:185::-;;;;;;;;;;-1:-1:-1;21652:185:0;;;;;:::i;:::-;;:::i;36468:102::-;;;;;;;;;;-1:-1:-1;36468:102:0;;;;;:::i;:::-;;:::i;31769:24::-;;;;;;;;;;-1:-1:-1;31769:24:0;;;;;;;;18627:239;;;;;;;;;;-1:-1:-1;18627:239:0;;;;;:::i;:::-;;:::i;31741:21::-;;;;;;;;;;;;;:::i;18357:208::-;;;;;;;;;;-1:-1:-1;18357:208:0;;;;;:::i;:::-;;:::i;33965:178::-;;;;;;;;;;-1:-1:-1;33965:178:0;;;;;:::i;:::-;;:::i;33762:170::-;;;;;;;;;;-1:-1:-1;33762:170:0;;;;;:::i;:::-;;:::i;34942:585::-;;;;;;:::i;:::-;;:::i;31867:20::-;;;;;;;;;;-1:-1:-1;31867:20:0;;;;-1:-1:-1;;;;;31867:20:0;;;36662:96;;;;;;;;;;-1:-1:-1;36662:96:0;;;;;:::i;:::-;;:::i;31828:32::-;;;;;;;;;;;;;;;;19102:104;;;;;;;;;;;;;:::i;20785:155::-;;;;;;;;;;-1:-1:-1;20785:155:0;;;;;:::i;:::-;;:::i;31713:21::-;;;;;;;;;;-1:-1:-1;31713:21:0;;;;-1:-1:-1;;;;;31713:21:0;;;31687:19;;;;;;;;;;-1:-1:-1;31687:19:0;;;;-1:-1:-1;;;;;31687:19:0;;;33176:256;;;;;;;;;;-1:-1:-1;33176:256:0;;;;;:::i;:::-;;:::i;36308:78::-;;;;;;;;;;;;;:::i;21908:328::-;;;;;;;;;;-1:-1:-1;21908:328:0;;;;;:::i;:::-;;:::i;35966:98::-;;;;;;;;;;;;;:::i;19277:334::-;;;;;;;;;;-1:-1:-1;19277:334:0;;;;;:::i;:::-;;:::i;36874:114::-;;;;;;;;;;;;;:::i;31998:37::-;;;;;;;;;;;;;;;;36199:78;;;;;;;;;;;;;:::i;34784:86::-;;;;;;;;;;;;;:::i;21011:164::-;;;;;;;;;;-1:-1:-1;21011:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;21132:25:0;;;21108:4;21132:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;21011:164;35593:265;;;;;;;;;;-1:-1:-1;35593:265:0;;;;;:::i;:::-;;:::i;17988:305::-;18090:4;18127:40;;;18142:25;18127:40;;:105;;-1:-1:-1;18184:48:0;;;18199:33;18184:48;18127:105;:158;;;-1:-1:-1;11616:25:0;11601:40;;;;18249:36;18107:178;17988:305;-1:-1:-1;;17988:305:0:o;18933:100::-;18987:13;19020:5;19013:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18933:100;:::o;20492:221::-;20568:7;23835:16;;;:7;:16;;;;;;-1:-1:-1;;;;;23835:16:0;20588:73;;;;-1:-1:-1;;;20588:73:0;;8661:2:1;20588:73:0;;;8643:21:1;8700:2;8680:18;;;8673:30;8739:34;8719:18;;;8712:62;8810:14;8790:18;;;8783:42;8842:19;;20588:73:0;;;;;;;;;-1:-1:-1;20681:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;20681:24:0;;20492:221::o;20015:411::-;20096:13;20112:23;20127:7;20112:14;:23::i;:::-;20096:39;;20160:5;-1:-1:-1;;;;;20154:11:0;:2;-1:-1:-1;;;;;20154:11:0;;;20146:57;;;;-1:-1:-1;;;20146:57:0;;9074:2:1;20146:57:0;;;9056:21:1;9113:2;9093:18;;;9086:30;9152:34;9132:18;;;9125:62;9223:3;9203:18;;;9196:31;9244:19;;20146:57:0;8872:397:1;20146:57:0;16881:10;-1:-1:-1;;;;;20238:21:0;;;;:62;;-1:-1:-1;20263:37:0;20280:5;16881:10;21011:164;:::i;20263:37::-;20216:168;;;;-1:-1:-1;;;20216:168:0;;9476:2:1;20216:168:0;;;9458:21:1;9515:2;9495:18;;;9488:30;9554:34;9534:18;;;9527:62;9625:26;9605:18;;;9598:54;9669:19;;20216:168:0;9274:420:1;20216:168:0;20397:21;20406:2;20410:7;20397:8;:21::i;:::-;20085:341;20015:411;;:::o;34279:355::-;34384:8;37284:17;:15;:17::i;:::-;37272:8;:29;;37264:65;;;;-1:-1:-1;;;37264:65:0;;9901:2:1;37264:65:0;;;9883:21:1;9940:2;9920:18;;;9913:30;9979:25;9959:18;;;9952:53;10022:18;;37264:65:0;9699:347:1;37264:65:0;34432:16:::1;::::0;::::1;::::0;::::1;;;:46:::0;::::1;;;;34473:5;34452:17;;:26;;34432:46;34410:115;;;::::0;-1:-1:-1;;;34410:115:0;;10253:2:1;34410:115:0::1;::::0;::::1;10235:21:1::0;10292:2;10272:18;;;10265:30;10331:21;10311:18;;;10304:49;10370:18;;34410:115:0::1;10051:343:1::0;34410:115:0::1;34536:41;34554:8;34563:5;34569:7;34536:17;:41::i;:::-;34588:38;34594:10;34608:17;;34606:19;;;;;:::i;:::-;::::0;;;;-1:-1:-1;34588:5:0::1;:38::i;:::-;34279:355:::0;;;;:::o;21242:339::-;21437:41;16881:10;21470:7;21437:18;:41::i;:::-;21429:103;;;;-1:-1:-1;;;21429:103:0;;10990:2:1;21429:103:0;;;10972:21:1;11029:2;11009:18;;;11002:30;11068:34;11048:18;;;11041:62;11139:19;11119:18;;;11112:47;11176:19;;21429:103:0;10788:413:1;21429:103:0;21545:28;21555:4;21561:2;21565:7;21545:9;:28::i;34667:86::-;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;34722:16:::1;:23:::0;;-1:-1:-1;;34722:23:0::1;;;::::0;;34667:86::o;35866:94::-;35908:13;35940:12;35933:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35866:94;:::o;33465:264::-;33534:21;33570:22;33584:7;33570:13;:22::i;:::-;:30;;33596:4;33570:30;33567:155;;;-1:-1:-1;;33623:28:0;;;;;;;;;;;;;;;;;;33465:264::o;33567:155::-;-1:-1:-1;;33689:21:0;;;;;;;;;;;;;;;;;;33465:264::o;33567:155::-;33465:264;;;:::o;21652:185::-;21790:39;21807:4;21813:2;21817:7;21790:39;;;;;;;;;;;;:16;:39::i;36468:102::-;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;36543:19;;::::1;::::0;:7:::1;::::0;:19:::1;::::0;::::1;::::0;::::1;:::i;:::-;;36468:102:::0;:::o;18627:239::-;18699:7;18735:16;;;:7;:16;;;;;;-1:-1:-1;;;;;18735:16:0;18770:19;18762:73;;;;-1:-1:-1;;;18762:73:0;;11769:2:1;18762:73:0;;;11751:21:1;11808:2;11788:18;;;11781:30;11847:34;11827:18;;;11820:62;11918:11;11898:18;;;11891:39;11947:19;;18762:73:0;11567:405:1;31741:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18357:208::-;18429:7;-1:-1:-1;;;;;18457:19:0;;18449:74;;;;-1:-1:-1;;;18449:74:0;;12179:2:1;18449:74:0;;;12161:21:1;12218:2;12198:18;;;12191:30;12257:34;12237:18;;;12230:62;12328:12;12308:18;;;12301:40;12358:19;;18449:74:0;11977:406:1;18449:74:0;-1:-1:-1;;;;;;18541:16:0;;;;;:9;:16;;;;;;;18357:208::o;33965:178::-;34022:12;34053:22;;;:13;:22;;;;;;:26;34050:86;;-1:-1:-1;34116:4:0;;33965:178;-1:-1:-1;33965:178:0:o;33762:170::-;33815:12;33846:18;;;:11;:18;;;;;;:22;33843:82;;-1:-1:-1;33905:4:0;;33762:170;-1:-1:-1;33762:170:0:o;34942:585::-;35044:8;37284:17;:15;:17::i;:::-;37272:8;:29;;37264:65;;;;-1:-1:-1;;;37264:65:0;;9901:2:1;37264:65:0;;;9883:21:1;9940:2;9920:18;;;9913:30;9979:25;9959:18;;;9952:53;10022:18;;37264:65:0;9699:347:1;37264:65:0;35081:12:::1;::::0;::::1;;35072:45;;;::::0;-1:-1:-1;;;35072:45:0;;12590:2:1;35072:45:0::1;::::0;::::1;12572:21:1::0;12629:2;12609:18;;;12602:30;12668:20;12648:18;;;12641:48;12706:18;;35072:45:0::1;12388:342:1::0;35072:45:0::1;35150:1;35139:8;:12;:30;;;;;35167:2;35155:8;:14;;35139:30;35130:63;;;::::0;-1:-1:-1;;;35130:63:0;;12937:2:1;35130:63:0::1;::::0;::::1;12919:21:1::0;12976:2;12956:18;;;12949:30;13015:20;12995:18;;;12988:48;13053:18;;35130:63:0::1;12735:342:1::0;35130:63:0::1;35239:9;::::0;35228:20:::1;::::0;:8;:20:::1;:::i;:::-;35215:9;:33;;35206:68;;;::::0;-1:-1:-1;;;35206:68:0;;13517:2:1;35206:68:0::1;::::0;::::1;13499:21:1::0;13556:2;13536:18;;;13529:30;13595:22;13575:18;;;13568:50;13635:18;;35206:68:0::1;13315:344:1::0;35206:68:0::1;35317:5;35296:17;;:26;;35287:80;;;::::0;-1:-1:-1;;;35287:80:0;;13866:2:1;35287:80:0::1;::::0;::::1;13848:21:1::0;13905:2;13885:18;;;13878:30;13944:34;13924:18;;;13917:62;14015:9;13995:18;;;13988:37;14042:19;;35287:80:0::1;13664:403:1::0;35287:80:0::1;35388:5;::::0;35380:34:::1;::::0;-1:-1:-1;;;;;35388:5:0;;::::1;::::0;35404:9:::1;35380:34:::0;::::1;;;::::0;35388:5:::1;35380:34:::0;35388:5;35380:34;35404:9;35388:5;35380:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;35432:9;35427:90;35451:8;35447:1;:12;35427:90;;;35479:38;35485:10;35499:17;;35497:19;;;;;:::i;35479:38::-;35461:3:::0;::::1;::::0;::::1;:::i;:::-;;;;35427:90;;36662:96:::0;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;36729:9:::1;:21:::0;36662:96::o;19102:104::-;19158:13;19191:7;19184:14;;;;;:::i;20785:155::-;20880:52;16881:10;20913:8;20923;20880:18;:52::i;33176:256::-;33241:21;33277:18;33289:5;33277:11;:18::i;36308:78::-;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;36359:12:::1;:19:::0;;-1:-1:-1;;36359:19:0::1;36374:4;36359:19;::::0;;36308:78::o;21908:328::-;22083:41;16881:10;22116:7;22083:18;:41::i;:::-;22075:103;;;;-1:-1:-1;;;22075:103:0;;10990:2:1;22075:103:0;;;10972:21:1;11029:2;11009:18;;;11002:30;11068:34;11048:18;;;11041:62;11139:19;11119:18;;;11112:47;11176:19;;22075:103:0;10788:413:1;22075:103:0;22189:39;22203:4;22209:2;22213:7;22222:5;22189:13;:39::i;35966:98::-;36010:13;36042:14;36035:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35966:98;:::o;19277:334::-;23811:4;23835:16;;;:7;:16;;;;;;19350:13;;-1:-1:-1;;;;;23835:16:0;19376:76;;;;-1:-1:-1;;;19376:76:0;;14274:2:1;19376:76:0;;;14256:21:1;14313:2;14293:18;;;14286:30;14352:34;14332:18;;;14325:62;14423:17;14403:18;;;14396:45;14458:19;;19376:76:0;14072:411:1;19376:76:0;19465:21;19489:10;:8;:10::i;:::-;19465:34;;19541:1;19523:7;19517:21;:25;:86;;;;;;;;;;;;;;;;;19569:7;19578:18;:7;:16;:18::i;:::-;19552:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19517:86;19510:93;19277:334;-1:-1:-1;;;19277:334:0:o;36874:114::-;36922:7;36963:17;;31986:5;36949:31;;;;:::i;:::-;36942:38;;36874:114;:::o;36199:78::-;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;36249:12:::1;:20:::0;;-1:-1:-1;;36249:20:0::1;::::0;;36199:78::o;34784:86::-;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;34838:16:::1;:24:::0;;-1:-1:-1;;34838:24:0::1;::::0;;34784:86::o;35593:265::-;37422:5;;-1:-1:-1;;;;;37422:5:0;37431:10;37422:19;37414:64;;;;-1:-1:-1;;;37414:64:0;;11408:2:1;37414:64:0;;;11390:21:1;;;11427:18;;;11420:30;11486:34;11466:18;;;11459:62;11538:18;;37414:64:0;11206:356:1;37414:64:0;35710:11;37284:17:::1;:15;:17::i;:::-;37272:8;:29;;37264:65;;;::::0;-1:-1:-1;;;37264:65:0;;9901:2:1;37264:65:0::1;::::0;::::1;9883:21:1::0;9940:2;9920:18;;;9913:30;9979:25;9959:18;;;9952:53;10022:18;;37264:65:0::1;9699:347:1::0;37264:65:0::1;35751:9:::2;35746:104;35766:22:::0;;::::2;35746:104;;;35808:42;35814:11;;35826:1;35814:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;35832:17;;35830:19;;;;;:::i;35808:42::-;35790:3:::0;::::2;::::0;::::2;:::i;:::-;;;;35746:104;;27728:174:::0;27803:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;27803:29:0;-1:-1:-1;;;;;27803:29:0;;;;;;;;:24;;27857:23;27803:24;27857:14;:23::i;:::-;-1:-1:-1;;;;;27848:46:0;;;;;;;;;;;27728:174;;:::o;32445:698::-;32539:4;;:19;;;;;;;;2810:25:1;;;32562:10:0;;-1:-1:-1;;;;;32539:4:0;;:12;;2783:18:1;;32539:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32539:33:0;;32531:77;;;;-1:-1:-1;;;32531:77:0;;15740:2:1;32531:77:0;;;15722:21:1;15779:2;15759:18;;;15752:30;15818:33;15798:18;;;15791:61;15869:18;;32531:77:0;15538:355:1;32531:77:0;32627:6;;:23;;;;;;;;2810:25:1;;;32654:10:0;;-1:-1:-1;;;;;32627:6:0;;:14;;2783:18:1;;32627:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32627:37:0;;32619:83;;;;-1:-1:-1;;;32619:83:0;;16100:2:1;32619:83:0;;;16082:21:1;16139:2;16119:18;;;16112:30;16178:34;16158:18;;;16151:62;16249:3;16229:18;;;16222:31;16270:19;;32619:83:0;15898:397:1;32619:83:0;32721:18;32733:5;32721:11;:18::i;:::-;:26;;32743:4;32721:26;;;;:60;;;32751:22;32765:7;32751:13;:22::i;:::-;:30;;32777:4;32751:30;;32721:60;32713:88;;;;-1:-1:-1;;;32713:88:0;;16502:2:1;32713:88:0;;;16484:21:1;16541:2;16521:18;;;16514:30;16580:17;16560:18;;;16553:45;16615:18;;32713:88:0;16300:339:1;32713:88:0;32832:4;;:26;;;;;32847:10;32832:26;;;1779:74:1;-1:-1:-1;;;;;32832:4:0;;;;:14;;1752:18:1;;32832:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32820:8;:38;;32812:77;;;;-1:-1:-1;;;32812:77:0;;17035:2:1;32812:77:0;;;17017:21:1;17074:2;17054:18;;;17047:30;17113:28;17093:18;;;17086:56;17159:18;;32812:77:0;16833:350:1;32812:77:0;32920:6;;:28;;;;;32937:10;32920:28;;;1779:74:1;-1:-1:-1;;;;;32920:6:0;;;;:16;;1752:18:1;;32920:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32908:8;:40;;32900:81;;;;-1:-1:-1;;;32900:81:0;;17390:2:1;32900:81:0;;;17372:21:1;17429:2;17409:18;;;17402:30;17468;17448:18;;;17441:58;17516:18;;32900:81:0;17188:352:1;32900:81:0;32992:12;:24;;;;;;;;;;;;;;33027:14;:28;;;;;;;;;;;;-1:-1:-1;33066:18:0;;;:11;32992:24;33066:18;;;;;;;:28;;;33105:22;;;:13;:22;;;:30;-1:-1:-1;32445:698:0:o;25724:382::-;-1:-1:-1;;;;;25804:16:0;;25796:61;;;;-1:-1:-1;;;25796:61:0;;17747:2:1;25796:61:0;;;17729:21:1;;;17766:18;;;17759:30;17825:34;17805:18;;;17798:62;17877:18;;25796:61:0;17545:356:1;25796:61:0;23811:4;23835:16;;;:7;:16;;;;;;-1:-1:-1;;;;;23835:16:0;:30;25868:58;;;;-1:-1:-1;;;25868:58:0;;18108:2:1;25868:58:0;;;18090:21:1;18147:2;18127:18;;;18120:30;18186;18166:18;;;18159:58;18234:18;;25868:58:0;17906:352:1;25868:58:0;-1:-1:-1;;;;;25997:13:0;;;;;;:9;:13;;;;;:18;;26014:1;;25997:13;:18;;26014:1;;25997:18;:::i;:::-;;;;-1:-1:-1;;26026:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;26026:21:0;-1:-1:-1;;;;;26026:21:0;;;;;;;;26065:33;;26026:16;;;26065:33;;26026:16;;26065:33;25724:382;;:::o;24040:348::-;24133:4;23835:16;;;:7;:16;;;;;;-1:-1:-1;;;;;23835:16:0;24150:73;;;;-1:-1:-1;;;24150:73:0;;18598:2:1;24150:73:0;;;18580:21:1;18637:2;18617:18;;;18610:30;18676:34;18656:18;;;18649:62;18747:14;18727:18;;;18720:42;18779:19;;24150:73:0;18396:408:1;24150:73:0;24234:13;24250:23;24265:7;24250:14;:23::i;:::-;24234:39;;24303:5;-1:-1:-1;;;;;24292:16:0;:7;-1:-1:-1;;;;;24292:16:0;;:51;;;;24336:7;-1:-1:-1;;;;;24312:31:0;:20;24324:7;24312:11;:20::i;:::-;-1:-1:-1;;;;;24312:31:0;;24292:51;:87;;;-1:-1:-1;;;;;;21132:25:0;;;21108:4;21132:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;24347:32;24284:96;24040:348;-1:-1:-1;;;;24040:348:0:o;27032:578::-;27191:4;-1:-1:-1;;;;;27164:31:0;:23;27179:7;27164:14;:23::i;:::-;-1:-1:-1;;;;;27164:31:0;;27156:85;;;;-1:-1:-1;;;27156:85:0;;19011:2:1;27156:85:0;;;18993:21:1;19050:2;19030:18;;;19023:30;19089:34;19069:18;;;19062:62;19160:11;19140:18;;;19133:39;19189:19;;27156:85:0;18809:405:1;27156:85:0;-1:-1:-1;;;;;27260:16:0;;27252:65;;;;-1:-1:-1;;;27252:65:0;;19421:2:1;27252:65:0;;;19403:21:1;19460:2;19440:18;;;19433:30;19499:34;19479:18;;;19472:62;19570:6;19550:18;;;19543:34;19594:19;;27252:65:0;19219:400:1;27252:65:0;27434:29;27451:1;27455:7;27434:8;:29::i;:::-;-1:-1:-1;;;;;27476:15:0;;;;;;:9;:15;;;;;:20;;27495:1;;27476:15;:20;;27495:1;;27476:20;:::i;:::-;;;;-1:-1:-1;;;;;;;27507:13:0;;;;;;:9;:13;;;;;:18;;27524:1;;27507:13;:18;;27524:1;;27507:18;:::i;:::-;;;;-1:-1:-1;;27536:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;27536:21:0;-1:-1:-1;;;;;27536:21:0;;;;;;;;;27575:27;;27536:16;;27575:27;;;;;;;27032:578;;;:::o;28044:315::-;28199:8;-1:-1:-1;;;;;28190:17:0;:5;-1:-1:-1;;;;;28190:17:0;;;28182:55;;;;-1:-1:-1;;;28182:55:0;;19826:2:1;28182:55:0;;;19808:21:1;19865:2;19845:18;;;19838:30;19904:27;19884:18;;;19877:55;19949:18;;28182:55:0;19624:349:1;28182:55:0;-1:-1:-1;;;;;28248:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;28248:46:0;;;;;;;;;;28310:41;;586::1;;;28310::0;;559:18:1;28310:41:0;;;;;;;28044:315;;;:::o;23118:::-;23275:28;23285:4;23291:2;23295:7;23275:9;:28::i;:::-;23322:48;23345:4;23351:2;23355:7;23364:5;23322:22;:48::i;:::-;23314:111;;;;-1:-1:-1;;;23314:111:0;;20180:2:1;23314:111:0;;;20162:21:1;20219:2;20199:18;;;20192:30;20258:34;20238:18;;;20231:62;20329:20;20309:18;;;20302:48;20367:19;;23314:111:0;19978:414:1;37000:100:0;37052:13;37085:7;37078:14;;;;;:::i;8465:723::-;8521:13;8742:10;8738:53;;-1:-1:-1;;8769:10:0;;;;;;;;;;;;;;;;;;8465:723::o;8738:53::-;8816:5;8801:12;8857:78;8864:9;;8857:78;;8890:8;;;;:::i;:::-;;-1:-1:-1;8913:10:0;;-1:-1:-1;8921:2:0;8913:10;;:::i;:::-;;;8857:78;;;8945:19;8977:6;8967:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8967:17:0;;8945:39;;8995:154;9002:10;;8995:154;;9029:11;9039:1;9029:11;;:::i;:::-;;-1:-1:-1;9098:10:0;9106:2;9098:5;:10;:::i;:::-;9085:24;;:2;:24;:::i;:::-;9072:39;;9055:6;9062;9055:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;9126:11:0;9135:2;9126:11;;:::i;:::-;;;8995:154;;28924:799;29079:4;-1:-1:-1;;;;;29100:13:0;;1271:20;1319:8;29096:620;;29136:72;;;;;-1:-1:-1;;;;;29136:36:0;;;;;:72;;16881:10;;29187:4;;29193:7;;29202:5;;29136:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29136:72:0;;;;;;;;-1:-1:-1;;29136:72:0;;;;;;;;;;;;:::i;:::-;;;29132:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29378:13:0;;29374:272;;29421:60;;-1:-1:-1;;;29421:60:0;;20180:2:1;29421:60:0;;;20162:21:1;20219:2;20199:18;;;20192:30;20258:34;20238:18;;;20231:62;20329:20;20309:18;;;20302:48;20367:19;;29421:60:0;19978:414:1;29374:272:0;29596:6;29590:13;29581:6;29577:2;29573:15;29566:38;29132:529;29259:51;;29269:41;29259:51;;-1:-1:-1;29252:58:0;;29096:620;-1:-1:-1;29700:4:0;28924:799;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:177:1;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;68:117;14:177;:::o;196:245::-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:258::-;710:1;720:113;734:6;731:1;728:13;720:113;;;810:11;;;804:18;791:11;;;784:39;756:2;749:10;720:113;;;851:6;848:1;845:13;842:48;;;-1:-1:-1;;886:1:1;868:16;;861:27;638:258::o;901:317::-;943:3;981:5;975:12;1008:6;1003:3;996:19;1024:63;1080:6;1073:4;1068:3;1064:14;1057:4;1050:5;1046:16;1024:63;:::i;:::-;1132:2;1120:15;-1:-1:-1;;1116:88:1;1107:98;;;;1207:4;1103:109;;901:317;-1:-1:-1;;901:317:1:o;1223:220::-;1372:2;1361:9;1354:21;1335:4;1392:45;1433:2;1422:9;1418:18;1410:6;1392:45;:::i;1448:180::-;1507:6;1560:2;1548:9;1539:7;1535:23;1531:32;1528:52;;;1576:1;1573;1566:12;1528:52;-1:-1:-1;1599:23:1;;1448:180;-1:-1:-1;1448:180:1:o;1864:154::-;-1:-1:-1;;;;;1943:5:1;1939:54;1932:5;1929:65;1919:93;;2008:1;2005;1998:12;2023:315;2091:6;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;2328:2;2313:18;;;;2300:32;;-1:-1:-1;;;2023:315:1:o;2343:316::-;2420:6;2428;2436;2489:2;2477:9;2468:7;2464:23;2460:32;2457:52;;;2505:1;2502;2495:12;2457:52;-1:-1:-1;;2528:23:1;;;2598:2;2583:18;;2570:32;;-1:-1:-1;2649:2:1;2634:18;;;2621:32;;2343:316;-1:-1:-1;2343:316:1:o;2846:456::-;2923:6;2931;2939;2992:2;2980:9;2971:7;2967:23;2963:32;2960:52;;;3008:1;3005;2998:12;2960:52;3047:9;3034:23;3066:31;3091:5;3066:31;:::i;:::-;3116:5;-1:-1:-1;3173:2:1;3158:18;;3145:32;3186:33;3145:32;3186:33;:::i;:::-;2846:456;;3238:7;;-1:-1:-1;;;3292:2:1;3277:18;;;;3264:32;;2846:456::o;3307:632::-;3478:2;3530:21;;;3600:13;;3503:18;;;3622:22;;;3449:4;;3478:2;3701:15;;;;3675:2;3660:18;;;3449:4;3744:169;3758:6;3755:1;3752:13;3744:169;;;3819:13;;3807:26;;3888:15;;;;3853:12;;;;3780:1;3773:9;3744:169;;;-1:-1:-1;3930:3:1;;3307:632;-1:-1:-1;;;;;;3307:632:1:o;3944:184::-;-1:-1:-1;;;3993:1:1;3986:88;4093:4;4090:1;4083:15;4117:4;4114:1;4107:15;4133:691;4198:5;4228:18;4269:2;4261:6;4258:14;4255:40;;;4275:18;;:::i;:::-;4409:2;4403:9;4475:2;4463:15;;-1:-1:-1;;4459:24:1;;;4485:2;4455:33;4451:42;4439:55;;;4509:18;;;4529:22;;;4506:46;4503:72;;;4555:18;;:::i;:::-;4595:10;4591:2;4584:22;4624:6;4615:15;;4654:6;4646;4639:22;4694:3;4685:6;4680:3;4676:16;4673:25;4670:45;;;4711:1;4708;4701:12;4670:45;4761:6;4756:3;4749:4;4741:6;4737:17;4724:44;4816:1;4809:4;4800:6;4792;4788:19;4784:30;4777:41;;;;4133:691;;;;;:::o;4829:451::-;4898:6;4951:2;4939:9;4930:7;4926:23;4922:32;4919:52;;;4967:1;4964;4957:12;4919:52;5007:9;4994:23;5040:18;5032:6;5029:30;5026:50;;;5072:1;5069;5062:12;5026:50;5095:22;;5148:4;5140:13;;5136:27;-1:-1:-1;5126:55:1;;5177:1;5174;5167:12;5126:55;5200:74;5266:7;5261:2;5248:16;5243:2;5239;5235:11;5200:74;:::i;5285:247::-;5344:6;5397:2;5385:9;5376:7;5372:23;5368:32;5365:52;;;5413:1;5410;5403:12;5365:52;5452:9;5439:23;5471:31;5496:5;5471:31;:::i;5537:416::-;5602:6;5610;5663:2;5651:9;5642:7;5638:23;5634:32;5631:52;;;5679:1;5676;5669:12;5631:52;5718:9;5705:23;5737:31;5762:5;5737:31;:::i;:::-;5787:5;-1:-1:-1;5844:2:1;5829:18;;5816:32;5886:15;;5879:23;5867:36;;5857:64;;5917:1;5914;5907:12;5857:64;5940:7;5930:17;;;5537:416;;;;;:::o;6204:795::-;6299:6;6307;6315;6323;6376:3;6364:9;6355:7;6351:23;6347:33;6344:53;;;6393:1;6390;6383:12;6344:53;6432:9;6419:23;6451:31;6476:5;6451:31;:::i;:::-;6501:5;-1:-1:-1;6558:2:1;6543:18;;6530:32;6571:33;6530:32;6571:33;:::i;:::-;6623:7;-1:-1:-1;6677:2:1;6662:18;;6649:32;;-1:-1:-1;6732:2:1;6717:18;;6704:32;6759:18;6748:30;;6745:50;;;6791:1;6788;6781:12;6745:50;6814:22;;6867:4;6859:13;;6855:27;-1:-1:-1;6845:55:1;;6896:1;6893;6886:12;6845:55;6919:74;6985:7;6980:2;6967:16;6962:2;6958;6954:11;6919:74;:::i;:::-;6909:84;;;6204:795;;;;;;;:::o;7004:388::-;7072:6;7080;7133:2;7121:9;7112:7;7108:23;7104:32;7101:52;;;7149:1;7146;7139:12;7101:52;7188:9;7175:23;7207:31;7232:5;7207:31;:::i;:::-;7257:5;-1:-1:-1;7314:2:1;7299:18;;7286:32;7327:33;7286:32;7327:33;:::i;7397:615::-;7483:6;7491;7544:2;7532:9;7523:7;7519:23;7515:32;7512:52;;;7560:1;7557;7550:12;7512:52;7600:9;7587:23;7629:18;7670:2;7662:6;7659:14;7656:34;;;7686:1;7683;7676:12;7656:34;7724:6;7713:9;7709:22;7699:32;;7769:7;7762:4;7758:2;7754:13;7750:27;7740:55;;7791:1;7788;7781:12;7740:55;7831:2;7818:16;7857:2;7849:6;7846:14;7843:34;;;7873:1;7870;7863:12;7843:34;7926:7;7921:2;7911:6;7908:1;7904:14;7900:2;7896:23;7892:32;7889:45;7886:65;;;7947:1;7944;7937:12;7886:65;7978:2;7970:11;;;;;8000:6;;-1:-1:-1;7397:615:1;;-1:-1:-1;;;;7397:615:1:o;8017:437::-;8096:1;8092:12;;;;8139;;;8160:61;;8214:4;8206:6;8202:17;8192:27;;8160:61;8267:2;8259:6;8256:14;8236:18;8233:38;8230:218;;;-1:-1:-1;;;8301:1:1;8294:88;8405:4;8402:1;8395:15;8433:4;8430:1;8423:15;8230:218;;8017:437;;;:::o;10399:184::-;-1:-1:-1;;;10448:1:1;10441:88;10548:4;10545:1;10538:15;10572:4;10569:1;10562:15;10588:195;10627:3;-1:-1:-1;;10651:5:1;10648:77;10645:103;;;10728:18;;:::i;:::-;-1:-1:-1;10775:1:1;10764:13;;10588:195::o;13082:228::-;13122:7;13248:1;-1:-1:-1;;13176:74:1;13173:1;13170:81;13165:1;13158:9;13151:17;13147:105;13144:131;;;13255:18;;:::i;:::-;-1:-1:-1;13295:9:1;;13082:228::o;14488:470::-;14667:3;14705:6;14699:13;14721:53;14767:6;14762:3;14755:4;14747:6;14743:17;14721:53;:::i;:::-;14837:13;;14796:16;;;;14859:57;14837:13;14796:16;14893:4;14881:17;;14859:57;:::i;:::-;14932:20;;14488:470;-1:-1:-1;;;;14488:470:1:o;14963:125::-;15003:4;15031:1;15028;15025:8;15022:34;;;15036:18;;:::i;:::-;-1:-1:-1;15073:9:1;;14963:125::o;15093:184::-;-1:-1:-1;;;15142:1:1;15135:88;15242:4;15239:1;15232:15;15266:4;15263:1;15256:15;15282:251;15352:6;15405:2;15393:9;15384:7;15380:23;15376:32;15373:52;;;15421:1;15418;15411:12;15373:52;15453:9;15447:16;15472:31;15497:5;15472:31;:::i;16644:184::-;16714:6;16767:2;16755:9;16746:7;16742:23;16738:32;16735:52;;;16783:1;16780;16773:12;16735:52;-1:-1:-1;16806:16:1;;16644:184;-1:-1:-1;16644:184:1:o;18263:128::-;18303:3;18334:1;18330:6;18327:1;18324:13;18321:39;;;18340:18;;:::i;:::-;-1:-1:-1;18376:9:1;;18263:128::o;20397:184::-;-1:-1:-1;;;20446:1:1;20439:88;20546:4;20543:1;20536:15;20570:4;20567:1;20560:15;20586:120;20626:1;20652;20642:35;;20657:18;;:::i;:::-;-1:-1:-1;20691:9:1;;20586:120::o;20711:112::-;20743:1;20769;20759:35;;20774:18;;:::i;:::-;-1:-1:-1;20808:9:1;;20711:112::o;20828:512::-;21022:4;-1:-1:-1;;;;;21132:2:1;21124:6;21120:15;21109:9;21102:34;21184:2;21176:6;21172:15;21167:2;21156:9;21152:18;21145:43;;21224:6;21219:2;21208:9;21204:18;21197:34;21267:3;21262:2;21251:9;21247:18;21240:31;21288:46;21329:3;21318:9;21314:19;21306:6;21288:46;:::i;:::-;21280:54;20828:512;-1:-1:-1;;;;;;20828:512:1:o;21345:249::-;21414:6;21467:2;21455:9;21446:7;21442:23;21438:32;21435:52;;;21483:1;21480;21473:12;21435:52;21515:9;21509:16;21534:30;21558:5;21534:30;:::i
Swarm Source
ipfs://e4033374e7aaa6f217668813faf1df8fbcbf63a7754bcf3e6b25eb6ba73bf3c5
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.