Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
563 BBSS
Holders
164
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
6 BBSSLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BiteBiteSipSip
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-31 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library Address { function isContract(address account) internal view returns (bool) { uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } /*22 * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /**33 * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; } /**66 * @dev ERC721 token with storage based token URI management. */ /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4); } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address internal _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } address payable internal dev = payable(0xa98aFFda32A0014fd6c569074B112c20c88DeFF1); function _withdrawAll() internal virtual { uint256 balance = address(this).balance/5; uint256 balance2 = address(this).balance-balance; payable(dev).transfer(balance); payable(_msgSender()).transfer(balance2); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev String operations. */ library Strings { bytes16 private constant alphabet = "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] = alphabet[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } /**44 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping (uint256 => address) private _owners; // Mapping owner address to token count mapping (address => uint256) private _balances; // Mapping from token ID to approved address mapping (uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping (address => mapping (address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } /** * @dev Base URI for computing {tokenURI}. 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 || ERC721.isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom(address from, address to, uint256 tokenId) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual { _mint(to, tokenId); require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer(address from, address to, uint256 tokenId) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { // solhint-disable-next-line no-inline-assembly 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` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { } } abstract contract ERC721URIStorage is ERC721 { using Strings for uint256; // Optional mapping for token URIs mapping (uint256 => string) private _tokenURIs; /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721URIStorage: URI query for nonexistent token"); string memory _tokenURI = _tokenURIs[tokenId]; string memory base = _baseURI(); // If there is no base URI, return the token URI. if (bytes(base).length == 0) { return _tokenURI; } // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked). if (bytes(_tokenURI).length > 0) { return string(abi.encodePacked(base, _tokenURI)); } return super.tokenURI(tokenId); } /** * @dev Sets `_tokenURI` as the tokenURI of `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual { require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token"); _tokenURIs[tokenId] = _tokenURI; } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual override { super._burn(tokenId); if (bytes(_tokenURIs[tokenId]).length != 0) { delete _tokenURIs[tokenId]; } } } /**55 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } contract BiteBiteSipSip is ERC721Enumerable, Ownable { uint public constant MAX_BBSS = 6666; string _baseTokenURI; bool saleEnable = false; function setsaleEnable(bool _saleEnable) public onlyOwner { saleEnable= _saleEnable; } constructor(string memory baseURI) ERC721("BiteBiteSipSip", "BBSS") { setBaseURI(baseURI); } function mintBBSS(address _to, uint _count) public payable { require(msg.sender == _owner || saleEnable); require(totalSupply() + _count <= MAX_BBSS, "Max limit"); require(totalSupply() < MAX_BBSS, "Sale end"); require(_count <= 20, "Exceeds 20"); require(msg.value >= price(_count), "Value below price"); for(uint i = 0; i < _count; i++){ _safeMint(_to, totalSupply()); } } function price(uint _count) public view returns (uint256) { uint _id = totalSupply(); if(_id <= 666 ){ return 0; } return 6660000000000000 * _count; } function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } function setBaseURI(string memory baseURI) public onlyOwner { _baseTokenURI = baseURI; } function tokensOfOwner(address _owner) external view returns(uint256[] memory) { uint tokenCount = balanceOf(_owner); uint256[] memory tokensId = new uint256[](tokenCount); for(uint i = 0; i < tokenCount; i++){ tokensId[i] = tokenOfOwnerByIndex(_owner, i); } return tokensId; } function withdrawAll() public payable onlyOwner { _withdrawAll(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_BBSS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mintBBSS","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_saleEnable","type":"bool"}],"name":"setsaleEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405273a98affda32a0014fd6c569074b112c20c88deff1600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60006101000a81548160ff0219169083151502179055503480156200008157600080fd5b5060405162004678380380620046788339818101604052810190620000a791906200053a565b6040518060400160405280600e81526020017f42697465426974655369705369700000000000000000000000000000000000008152506040518060400160405280600481526020017f424253530000000000000000000000000000000000000000000000000000000081525081600090805190602001906200012b929190620002ed565b50806001908051906020019062000144929190620002ed565b5050506000620001596200021060201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000209816200021860201b60201c565b5062000673565b600033905090565b620002286200021060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200024e620002c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029e90620005ec565b60405180910390fd5b80600c9080519060200190620002bf929190620002ed565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002fb906200063d565b90600052602060002090601f0160209004810192826200031f57600085556200036b565b82601f106200033a57805160ff19168380011785556200036b565b828001600101855582156200036b579182015b828111156200036a5782518255916020019190600101906200034d565b5b5090506200037a91906200037e565b5090565b5b80821115620003995760008160009055506001016200037f565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200040682620003bb565b810181811067ffffffffffffffff82111715620004285762000427620003cc565b5b80604052505050565b60006200043d6200039d565b90506200044b8282620003fb565b919050565b600067ffffffffffffffff8211156200046e576200046d620003cc565b5b6200047982620003bb565b9050602081019050919050565b60005b83811015620004a657808201518184015260208101905062000489565b83811115620004b6576000848401525b50505050565b6000620004d3620004cd8462000450565b62000431565b905082815260208101848484011115620004f257620004f1620003b6565b5b620004ff84828562000486565b509392505050565b600082601f8301126200051f576200051e620003b1565b5b815162000531848260208601620004bc565b91505092915050565b600060208284031215620005535762000552620003a7565b5b600082015167ffffffffffffffff811115620005745762000573620003ac565b5b620005828482850162000507565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620005d46020836200058b565b9150620005e1826200059c565b602082019050919050565b600060208201905081810360008301526200060781620005c5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200065657607f821691505b602082108114156200066d576200066c6200060e565b5b50919050565b613ff580620006836000396000f3fe6080604052600436106101815760003560e01c806370a08231116100d1578063a22cb4651161008a578063b88d4fde11610064578063b88d4fde14610578578063c87b56dd146105a1578063e985e9c5146105de578063f2fde38b1461061b57610181565b8063a22cb465146104fb578063b02636fd14610524578063b322fa131461054d57610181565b806370a082311461040a578063715018a6146104475780638462151c1461045e578063853828b61461049b5780638da5cb5b146104a557806395d89b41146104d057610181565b806326a49e371161013e5780634f6ccce7116101185780634f6ccce71461034b57806355f804b3146103885780636352211e146103b1578063638a21b7146103ee57610181565b806326a49e37146102a85780632f745c59146102e557806342842e0e1461032257610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b57806318160ddd1461025457806323b872dd1461027f575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a89190612926565b610644565b6040516101ba919061296e565b60405180910390f35b3480156101cf57600080fd5b506101d86106be565b6040516101e59190612a22565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612a7a565b610750565b6040516102229190612ae8565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612b2f565b6107d5565b005b34801561026057600080fd5b506102696108ed565b6040516102769190612b7e565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612b99565b6108fa565b005b3480156102b457600080fd5b506102cf60048036038101906102ca9190612a7a565b61095a565b6040516102dc9190612b7e565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612b2f565b610996565b6040516103199190612b7e565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190612b99565b610a3b565b005b34801561035757600080fd5b50610372600480360381019061036d9190612a7a565b610a5b565b60405161037f9190612b7e565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190612d21565b610acc565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190612a7a565b610b62565b6040516103e59190612ae8565b60405180910390f35b61040860048036038101906104039190612b2f565b610c14565b005b34801561041657600080fd5b50610431600480360381019061042c9190612d6a565b610dea565b60405161043e9190612b7e565b60405180910390f35b34801561045357600080fd5b5061045c610ea2565b005b34801561046a57600080fd5b5061048560048036038101906104809190612d6a565b610fdf565b6040516104929190612e55565b60405180910390f35b6104a361108d565b005b3480156104b157600080fd5b506104ba611113565b6040516104c79190612ae8565b60405180910390f35b3480156104dc57600080fd5b506104e561113d565b6040516104f29190612a22565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190612ea3565b6111cf565b005b34801561053057600080fd5b5061054b60048036038101906105469190612ee3565b611350565b005b34801561055957600080fd5b506105626113e9565b60405161056f9190612b7e565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612fb1565b6113ef565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190612a7a565b611451565b6040516105d59190612a22565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190613034565b6114f8565b604051610612919061296e565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d9190612d6a565b61158c565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106b757506106b682611738565b5b9050919050565b6060600080546106cd906130a3565b80601f01602080910402602001604051908101604052809291908181526020018280546106f9906130a3565b80156107465780601f1061071b57610100808354040283529160200191610746565b820191906000526020600020905b81548152906001019060200180831161072957829003601f168201915b5050505050905090565b600061075b8261181a565b61079a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079190613147565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107e082610b62565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610851576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610848906131d9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610870611886565b73ffffffffffffffffffffffffffffffffffffffff16148061089f575061089e81610899611886565b6114f8565b5b6108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d59061326b565b60405180910390fd5b6108e8838361188e565b505050565b6000600880549050905090565b61090b610905611886565b82611947565b61094a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610941906132fd565b60405180910390fd5b610955838383611a25565b505050565b6000806109656108ed565b905061029a811161097a576000915050610991565b826617a93c1634400061098d919061334c565b9150505b919050565b60006109a183610dea565b82106109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990613418565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a56838383604051806020016040528060008152506113ef565b505050565b6000610a656108ed565b8210610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d906134aa565b60405180910390fd5b60088281548110610aba57610ab96134ca565b5b90600052602060002001549050919050565b610ad4611886565b73ffffffffffffffffffffffffffffffffffffffff16610af2611113565b73ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613545565b60405180910390fd5b80600c9080519060200190610b5e929190612817565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906135d7565b60405180910390fd5b80915050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c7c5750600d60009054906101000a900460ff165b610c8557600080fd5b611a0a81610c916108ed565b610c9b91906135f7565b1115610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613699565b60405180910390fd5b611a0a610ce76108ed565b10610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613705565b60405180910390fd5b6014811115610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613771565b60405180910390fd5b610d748161095a565b341015610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad906137dd565b60405180910390fd5b60005b81811015610de557610dd283610dcd6108ed565b611c81565b8080610ddd906137fd565b915050610db9565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e52906138b8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eaa611886565b73ffffffffffffffffffffffffffffffffffffffff16610ec8611113565b73ffffffffffffffffffffffffffffffffffffffff1614610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1590613545565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606000610fec83610dea565b905060008167ffffffffffffffff81111561100a57611009612bf6565b5b6040519080825280602002602001820160405280156110385781602001602082028036833780820191505090505b50905060005b82811015611082576110508582610996565b828281518110611063576110626134ca565b5b602002602001018181525050808061107a906137fd565b91505061103e565b508092505050919050565b611095611886565b73ffffffffffffffffffffffffffffffffffffffff166110b3611113565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613545565b60405180910390fd5b611111611c9f565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461114c906130a3565b80601f0160208091040260200160405190810160405280929190818152602001828054611178906130a3565b80156111c55780601f1061119a576101008083540402835291602001916111c5565b820191906000526020600020905b8154815290600101906020018083116111a857829003601f168201915b5050505050905090565b6111d7611886565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90613924565b60405180910390fd5b8060056000611252611886565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166112ff611886565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611344919061296e565b60405180910390a35050565b611358611886565b73ffffffffffffffffffffffffffffffffffffffff16611376611113565b73ffffffffffffffffffffffffffffffffffffffff16146113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c390613545565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b611a0a81565b6114006113fa611886565b83611947565b61143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906132fd565b60405180910390fd5b61144b84848484611d7b565b50505050565b606061145c8261181a565b61149b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611492906139b6565b60405180910390fd5b60006114a5611dd7565b905060008151116114c557604051806020016040528060008152506114f0565b806114cf84611e69565b6040516020016114e0929190613a12565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611594611886565b73ffffffffffffffffffffffffffffffffffffffff166115b2611113565b73ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90613545565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613aa8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061180357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611813575061181282611fca565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661190183610b62565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119528261181a565b611991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198890613b3a565b60405180910390fd5b600061199c83610b62565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a0b57508373ffffffffffffffffffffffffffffffffffffffff166119f384610750565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a1c5750611a1b81856114f8565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611a4582610b62565b73ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613bcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613c5e565b60405180910390fd5b611b16838383612034565b611b2160008261188e565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b719190613c7e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bc891906135f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611c9b828260405180602001604052806000815250612148565b5050565b6000600547611cae9190613ce1565b905060008147611cbe9190613c7e565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611d28573d6000803e3d6000fd5b50611d31611886565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d76573d6000803e3d6000fd5b505050565b611d86848484611a25565b611d92848484846121a3565b611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613d84565b60405180910390fd5b50505050565b6060600c8054611de6906130a3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e12906130a3565b8015611e5f5780601f10611e3457610100808354040283529160200191611e5f565b820191906000526020600020905b815481529060010190602001808311611e4257829003601f168201915b5050505050905090565b60606000821415611eb1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611fc5565b600082905060005b60008214611ee3578080611ecc906137fd565b915050600a82611edc9190613ce1565b9150611eb9565b60008167ffffffffffffffff811115611eff57611efe612bf6565b5b6040519080825280601f01601f191660200182016040528015611f315781602001600182028036833780820191505090505b5090505b60008514611fbe57600182611f4a9190613c7e565b9150600a85611f599190613da4565b6030611f6591906135f7565b60f81b818381518110611f7b57611f7a6134ca565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611fb79190613ce1565b9450611f35565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61203f83838361232b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120825761207d81612330565b6120c1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146120c0576120bf8382612379565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612104576120ff816124e6565b612143565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121425761214182826125b7565b5b5b505050565b6121528383612636565b61215f60008484846121a3565b61219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590613d84565b60405180910390fd5b505050565b60006121c48473ffffffffffffffffffffffffffffffffffffffff16612804565b1561231e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121ed611886565b8786866040518563ffffffff1660e01b815260040161220f9493929190613e2a565b6020604051808303816000875af192505050801561224b57506040513d601f19601f820116820180604052508101906122489190613e8b565b60015b6122ce573d806000811461227b576040519150601f19603f3d011682016040523d82523d6000602084013e612280565b606091505b506000815114156122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd90613d84565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612323565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161238684610dea565b6123909190613c7e565b9050600060076000848152602001908152602001600020549050818114612475576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506124fa9190613c7e565b905060006009600084815260200190815260200160002054905060006008838154811061252a576125296134ca565b5b90600052602060002001549050806008838154811061254c5761254b6134ca565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061259b5761259a613eb8565b5b6001900381819060005260206000200160009055905550505050565b60006125c283610dea565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90613f33565b60405180910390fd5b6126af8161181a565b156126ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e690613f9f565b60405180910390fd5b6126fb60008383612034565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461274b91906135f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612823906130a3565b90600052602060002090601f016020900481019282612845576000855561288c565b82601f1061285e57805160ff191683800117855561288c565b8280016001018555821561288c579182015b8281111561288b578251825591602001919060010190612870565b5b509050612899919061289d565b5090565b5b808211156128b657600081600090555060010161289e565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612903816128ce565b811461290e57600080fd5b50565b600081359050612920816128fa565b92915050565b60006020828403121561293c5761293b6128c4565b5b600061294a84828501612911565b91505092915050565b60008115159050919050565b61296881612953565b82525050565b6000602082019050612983600083018461295f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129c35780820151818401526020810190506129a8565b838111156129d2576000848401525b50505050565b6000601f19601f8301169050919050565b60006129f482612989565b6129fe8185612994565b9350612a0e8185602086016129a5565b612a17816129d8565b840191505092915050565b60006020820190508181036000830152612a3c81846129e9565b905092915050565b6000819050919050565b612a5781612a44565b8114612a6257600080fd5b50565b600081359050612a7481612a4e565b92915050565b600060208284031215612a9057612a8f6128c4565b5b6000612a9e84828501612a65565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ad282612aa7565b9050919050565b612ae281612ac7565b82525050565b6000602082019050612afd6000830184612ad9565b92915050565b612b0c81612ac7565b8114612b1757600080fd5b50565b600081359050612b2981612b03565b92915050565b60008060408385031215612b4657612b456128c4565b5b6000612b5485828601612b1a565b9250506020612b6585828601612a65565b9150509250929050565b612b7881612a44565b82525050565b6000602082019050612b936000830184612b6f565b92915050565b600080600060608486031215612bb257612bb16128c4565b5b6000612bc086828701612b1a565b9350506020612bd186828701612b1a565b9250506040612be286828701612a65565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c2e826129d8565b810181811067ffffffffffffffff82111715612c4d57612c4c612bf6565b5b80604052505050565b6000612c606128ba565b9050612c6c8282612c25565b919050565b600067ffffffffffffffff821115612c8c57612c8b612bf6565b5b612c95826129d8565b9050602081019050919050565b82818337600083830152505050565b6000612cc4612cbf84612c71565b612c56565b905082815260208101848484011115612ce057612cdf612bf1565b5b612ceb848285612ca2565b509392505050565b600082601f830112612d0857612d07612bec565b5b8135612d18848260208601612cb1565b91505092915050565b600060208284031215612d3757612d366128c4565b5b600082013567ffffffffffffffff811115612d5557612d546128c9565b5b612d6184828501612cf3565b91505092915050565b600060208284031215612d8057612d7f6128c4565b5b6000612d8e84828501612b1a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dcc81612a44565b82525050565b6000612dde8383612dc3565b60208301905092915050565b6000602082019050919050565b6000612e0282612d97565b612e0c8185612da2565b9350612e1783612db3565b8060005b83811015612e48578151612e2f8882612dd2565b9750612e3a83612dea565b925050600181019050612e1b565b5085935050505092915050565b60006020820190508181036000830152612e6f8184612df7565b905092915050565b612e8081612953565b8114612e8b57600080fd5b50565b600081359050612e9d81612e77565b92915050565b60008060408385031215612eba57612eb96128c4565b5b6000612ec885828601612b1a565b9250506020612ed985828601612e8e565b9150509250929050565b600060208284031215612ef957612ef86128c4565b5b6000612f0784828501612e8e565b91505092915050565b600067ffffffffffffffff821115612f2b57612f2a612bf6565b5b612f34826129d8565b9050602081019050919050565b6000612f54612f4f84612f10565b612c56565b905082815260208101848484011115612f7057612f6f612bf1565b5b612f7b848285612ca2565b509392505050565b600082601f830112612f9857612f97612bec565b5b8135612fa8848260208601612f41565b91505092915050565b60008060008060808587031215612fcb57612fca6128c4565b5b6000612fd987828801612b1a565b9450506020612fea87828801612b1a565b9350506040612ffb87828801612a65565b925050606085013567ffffffffffffffff81111561301c5761301b6128c9565b5b61302887828801612f83565b91505092959194509250565b6000806040838503121561304b5761304a6128c4565b5b600061305985828601612b1a565b925050602061306a85828601612b1a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130bb57607f821691505b602082108114156130cf576130ce613074565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613131602c83612994565b915061313c826130d5565b604082019050919050565b6000602082019050818103600083015261316081613124565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006131c3602183612994565b91506131ce82613167565b604082019050919050565b600060208201905081810360008301526131f2816131b6565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613255603883612994565b9150613260826131f9565b604082019050919050565b6000602082019050818103600083015261328481613248565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006132e7603183612994565b91506132f28261328b565b604082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335782612a44565b915061336283612a44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339b5761339a61331d565b5b828202905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613402602b83612994565b915061340d826133a6565b604082019050919050565b60006020820190508181036000830152613431816133f5565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613494602c83612994565b915061349f82613438565b604082019050919050565b600060208201905081810360008301526134c381613487565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061352f602083612994565b915061353a826134f9565b602082019050919050565b6000602082019050818103600083015261355e81613522565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006135c1602983612994565b91506135cc82613565565b604082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b600061360282612a44565b915061360d83612a44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136425761364161331d565b5b828201905092915050565b7f4d6178206c696d69740000000000000000000000000000000000000000000000600082015250565b6000613683600983612994565b915061368e8261364d565b602082019050919050565b600060208201905081810360008301526136b281613676565b9050919050565b7f53616c6520656e64000000000000000000000000000000000000000000000000600082015250565b60006136ef600883612994565b91506136fa826136b9565b602082019050919050565b6000602082019050818103600083015261371e816136e2565b9050919050565b7f4578636565647320323000000000000000000000000000000000000000000000600082015250565b600061375b600a83612994565b915061376682613725565b602082019050919050565b6000602082019050818103600083015261378a8161374e565b9050919050565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b60006137c7601183612994565b91506137d282613791565b602082019050919050565b600060208201905081810360008301526137f6816137ba565b9050919050565b600061380882612a44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561383b5761383a61331d565b5b600182019050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006138a2602a83612994565b91506138ad82613846565b604082019050919050565b600060208201905081810360008301526138d181613895565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061390e601983612994565b9150613919826138d8565b602082019050919050565b6000602082019050818103600083015261393d81613901565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006139a0602f83612994565b91506139ab82613944565b604082019050919050565b600060208201905081810360008301526139cf81613993565b9050919050565b600081905092915050565b60006139ec82612989565b6139f681856139d6565b9350613a068185602086016129a5565b80840191505092915050565b6000613a1e82856139e1565b9150613a2a82846139e1565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a92602683612994565b9150613a9d82613a36565b604082019050919050565b60006020820190508181036000830152613ac181613a85565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613b24602c83612994565b9150613b2f82613ac8565b604082019050919050565b60006020820190508181036000830152613b5381613b17565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613bb6602983612994565b9150613bc182613b5a565b604082019050919050565b60006020820190508181036000830152613be581613ba9565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c48602483612994565b9150613c5382613bec565b604082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b6000613c8982612a44565b9150613c9483612a44565b925082821015613ca757613ca661331d565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cec82612a44565b9150613cf783612a44565b925082613d0757613d06613cb2565b5b828204905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d6e603283612994565b9150613d7982613d12565b604082019050919050565b60006020820190508181036000830152613d9d81613d61565b9050919050565b6000613daf82612a44565b9150613dba83612a44565b925082613dca57613dc9613cb2565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000613dfc82613dd5565b613e068185613de0565b9350613e168185602086016129a5565b613e1f816129d8565b840191505092915050565b6000608082019050613e3f6000830187612ad9565b613e4c6020830186612ad9565b613e596040830185612b6f565b8181036060830152613e6b8184613df1565b905095945050505050565b600081519050613e85816128fa565b92915050565b600060208284031215613ea157613ea06128c4565b5b6000613eaf84828501613e76565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613f1d602083612994565b9150613f2882613ee7565b602082019050919050565b60006020820190508181036000830152613f4c81613f10565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613f89601c83612994565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b905091905056fea26469706673582212201632ff308ac95ef8f2a4ab3aabd8e2f2d96b08b4daffd7d48d90ffec471271be64736f6c634300080a00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f6170692e62697465626974657369707369702e7774662f00
Deployed Bytecode
0x6080604052600436106101815760003560e01c806370a08231116100d1578063a22cb4651161008a578063b88d4fde11610064578063b88d4fde14610578578063c87b56dd146105a1578063e985e9c5146105de578063f2fde38b1461061b57610181565b8063a22cb465146104fb578063b02636fd14610524578063b322fa131461054d57610181565b806370a082311461040a578063715018a6146104475780638462151c1461045e578063853828b61461049b5780638da5cb5b146104a557806395d89b41146104d057610181565b806326a49e371161013e5780634f6ccce7116101185780634f6ccce71461034b57806355f804b3146103885780636352211e146103b1578063638a21b7146103ee57610181565b806326a49e37146102a85780632f745c59146102e557806342842e0e1461032257610181565b806301ffc9a71461018657806306fdde03146101c3578063081812fc146101ee578063095ea7b31461022b57806318160ddd1461025457806323b872dd1461027f575b600080fd5b34801561019257600080fd5b506101ad60048036038101906101a89190612926565b610644565b6040516101ba919061296e565b60405180910390f35b3480156101cf57600080fd5b506101d86106be565b6040516101e59190612a22565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612a7a565b610750565b6040516102229190612ae8565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612b2f565b6107d5565b005b34801561026057600080fd5b506102696108ed565b6040516102769190612b7e565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612b99565b6108fa565b005b3480156102b457600080fd5b506102cf60048036038101906102ca9190612a7a565b61095a565b6040516102dc9190612b7e565b60405180910390f35b3480156102f157600080fd5b5061030c60048036038101906103079190612b2f565b610996565b6040516103199190612b7e565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190612b99565b610a3b565b005b34801561035757600080fd5b50610372600480360381019061036d9190612a7a565b610a5b565b60405161037f9190612b7e565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190612d21565b610acc565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190612a7a565b610b62565b6040516103e59190612ae8565b60405180910390f35b61040860048036038101906104039190612b2f565b610c14565b005b34801561041657600080fd5b50610431600480360381019061042c9190612d6a565b610dea565b60405161043e9190612b7e565b60405180910390f35b34801561045357600080fd5b5061045c610ea2565b005b34801561046a57600080fd5b5061048560048036038101906104809190612d6a565b610fdf565b6040516104929190612e55565b60405180910390f35b6104a361108d565b005b3480156104b157600080fd5b506104ba611113565b6040516104c79190612ae8565b60405180910390f35b3480156104dc57600080fd5b506104e561113d565b6040516104f29190612a22565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190612ea3565b6111cf565b005b34801561053057600080fd5b5061054b60048036038101906105469190612ee3565b611350565b005b34801561055957600080fd5b506105626113e9565b60405161056f9190612b7e565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612fb1565b6113ef565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190612a7a565b611451565b6040516105d59190612a22565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190613034565b6114f8565b604051610612919061296e565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d9190612d6a565b61158c565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106b757506106b682611738565b5b9050919050565b6060600080546106cd906130a3565b80601f01602080910402602001604051908101604052809291908181526020018280546106f9906130a3565b80156107465780601f1061071b57610100808354040283529160200191610746565b820191906000526020600020905b81548152906001019060200180831161072957829003601f168201915b5050505050905090565b600061075b8261181a565b61079a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079190613147565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107e082610b62565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610851576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610848906131d9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610870611886565b73ffffffffffffffffffffffffffffffffffffffff16148061089f575061089e81610899611886565b6114f8565b5b6108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d59061326b565b60405180910390fd5b6108e8838361188e565b505050565b6000600880549050905090565b61090b610905611886565b82611947565b61094a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610941906132fd565b60405180910390fd5b610955838383611a25565b505050565b6000806109656108ed565b905061029a811161097a576000915050610991565b826617a93c1634400061098d919061334c565b9150505b919050565b60006109a183610dea565b82106109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990613418565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a56838383604051806020016040528060008152506113ef565b505050565b6000610a656108ed565b8210610aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9d906134aa565b60405180910390fd5b60088281548110610aba57610ab96134ca565b5b90600052602060002001549050919050565b610ad4611886565b73ffffffffffffffffffffffffffffffffffffffff16610af2611113565b73ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613545565b60405180910390fd5b80600c9080519060200190610b5e929190612817565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c02906135d7565b60405180910390fd5b80915050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c7c5750600d60009054906101000a900460ff165b610c8557600080fd5b611a0a81610c916108ed565b610c9b91906135f7565b1115610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613699565b60405180910390fd5b611a0a610ce76108ed565b10610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613705565b60405180910390fd5b6014811115610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290613771565b60405180910390fd5b610d748161095a565b341015610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad906137dd565b60405180910390fd5b60005b81811015610de557610dd283610dcd6108ed565b611c81565b8080610ddd906137fd565b915050610db9565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e52906138b8565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610eaa611886565b73ffffffffffffffffffffffffffffffffffffffff16610ec8611113565b73ffffffffffffffffffffffffffffffffffffffff1614610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1590613545565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606000610fec83610dea565b905060008167ffffffffffffffff81111561100a57611009612bf6565b5b6040519080825280602002602001820160405280156110385781602001602082028036833780820191505090505b50905060005b82811015611082576110508582610996565b828281518110611063576110626134ca565b5b602002602001018181525050808061107a906137fd565b91505061103e565b508092505050919050565b611095611886565b73ffffffffffffffffffffffffffffffffffffffff166110b3611113565b73ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090613545565b60405180910390fd5b611111611c9f565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461114c906130a3565b80601f0160208091040260200160405190810160405280929190818152602001828054611178906130a3565b80156111c55780601f1061119a576101008083540402835291602001916111c5565b820191906000526020600020905b8154815290600101906020018083116111a857829003601f168201915b5050505050905090565b6111d7611886565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90613924565b60405180910390fd5b8060056000611252611886565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166112ff611886565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611344919061296e565b60405180910390a35050565b611358611886565b73ffffffffffffffffffffffffffffffffffffffff16611376611113565b73ffffffffffffffffffffffffffffffffffffffff16146113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c390613545565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b611a0a81565b6114006113fa611886565b83611947565b61143f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611436906132fd565b60405180910390fd5b61144b84848484611d7b565b50505050565b606061145c8261181a565b61149b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611492906139b6565b60405180910390fd5b60006114a5611dd7565b905060008151116114c557604051806020016040528060008152506114f0565b806114cf84611e69565b6040516020016114e0929190613a12565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611594611886565b73ffffffffffffffffffffffffffffffffffffffff166115b2611113565b73ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff90613545565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613aa8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061180357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611813575061181282611fca565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661190183610b62565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006119528261181a565b611991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198890613b3a565b60405180910390fd5b600061199c83610b62565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a0b57508373ffffffffffffffffffffffffffffffffffffffff166119f384610750565b73ffffffffffffffffffffffffffffffffffffffff16145b80611a1c5750611a1b81856114f8565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611a4582610b62565b73ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9290613bcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290613c5e565b60405180910390fd5b611b16838383612034565b611b2160008261188e565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b719190613c7e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bc891906135f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611c9b828260405180602001604052806000815250612148565b5050565b6000600547611cae9190613ce1565b905060008147611cbe9190613c7e565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611d28573d6000803e3d6000fd5b50611d31611886565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d76573d6000803e3d6000fd5b505050565b611d86848484611a25565b611d92848484846121a3565b611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613d84565b60405180910390fd5b50505050565b6060600c8054611de6906130a3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e12906130a3565b8015611e5f5780601f10611e3457610100808354040283529160200191611e5f565b820191906000526020600020905b815481529060010190602001808311611e4257829003601f168201915b5050505050905090565b60606000821415611eb1576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611fc5565b600082905060005b60008214611ee3578080611ecc906137fd565b915050600a82611edc9190613ce1565b9150611eb9565b60008167ffffffffffffffff811115611eff57611efe612bf6565b5b6040519080825280601f01601f191660200182016040528015611f315781602001600182028036833780820191505090505b5090505b60008514611fbe57600182611f4a9190613c7e565b9150600a85611f599190613da4565b6030611f6591906135f7565b60f81b818381518110611f7b57611f7a6134ca565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611fb79190613ce1565b9450611f35565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61203f83838361232b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120825761207d81612330565b6120c1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146120c0576120bf8382612379565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612104576120ff816124e6565b612143565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121425761214182826125b7565b5b5b505050565b6121528383612636565b61215f60008484846121a3565b61219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590613d84565b60405180910390fd5b505050565b60006121c48473ffffffffffffffffffffffffffffffffffffffff16612804565b1561231e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121ed611886565b8786866040518563ffffffff1660e01b815260040161220f9493929190613e2a565b6020604051808303816000875af192505050801561224b57506040513d601f19601f820116820180604052508101906122489190613e8b565b60015b6122ce573d806000811461227b576040519150601f19603f3d011682016040523d82523d6000602084013e612280565b606091505b506000815114156122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd90613d84565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612323565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161238684610dea565b6123909190613c7e565b9050600060076000848152602001908152602001600020549050818114612475576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506124fa9190613c7e565b905060006009600084815260200190815260200160002054905060006008838154811061252a576125296134ca565b5b90600052602060002001549050806008838154811061254c5761254b6134ca565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061259b5761259a613eb8565b5b6001900381819060005260206000200160009055905550505050565b60006125c283610dea565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d90613f33565b60405180910390fd5b6126af8161181a565b156126ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e690613f9f565b60405180910390fd5b6126fb60008383612034565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461274b91906135f7565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612823906130a3565b90600052602060002090601f016020900481019282612845576000855561288c565b82601f1061285e57805160ff191683800117855561288c565b8280016001018555821561288c579182015b8281111561288b578251825591602001919060010190612870565b5b509050612899919061289d565b5090565b5b808211156128b657600081600090555060010161289e565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612903816128ce565b811461290e57600080fd5b50565b600081359050612920816128fa565b92915050565b60006020828403121561293c5761293b6128c4565b5b600061294a84828501612911565b91505092915050565b60008115159050919050565b61296881612953565b82525050565b6000602082019050612983600083018461295f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129c35780820151818401526020810190506129a8565b838111156129d2576000848401525b50505050565b6000601f19601f8301169050919050565b60006129f482612989565b6129fe8185612994565b9350612a0e8185602086016129a5565b612a17816129d8565b840191505092915050565b60006020820190508181036000830152612a3c81846129e9565b905092915050565b6000819050919050565b612a5781612a44565b8114612a6257600080fd5b50565b600081359050612a7481612a4e565b92915050565b600060208284031215612a9057612a8f6128c4565b5b6000612a9e84828501612a65565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ad282612aa7565b9050919050565b612ae281612ac7565b82525050565b6000602082019050612afd6000830184612ad9565b92915050565b612b0c81612ac7565b8114612b1757600080fd5b50565b600081359050612b2981612b03565b92915050565b60008060408385031215612b4657612b456128c4565b5b6000612b5485828601612b1a565b9250506020612b6585828601612a65565b9150509250929050565b612b7881612a44565b82525050565b6000602082019050612b936000830184612b6f565b92915050565b600080600060608486031215612bb257612bb16128c4565b5b6000612bc086828701612b1a565b9350506020612bd186828701612b1a565b9250506040612be286828701612a65565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c2e826129d8565b810181811067ffffffffffffffff82111715612c4d57612c4c612bf6565b5b80604052505050565b6000612c606128ba565b9050612c6c8282612c25565b919050565b600067ffffffffffffffff821115612c8c57612c8b612bf6565b5b612c95826129d8565b9050602081019050919050565b82818337600083830152505050565b6000612cc4612cbf84612c71565b612c56565b905082815260208101848484011115612ce057612cdf612bf1565b5b612ceb848285612ca2565b509392505050565b600082601f830112612d0857612d07612bec565b5b8135612d18848260208601612cb1565b91505092915050565b600060208284031215612d3757612d366128c4565b5b600082013567ffffffffffffffff811115612d5557612d546128c9565b5b612d6184828501612cf3565b91505092915050565b600060208284031215612d8057612d7f6128c4565b5b6000612d8e84828501612b1a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dcc81612a44565b82525050565b6000612dde8383612dc3565b60208301905092915050565b6000602082019050919050565b6000612e0282612d97565b612e0c8185612da2565b9350612e1783612db3565b8060005b83811015612e48578151612e2f8882612dd2565b9750612e3a83612dea565b925050600181019050612e1b565b5085935050505092915050565b60006020820190508181036000830152612e6f8184612df7565b905092915050565b612e8081612953565b8114612e8b57600080fd5b50565b600081359050612e9d81612e77565b92915050565b60008060408385031215612eba57612eb96128c4565b5b6000612ec885828601612b1a565b9250506020612ed985828601612e8e565b9150509250929050565b600060208284031215612ef957612ef86128c4565b5b6000612f0784828501612e8e565b91505092915050565b600067ffffffffffffffff821115612f2b57612f2a612bf6565b5b612f34826129d8565b9050602081019050919050565b6000612f54612f4f84612f10565b612c56565b905082815260208101848484011115612f7057612f6f612bf1565b5b612f7b848285612ca2565b509392505050565b600082601f830112612f9857612f97612bec565b5b8135612fa8848260208601612f41565b91505092915050565b60008060008060808587031215612fcb57612fca6128c4565b5b6000612fd987828801612b1a565b9450506020612fea87828801612b1a565b9350506040612ffb87828801612a65565b925050606085013567ffffffffffffffff81111561301c5761301b6128c9565b5b61302887828801612f83565b91505092959194509250565b6000806040838503121561304b5761304a6128c4565b5b600061305985828601612b1a565b925050602061306a85828601612b1a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130bb57607f821691505b602082108114156130cf576130ce613074565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613131602c83612994565b915061313c826130d5565b604082019050919050565b6000602082019050818103600083015261316081613124565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006131c3602183612994565b91506131ce82613167565b604082019050919050565b600060208201905081810360008301526131f2816131b6565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613255603883612994565b9150613260826131f9565b604082019050919050565b6000602082019050818103600083015261328481613248565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b60006132e7603183612994565b91506132f28261328b565b604082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335782612a44565b915061336283612a44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339b5761339a61331d565b5b828202905092915050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613402602b83612994565b915061340d826133a6565b604082019050919050565b60006020820190508181036000830152613431816133f5565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613494602c83612994565b915061349f82613438565b604082019050919050565b600060208201905081810360008301526134c381613487565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061352f602083612994565b915061353a826134f9565b602082019050919050565b6000602082019050818103600083015261355e81613522565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006135c1602983612994565b91506135cc82613565565b604082019050919050565b600060208201905081810360008301526135f0816135b4565b9050919050565b600061360282612a44565b915061360d83612a44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136425761364161331d565b5b828201905092915050565b7f4d6178206c696d69740000000000000000000000000000000000000000000000600082015250565b6000613683600983612994565b915061368e8261364d565b602082019050919050565b600060208201905081810360008301526136b281613676565b9050919050565b7f53616c6520656e64000000000000000000000000000000000000000000000000600082015250565b60006136ef600883612994565b91506136fa826136b9565b602082019050919050565b6000602082019050818103600083015261371e816136e2565b9050919050565b7f4578636565647320323000000000000000000000000000000000000000000000600082015250565b600061375b600a83612994565b915061376682613725565b602082019050919050565b6000602082019050818103600083015261378a8161374e565b9050919050565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b60006137c7601183612994565b91506137d282613791565b602082019050919050565b600060208201905081810360008301526137f6816137ba565b9050919050565b600061380882612a44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561383b5761383a61331d565b5b600182019050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006138a2602a83612994565b91506138ad82613846565b604082019050919050565b600060208201905081810360008301526138d181613895565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061390e601983612994565b9150613919826138d8565b602082019050919050565b6000602082019050818103600083015261393d81613901565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006139a0602f83612994565b91506139ab82613944565b604082019050919050565b600060208201905081810360008301526139cf81613993565b9050919050565b600081905092915050565b60006139ec82612989565b6139f681856139d6565b9350613a068185602086016129a5565b80840191505092915050565b6000613a1e82856139e1565b9150613a2a82846139e1565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a92602683612994565b9150613a9d82613a36565b604082019050919050565b60006020820190508181036000830152613ac181613a85565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613b24602c83612994565b9150613b2f82613ac8565b604082019050919050565b60006020820190508181036000830152613b5381613b17565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000613bb6602983612994565b9150613bc182613b5a565b604082019050919050565b60006020820190508181036000830152613be581613ba9565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c48602483612994565b9150613c5382613bec565b604082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b6000613c8982612a44565b9150613c9483612a44565b925082821015613ca757613ca661331d565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cec82612a44565b9150613cf783612a44565b925082613d0757613d06613cb2565b5b828204905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d6e603283612994565b9150613d7982613d12565b604082019050919050565b60006020820190508181036000830152613d9d81613d61565b9050919050565b6000613daf82612a44565b9150613dba83612a44565b925082613dca57613dc9613cb2565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b6000613dfc82613dd5565b613e068185613de0565b9350613e168185602086016129a5565b613e1f816129d8565b840191505092915050565b6000608082019050613e3f6000830187612ad9565b613e4c6020830186612ad9565b613e596040830185612b6f565b8181036060830152613e6b8184613df1565b905095945050505050565b600081519050613e85816128fa565b92915050565b600060208284031215613ea157613ea06128c4565b5b6000613eaf84828501613e76565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613f1d602083612994565b9150613f2882613ee7565b602082019050919050565b60006020820190508181036000830152613f4c81613f10565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613f89601c83612994565b9150613f9482613f53565b602082019050919050565b60006020820190508181036000830152613fb881613f7c565b905091905056fea26469706673582212201632ff308ac95ef8f2a4ab3aabd8e2f2d96b08b4daffd7d48d90ffec471271be64736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001f68747470733a2f2f6170692e62697465626974657369707369702e7774662f00
-----Decoded View---------------
Arg [0] : baseURI (string): https://api.bitebitesipsip.wtf/
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001f
Arg [2] : 68747470733a2f2f6170692e62697465626974657369707369702e7774662f00
Deployed Bytecode Sourcemap
39787:1769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33660:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20220:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21687:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21217:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34313:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22577:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40652:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33981:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22953:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34503:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41001:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19914:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40187:457;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19644:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15139:148;;;;;;;;;;;;;:::i;:::-;;41111:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41463:90;;;:::i;:::-;;14489:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20389:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21980:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39950:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39847:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23175:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20564:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22346:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15815:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33660:237;33762:4;33801:35;33786:50;;;:11;:50;;;;:103;;;;33853:36;33877:11;33853:23;:36::i;:::-;33786:103;33779:110;;33660:237;;;:::o;20220:100::-;20274:13;20307:5;20300:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20220:100;:::o;21687:221::-;21763:7;21791:16;21799:7;21791;:16::i;:::-;21783:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21876:15;:24;21892:7;21876:24;;;;;;;;;;;;;;;;;;;;;21869:31;;21687:221;;;:::o;21217:404::-;21298:13;21314:23;21329:7;21314:14;:23::i;:::-;21298:39;;21362:5;21356:11;;:2;:11;;;;21348:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;21442:5;21426:21;;:12;:10;:12::i;:::-;:21;;;:69;;;;21451:44;21475:5;21482:12;:10;:12::i;:::-;21451:23;:44::i;:::-;21426:69;21418:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;21592:21;21601:2;21605:7;21592:8;:21::i;:::-;21287:334;21217:404;;:::o;34313:113::-;34374:7;34401:10;:17;;;;34394:24;;34313:113;:::o;22577:305::-;22738:41;22757:12;:10;:12::i;:::-;22771:7;22738:18;:41::i;:::-;22730:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;22846:28;22856:4;22862:2;22866:7;22846:9;:28::i;:::-;22577:305;;;:::o;40652:215::-;40701:7;40721:8;40732:13;:11;:13::i;:::-;40721:24;;40766:3;40759;:10;40756:50;;40793:1;40786:8;;;;;40756:50;40852:6;40833:16;:25;;;;:::i;:::-;40826:32;;;40652:215;;;;:::o;33981:256::-;34078:7;34114:23;34131:5;34114:16;:23::i;:::-;34106:5;:31;34098:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;34203:12;:19;34216:5;34203:19;;;;;;;;;;;;;;;:26;34223:5;34203:26;;;;;;;;;;;;34196:33;;33981:256;;;;:::o;22953:151::-;23057:39;23074:4;23080:2;23084:7;23057:39;;;;;;;;;;;;:16;:39::i;:::-;22953:151;;;:::o;34503:233::-;34578:7;34614:30;:28;:30::i;:::-;34606:5;:38;34598:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;34711:10;34722:5;34711:17;;;;;;;;:::i;:::-;;;;;;;;;;34704:24;;34503:233;;;:::o;41001:102::-;14720:12;:10;:12::i;:::-;14709:23;;:7;:5;:7::i;:::-;:23;;;14701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41088:7:::1;41072:13;:23;;;;;;;;;;;;:::i;:::-;;41001:102:::0;:::o;19914:239::-;19986:7;20006:13;20022:7;:16;20030:7;20022:16;;;;;;;;;;;;;;;;;;;;;20006:32;;20074:1;20057:19;;:5;:19;;;;20049:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20140:5;20133:12;;;19914:239;;;:::o;40187:457::-;40279:6;;;;;;;;;;;40265:20;;:10;:20;;;:34;;;;40289:10;;;;;;;;;;;40265:34;40257:43;;;;;;39879:4;40335:6;40319:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:34;;40311:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;39879:4;40386:13;:11;:13::i;:::-;:24;40378:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;40452:2;40442:6;:12;;40434:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;40501:13;40507:6;40501:5;:13::i;:::-;40488:9;:26;;40480:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;40553:6;40549:88;40569:6;40565:1;:10;40549:88;;;40596:29;40606:3;40611:13;:11;:13::i;:::-;40596:9;:29::i;:::-;40577:3;;;;;:::i;:::-;;;;40549:88;;;;40187:457;;:::o;19644:208::-;19716:7;19761:1;19744:19;;:5;:19;;;;19736:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;19828:9;:16;19838:5;19828:16;;;;;;;;;;;;;;;;19821:23;;19644:208;;;:::o;15139:148::-;14720:12;:10;:12::i;:::-;14709:23;;:7;:5;:7::i;:::-;:23;;;14701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15246:1:::1;15209:40;;15230:6;;;;;;;;;;;15209:40;;;;;;;;;;;;15277:1;15260:6;;:19;;;;;;;;;;;;;;;;;;15139:148::o:0;41111:344::-;41172:16;41201:15;41219:17;41229:6;41219:9;:17::i;:::-;41201:35;;41249:25;41291:10;41277:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41249:53;;41317:6;41313:107;41333:10;41329:1;:14;41313:107;;;41378:30;41398:6;41406:1;41378:19;:30::i;:::-;41364:8;41373:1;41364:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;41345:3;;;;;:::i;:::-;;;;41313:107;;;;41439:8;41432:15;;;;41111:344;;;:::o;41463:90::-;14720:12;:10;:12::i;:::-;14709:23;;:7;:5;:7::i;:::-;:23;;;14701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41522:14:::1;:12;:14::i;:::-;41463:90::o:0;14489:87::-;14535:7;14562:6;;;;;;;;;;;14555:13;;14489:87;:::o;20389:104::-;20445:13;20478:7;20471:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20389:104;:::o;21980:295::-;22095:12;:10;:12::i;:::-;22083:24;;:8;:24;;;;22075:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22195:8;22150:18;:32;22169:12;:10;:12::i;:::-;22150:32;;;;;;;;;;;;;;;:42;22183:8;22150:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;22248:8;22219:48;;22234:12;:10;:12::i;:::-;22219:48;;;22258:8;22219:48;;;;;;:::i;:::-;;;;;;;;21980:295;;:::o;39950:102::-;14720:12;:10;:12::i;:::-;14709:23;;:7;:5;:7::i;:::-;:23;;;14701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40033:11:::1;40021:10;;:23;;;;;;;;;;;;;;;;;;39950:102:::0;:::o;39847:36::-;39879:4;39847:36;:::o;23175:285::-;23307:41;23326:12;:10;:12::i;:::-;23340:7;23307:18;:41::i;:::-;23299:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;23413:39;23427:4;23433:2;23437:7;23446:5;23413:13;:39::i;:::-;23175:285;;;;:::o;20564:360::-;20637:13;20671:16;20679:7;20671;:16::i;:::-;20663:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20752:21;20776:10;:8;:10::i;:::-;20752:34;;20828:1;20810:7;20804:21;:25;:112;;;;;;;;;;;;;;;;;20869:7;20878:18;:7;:16;:18::i;:::-;20852:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20804:112;20797:119;;;20564:360;;;:::o;22346:164::-;22443:4;22467:18;:25;22486:5;22467:25;;;;;;;;;;;;;;;:35;22493:8;22467:35;;;;;;;;;;;;;;;;;;;;;;;;;22460:42;;22346:164;;;;:::o;15815:244::-;14720:12;:10;:12::i;:::-;14709:23;;:7;:5;:7::i;:::-;:23;;;14701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15924:1:::1;15904:22;;:8;:22;;;;15896:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16014:8;15985:38;;16006:6;;;;;;;;;;;15985:38;;;;;;;;;;;;16043:8;16034:6;;:17;;;;;;;;;;;;;;;;;;15815:244:::0;:::o;19288:292::-;19390:4;19429:25;19414:40;;;:11;:40;;;;:105;;;;19486:33;19471:48;;;:11;:48;;;;19414:105;:158;;;;19536:36;19560:11;19536:23;:36::i;:::-;19414:158;19407:165;;19288:292;;;:::o;24927:127::-;24992:4;25044:1;25016:30;;:7;:16;25024:7;25016:16;;;;;;;;;;;;;;;;;;;;;:30;;;;25009:37;;24927:127;;;:::o;5253:98::-;5306:7;5333:10;5326:17;;5253:98;:::o;28811:174::-;28913:2;28886:15;:24;28902:7;28886:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;28969:7;28965:2;28931:46;;28940:23;28955:7;28940:14;:23::i;:::-;28931:46;;;;;;;;;;;;28811:174;;:::o;25221:355::-;25314:4;25339:16;25347:7;25339;:16::i;:::-;25331:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;25415:13;25431:23;25446:7;25431:14;:23::i;:::-;25415:39;;25484:5;25473:16;;:7;:16;;;:51;;;;25517:7;25493:31;;:20;25505:7;25493:11;:20::i;:::-;:31;;;25473:51;:94;;;;25528:39;25552:5;25559:7;25528:23;:39::i;:::-;25473:94;25465:103;;;25221:355;;;;:::o;28149:544::-;28274:4;28247:31;;:23;28262:7;28247:14;:23::i;:::-;:31;;;28239:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;28357:1;28343:16;;:2;:16;;;;28335:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;28413:39;28434:4;28440:2;28444:7;28413:20;:39::i;:::-;28517:29;28534:1;28538:7;28517:8;:29::i;:::-;28578:1;28559:9;:15;28569:4;28559:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;28607:1;28590:9;:13;28600:2;28590:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;28638:2;28619:7;:16;28627:7;28619:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28677:7;28673:2;28658:27;;28667:4;28658:27;;;;;;;;;;;;28149:544;;;:::o;25918:110::-;25994:26;26004:2;26008:7;25994:26;;;;;;;;;;;;:9;:26::i;:::-;25918:110;;:::o;15389:261::-;15441:15;15481:1;15459:21;:23;;;;:::i;:::-;15441:41;;15492:16;15533:7;15511:21;:29;;;;:::i;:::-;15492:48;;15559:3;;;;;;;;;;;15551:21;;:30;15573:7;15551:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15600:12;:10;:12::i;:::-;15592:30;;:40;15623:8;15592:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15431:219;;15389:261::o;24342:272::-;24456:28;24466:4;24472:2;24476:7;24456:9;:28::i;:::-;24503:48;24526:4;24532:2;24536:7;24545:5;24503:22;:48::i;:::-;24495:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;24342:272;;;;:::o;40875:114::-;40935:13;40968;40961:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40875:114;:::o;16292:723::-;16348:13;16578:1;16569:5;:10;16565:53;;;16596:10;;;;;;;;;;;;;;;;;;;;;16565:53;16628:12;16643:5;16628:20;;16659:14;16684:78;16699:1;16691:4;:9;16684:78;;16717:8;;;;;:::i;:::-;;;;16748:2;16740:10;;;;;:::i;:::-;;;16684:78;;;16772:19;16804:6;16794:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16772:39;;16822:154;16838:1;16829:5;:10;16822:154;;16866:1;16856:11;;;;;:::i;:::-;;;16933:2;16925:5;:10;;;;:::i;:::-;16912:2;:24;;;;:::i;:::-;16899:39;;16882:6;16889;16882:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;16962:2;16953:11;;;;;:::i;:::-;;;16822:154;;;17000:6;16986:21;;;;;16292:723;;;;:::o;6303:157::-;6388:4;6427:25;6412:40;;;:11;:40;;;;6405:47;;6303:157;;;:::o;35349:555::-;35459:45;35486:4;35492:2;35496:7;35459:26;:45::i;:::-;35537:1;35521:18;;:4;:18;;;35517:187;;;35556:40;35588:7;35556:31;:40::i;:::-;35517:187;;;35626:2;35618:10;;:4;:10;;;35614:90;;35645:47;35678:4;35684:7;35645:32;:47::i;:::-;35614:90;35517:187;35732:1;35718:16;;:2;:16;;;35714:183;;;35751:45;35788:7;35751:36;:45::i;:::-;35714:183;;;35824:4;35818:10;;:2;:10;;;35814:83;;35845:40;35873:2;35877:7;35845:27;:40::i;:::-;35814:83;35714:183;35349:555;;;:::o;26255:250::-;26351:18;26357:2;26361:7;26351:5;:18::i;:::-;26388:54;26419:1;26423:2;26427:7;26436:5;26388:22;:54::i;:::-;26380:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;26255:250;;;:::o;29550:843::-;29671:4;29697:15;:2;:13;;;:15::i;:::-;29693:693;;;29749:2;29733:36;;;29770:12;:10;:12::i;:::-;29784:4;29790:7;29799:5;29733:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;29729:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29996:1;29979:6;:13;:18;29975:341;;;30022:60;;;;;;;;;;:::i;:::-;;;;;;;;29975:341;30266:6;30260:13;30251:6;30247:2;30243:15;30236:38;29729:602;29866:45;;;29856:55;;;:6;:55;;;;29849:62;;;;;29693:693;30370:4;30363:11;;29550:843;;;;;;;:::o;31006:93::-;;;;:::o;36627:164::-;36731:10;:17;;;;36704:15;:24;36720:7;36704:24;;;;;;;;;;;:44;;;;36759:10;36775:7;36759:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36627:164;:::o;37418:988::-;37684:22;37734:1;37709:22;37726:4;37709:16;:22::i;:::-;:26;;;;:::i;:::-;37684:51;;37746:18;37767:17;:26;37785:7;37767:26;;;;;;;;;;;;37746:47;;37914:14;37900:10;:28;37896:328;;37945:19;37967:12;:18;37980:4;37967:18;;;;;;;;;;;;;;;:34;37986:14;37967:34;;;;;;;;;;;;37945:56;;38051:11;38018:12;:18;38031:4;38018:18;;;;;;;;;;;;;;;:30;38037:10;38018:30;;;;;;;;;;;:44;;;;38168:10;38135:17;:30;38153:11;38135:30;;;;;;;;;;;:43;;;;37930:294;37896:328;38320:17;:26;38338:7;38320:26;;;;;;;;;;;38313:33;;;38364:12;:18;38377:4;38364:18;;;;;;;;;;;;;;;:34;38383:14;38364:34;;;;;;;;;;;38357:41;;;37499:907;;37418:988;;:::o;38701:1079::-;38954:22;38999:1;38979:10;:17;;;;:21;;;;:::i;:::-;38954:46;;39011:18;39032:15;:24;39048:7;39032:24;;;;;;;;;;;;39011:45;;39383:19;39405:10;39416:14;39405:26;;;;;;;;:::i;:::-;;;;;;;;;;39383:48;;39469:11;39444:10;39455;39444:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;39580:10;39549:15;:28;39565:11;39549:28;;;;;;;;;;;:41;;;;39721:15;:24;39737:7;39721:24;;;;;;;;;;;39714:31;;;39756:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38772:1008;;;38701:1079;:::o;36205:221::-;36290:14;36307:20;36324:2;36307:16;:20::i;:::-;36290:37;;36365:7;36338:12;:16;36351:2;36338:16;;;;;;;;;;;;;;;:24;36355:6;36338:24;;;;;;;;;;;:34;;;;36412:6;36383:17;:26;36401:7;36383:26;;;;;;;;;;;:35;;;;36279:147;36205:221;;:::o;26841:382::-;26935:1;26921:16;;:2;:16;;;;26913:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26994:16;27002:7;26994;:16::i;:::-;26993:17;26985:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;27056:45;27085:1;27089:2;27093:7;27056:20;:45::i;:::-;27131:1;27114:9;:13;27124:2;27114:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;27162:2;27143:7;:16;27151:7;27143:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27207:7;27203:2;27182:33;;27199:1;27182:33;;;;;;;;;;;;26841:382;;:::o;89:239::-;149:4;174:12;285:7;273:20;265:28;;319:1;312:4;:8;305:15;;;89:239;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:117::-;6024:1;6021;6014:12;6038:117;6147:1;6144;6137:12;6161:180;6209:77;6206:1;6199:88;6306:4;6303:1;6296:15;6330:4;6327:1;6320:15;6347:281;6430:27;6452:4;6430:27;:::i;:::-;6422:6;6418:40;6560:6;6548:10;6545:22;6524:18;6512:10;6509:34;6506:62;6503:88;;;6571:18;;:::i;:::-;6503:88;6611:10;6607:2;6600:22;6390:238;6347:281;;:::o;6634:129::-;6668:6;6695:20;;:::i;:::-;6685:30;;6724:33;6752:4;6744:6;6724:33;:::i;:::-;6634:129;;;:::o;6769:308::-;6831:4;6921:18;6913:6;6910:30;6907:56;;;6943:18;;:::i;:::-;6907:56;6981:29;7003:6;6981:29;:::i;:::-;6973:37;;7065:4;7059;7055:15;7047:23;;6769:308;;;:::o;7083:154::-;7167:6;7162:3;7157;7144:30;7229:1;7220:6;7215:3;7211:16;7204:27;7083:154;;;:::o;7243:412::-;7321:5;7346:66;7362:49;7404:6;7362:49;:::i;:::-;7346:66;:::i;:::-;7337:75;;7435:6;7428:5;7421:21;7473:4;7466:5;7462:16;7511:3;7502:6;7497:3;7493:16;7490:25;7487:112;;;7518:79;;:::i;:::-;7487:112;7608:41;7642:6;7637:3;7632;7608:41;:::i;:::-;7327:328;7243:412;;;;;:::o;7675:340::-;7731:5;7780:3;7773:4;7765:6;7761:17;7757:27;7747:122;;7788:79;;:::i;:::-;7747:122;7905:6;7892:20;7930:79;8005:3;7997:6;7990:4;7982:6;7978:17;7930:79;:::i;:::-;7921:88;;7737:278;7675:340;;;;:::o;8021:509::-;8090:6;8139:2;8127:9;8118:7;8114:23;8110:32;8107:119;;;8145:79;;:::i;:::-;8107:119;8293:1;8282:9;8278:17;8265:31;8323:18;8315:6;8312:30;8309:117;;;8345:79;;:::i;:::-;8309:117;8450:63;8505:7;8496:6;8485:9;8481:22;8450:63;:::i;:::-;8440:73;;8236:287;8021:509;;;;:::o;8536:329::-;8595:6;8644:2;8632:9;8623:7;8619:23;8615:32;8612:119;;;8650:79;;:::i;:::-;8612:119;8770:1;8795:53;8840:7;8831:6;8820:9;8816:22;8795:53;:::i;:::-;8785:63;;8741:117;8536:329;;;;:::o;8871:114::-;8938:6;8972:5;8966:12;8956:22;;8871:114;;;:::o;8991:184::-;9090:11;9124:6;9119:3;9112:19;9164:4;9159:3;9155:14;9140:29;;8991:184;;;;:::o;9181:132::-;9248:4;9271:3;9263:11;;9301:4;9296:3;9292:14;9284:22;;9181:132;;;:::o;9319:108::-;9396:24;9414:5;9396:24;:::i;:::-;9391:3;9384:37;9319:108;;:::o;9433:179::-;9502:10;9523:46;9565:3;9557:6;9523:46;:::i;:::-;9601:4;9596:3;9592:14;9578:28;;9433:179;;;;:::o;9618:113::-;9688:4;9720;9715:3;9711:14;9703:22;;9618:113;;;:::o;9767:732::-;9886:3;9915:54;9963:5;9915:54;:::i;:::-;9985:86;10064:6;10059:3;9985:86;:::i;:::-;9978:93;;10095:56;10145:5;10095:56;:::i;:::-;10174:7;10205:1;10190:284;10215:6;10212:1;10209:13;10190:284;;;10291:6;10285:13;10318:63;10377:3;10362:13;10318:63;:::i;:::-;10311:70;;10404:60;10457:6;10404:60;:::i;:::-;10394:70;;10250:224;10237:1;10234;10230:9;10225:14;;10190:284;;;10194:14;10490:3;10483:10;;9891:608;;;9767:732;;;;:::o;10505:373::-;10648:4;10686:2;10675:9;10671:18;10663:26;;10735:9;10729:4;10725:20;10721:1;10710:9;10706:17;10699:47;10763:108;10866:4;10857:6;10763:108;:::i;:::-;10755:116;;10505:373;;;;:::o;10884:116::-;10954:21;10969:5;10954:21;:::i;:::-;10947:5;10944:32;10934:60;;10990:1;10987;10980:12;10934:60;10884:116;:::o;11006:133::-;11049:5;11087:6;11074:20;11065:29;;11103:30;11127:5;11103:30;:::i;:::-;11006:133;;;;:::o;11145:468::-;11210:6;11218;11267:2;11255:9;11246:7;11242:23;11238:32;11235:119;;;11273:79;;:::i;:::-;11235:119;11393:1;11418:53;11463:7;11454:6;11443:9;11439:22;11418:53;:::i;:::-;11408:63;;11364:117;11520:2;11546:50;11588:7;11579:6;11568:9;11564:22;11546:50;:::i;:::-;11536:60;;11491:115;11145:468;;;;;:::o;11619:323::-;11675:6;11724:2;11712:9;11703:7;11699:23;11695:32;11692:119;;;11730:79;;:::i;:::-;11692:119;11850:1;11875:50;11917:7;11908:6;11897:9;11893:22;11875:50;:::i;:::-;11865:60;;11821:114;11619:323;;;;:::o;11948:307::-;12009:4;12099:18;12091:6;12088:30;12085:56;;;12121:18;;:::i;:::-;12085:56;12159:29;12181:6;12159:29;:::i;:::-;12151:37;;12243:4;12237;12233:15;12225:23;;11948:307;;;:::o;12261:410::-;12338:5;12363:65;12379:48;12420:6;12379:48;:::i;:::-;12363:65;:::i;:::-;12354:74;;12451:6;12444:5;12437:21;12489:4;12482:5;12478:16;12527:3;12518:6;12513:3;12509:16;12506:25;12503:112;;;12534:79;;:::i;:::-;12503:112;12624:41;12658:6;12653:3;12648;12624:41;:::i;:::-;12344:327;12261:410;;;;;:::o;12690:338::-;12745:5;12794:3;12787:4;12779:6;12775:17;12771:27;12761:122;;12802:79;;:::i;:::-;12761:122;12919:6;12906:20;12944:78;13018:3;13010:6;13003:4;12995:6;12991:17;12944:78;:::i;:::-;12935:87;;12751:277;12690:338;;;;:::o;13034:943::-;13129:6;13137;13145;13153;13202:3;13190:9;13181:7;13177:23;13173:33;13170:120;;;13209:79;;:::i;:::-;13170:120;13329:1;13354:53;13399:7;13390:6;13379:9;13375:22;13354:53;:::i;:::-;13344:63;;13300:117;13456:2;13482:53;13527:7;13518:6;13507:9;13503:22;13482:53;:::i;:::-;13472:63;;13427:118;13584:2;13610:53;13655:7;13646:6;13635:9;13631:22;13610:53;:::i;:::-;13600:63;;13555:118;13740:2;13729:9;13725:18;13712:32;13771:18;13763:6;13760:30;13757:117;;;13793:79;;:::i;:::-;13757:117;13898:62;13952:7;13943:6;13932:9;13928:22;13898:62;:::i;:::-;13888:72;;13683:287;13034:943;;;;;;;:::o;13983:474::-;14051:6;14059;14108:2;14096:9;14087:7;14083:23;14079:32;14076:119;;;14114:79;;:::i;:::-;14076:119;14234:1;14259:53;14304:7;14295:6;14284:9;14280:22;14259:53;:::i;:::-;14249:63;;14205:117;14361:2;14387:53;14432:7;14423:6;14412:9;14408:22;14387:53;:::i;:::-;14377:63;;14332:118;13983:474;;;;;:::o;14463:180::-;14511:77;14508:1;14501:88;14608:4;14605:1;14598:15;14632:4;14629:1;14622:15;14649:320;14693:6;14730:1;14724:4;14720:12;14710:22;;14777:1;14771:4;14767:12;14798:18;14788:81;;14854:4;14846:6;14842:17;14832:27;;14788:81;14916:2;14908:6;14905:14;14885:18;14882:38;14879:84;;;14935:18;;:::i;:::-;14879:84;14700:269;14649:320;;;:::o;14975:231::-;15115:34;15111:1;15103:6;15099:14;15092:58;15184:14;15179:2;15171:6;15167:15;15160:39;14975:231;:::o;15212:366::-;15354:3;15375:67;15439:2;15434:3;15375:67;:::i;:::-;15368:74;;15451:93;15540:3;15451:93;:::i;:::-;15569:2;15564:3;15560:12;15553:19;;15212:366;;;:::o;15584:419::-;15750:4;15788:2;15777:9;15773:18;15765:26;;15837:9;15831:4;15827:20;15823:1;15812:9;15808:17;15801:47;15865:131;15991:4;15865:131;:::i;:::-;15857:139;;15584:419;;;:::o;16009:220::-;16149:34;16145:1;16137:6;16133:14;16126:58;16218:3;16213:2;16205:6;16201:15;16194:28;16009:220;:::o;16235:366::-;16377:3;16398:67;16462:2;16457:3;16398:67;:::i;:::-;16391:74;;16474:93;16563:3;16474:93;:::i;:::-;16592:2;16587:3;16583:12;16576:19;;16235:366;;;:::o;16607:419::-;16773:4;16811:2;16800:9;16796:18;16788:26;;16860:9;16854:4;16850:20;16846:1;16835:9;16831:17;16824:47;16888:131;17014:4;16888:131;:::i;:::-;16880:139;;16607:419;;;:::o;17032:243::-;17172:34;17168:1;17160:6;17156:14;17149:58;17241:26;17236:2;17228:6;17224:15;17217:51;17032:243;:::o;17281:366::-;17423:3;17444:67;17508:2;17503:3;17444:67;:::i;:::-;17437:74;;17520:93;17609:3;17520:93;:::i;:::-;17638:2;17633:3;17629:12;17622:19;;17281:366;;;:::o;17653:419::-;17819:4;17857:2;17846:9;17842:18;17834:26;;17906:9;17900:4;17896:20;17892:1;17881:9;17877:17;17870:47;17934:131;18060:4;17934:131;:::i;:::-;17926:139;;17653:419;;;:::o;18078:236::-;18218:34;18214:1;18206:6;18202:14;18195:58;18287:19;18282:2;18274:6;18270:15;18263:44;18078:236;:::o;18320:366::-;18462:3;18483:67;18547:2;18542:3;18483:67;:::i;:::-;18476:74;;18559:93;18648:3;18559:93;:::i;:::-;18677:2;18672:3;18668:12;18661:19;;18320:366;;;:::o;18692:419::-;18858:4;18896:2;18885:9;18881:18;18873:26;;18945:9;18939:4;18935:20;18931:1;18920:9;18916:17;18909:47;18973:131;19099:4;18973:131;:::i;:::-;18965:139;;18692:419;;;:::o;19117:180::-;19165:77;19162:1;19155:88;19262:4;19259:1;19252:15;19286:4;19283:1;19276:15;19303:348;19343:7;19366:20;19384:1;19366:20;:::i;:::-;19361:25;;19400:20;19418:1;19400:20;:::i;:::-;19395:25;;19588:1;19520:66;19516:74;19513:1;19510:81;19505:1;19498:9;19491:17;19487:105;19484:131;;;19595:18;;:::i;:::-;19484:131;19643:1;19640;19636:9;19625:20;;19303:348;;;;:::o;19657:230::-;19797:34;19793:1;19785:6;19781:14;19774:58;19866:13;19861:2;19853:6;19849:15;19842:38;19657:230;:::o;19893:366::-;20035:3;20056:67;20120:2;20115:3;20056:67;:::i;:::-;20049:74;;20132:93;20221:3;20132:93;:::i;:::-;20250:2;20245:3;20241:12;20234:19;;19893:366;;;:::o;20265:419::-;20431:4;20469:2;20458:9;20454:18;20446:26;;20518:9;20512:4;20508:20;20504:1;20493:9;20489:17;20482:47;20546:131;20672:4;20546:131;:::i;:::-;20538:139;;20265:419;;;:::o;20690:231::-;20830:34;20826:1;20818:6;20814:14;20807:58;20899:14;20894:2;20886:6;20882:15;20875:39;20690:231;:::o;20927:366::-;21069:3;21090:67;21154:2;21149:3;21090:67;:::i;:::-;21083:74;;21166:93;21255:3;21166:93;:::i;:::-;21284:2;21279:3;21275:12;21268:19;;20927:366;;;:::o;21299:419::-;21465:4;21503:2;21492:9;21488:18;21480:26;;21552:9;21546:4;21542:20;21538:1;21527:9;21523:17;21516:47;21580:131;21706:4;21580:131;:::i;:::-;21572:139;;21299:419;;;:::o;21724:180::-;21772:77;21769:1;21762:88;21869:4;21866:1;21859:15;21893:4;21890:1;21883:15;21910:182;22050:34;22046:1;22038:6;22034:14;22027:58;21910:182;:::o;22098:366::-;22240:3;22261:67;22325:2;22320:3;22261:67;:::i;:::-;22254:74;;22337:93;22426:3;22337:93;:::i;:::-;22455:2;22450:3;22446:12;22439:19;;22098:366;;;:::o;22470:419::-;22636:4;22674:2;22663:9;22659:18;22651:26;;22723:9;22717:4;22713:20;22709:1;22698:9;22694:17;22687:47;22751:131;22877:4;22751:131;:::i;:::-;22743:139;;22470:419;;;:::o;22895:228::-;23035:34;23031:1;23023:6;23019:14;23012:58;23104:11;23099:2;23091:6;23087:15;23080:36;22895:228;:::o;23129:366::-;23271:3;23292:67;23356:2;23351:3;23292:67;:::i;:::-;23285:74;;23368:93;23457:3;23368:93;:::i;:::-;23486:2;23481:3;23477:12;23470:19;;23129:366;;;:::o;23501:419::-;23667:4;23705:2;23694:9;23690:18;23682:26;;23754:9;23748:4;23744:20;23740:1;23729:9;23725:17;23718:47;23782:131;23908:4;23782:131;:::i;:::-;23774:139;;23501:419;;;:::o;23926:305::-;23966:3;23985:20;24003:1;23985:20;:::i;:::-;23980:25;;24019:20;24037:1;24019:20;:::i;:::-;24014:25;;24173:1;24105:66;24101:74;24098:1;24095:81;24092:107;;;24179:18;;:::i;:::-;24092:107;24223:1;24220;24216:9;24209:16;;23926:305;;;;:::o;24237:159::-;24377:11;24373:1;24365:6;24361:14;24354:35;24237:159;:::o;24402:365::-;24544:3;24565:66;24629:1;24624:3;24565:66;:::i;:::-;24558:73;;24640:93;24729:3;24640:93;:::i;:::-;24758:2;24753:3;24749:12;24742:19;;24402:365;;;:::o;24773:419::-;24939:4;24977:2;24966:9;24962:18;24954:26;;25026:9;25020:4;25016:20;25012:1;25001:9;24997:17;24990:47;25054:131;25180:4;25054:131;:::i;:::-;25046:139;;24773:419;;;:::o;25198:158::-;25338:10;25334:1;25326:6;25322:14;25315:34;25198:158;:::o;25362:365::-;25504:3;25525:66;25589:1;25584:3;25525:66;:::i;:::-;25518:73;;25600:93;25689:3;25600:93;:::i;:::-;25718:2;25713:3;25709:12;25702:19;;25362:365;;;:::o;25733:419::-;25899:4;25937:2;25926:9;25922:18;25914:26;;25986:9;25980:4;25976:20;25972:1;25961:9;25957:17;25950:47;26014:131;26140:4;26014:131;:::i;:::-;26006:139;;25733:419;;;:::o;26158:160::-;26298:12;26294:1;26286:6;26282:14;26275:36;26158:160;:::o;26324:366::-;26466:3;26487:67;26551:2;26546:3;26487:67;:::i;:::-;26480:74;;26563:93;26652:3;26563:93;:::i;:::-;26681:2;26676:3;26672:12;26665:19;;26324:366;;;:::o;26696:419::-;26862:4;26900:2;26889:9;26885:18;26877:26;;26949:9;26943:4;26939:20;26935:1;26924:9;26920:17;26913:47;26977:131;27103:4;26977:131;:::i;:::-;26969:139;;26696:419;;;:::o;27121:167::-;27261:19;27257:1;27249:6;27245:14;27238:43;27121:167;:::o;27294:366::-;27436:3;27457:67;27521:2;27516:3;27457:67;:::i;:::-;27450:74;;27533:93;27622:3;27533:93;:::i;:::-;27651:2;27646:3;27642:12;27635:19;;27294:366;;;:::o;27666:419::-;27832:4;27870:2;27859:9;27855:18;27847:26;;27919:9;27913:4;27909:20;27905:1;27894:9;27890:17;27883:47;27947:131;28073:4;27947:131;:::i;:::-;27939:139;;27666:419;;;:::o;28091:233::-;28130:3;28153:24;28171:5;28153:24;:::i;:::-;28144:33;;28199:66;28192:5;28189:77;28186:103;;;28269:18;;:::i;:::-;28186:103;28316:1;28309:5;28305:13;28298:20;;28091:233;;;:::o;28330:229::-;28470:34;28466:1;28458:6;28454:14;28447:58;28539:12;28534:2;28526:6;28522:15;28515:37;28330:229;:::o;28565:366::-;28707:3;28728:67;28792:2;28787:3;28728:67;:::i;:::-;28721:74;;28804:93;28893:3;28804:93;:::i;:::-;28922:2;28917:3;28913:12;28906:19;;28565:366;;;:::o;28937:419::-;29103:4;29141:2;29130:9;29126:18;29118:26;;29190:9;29184:4;29180:20;29176:1;29165:9;29161:17;29154:47;29218:131;29344:4;29218:131;:::i;:::-;29210:139;;28937:419;;;:::o;29362:175::-;29502:27;29498:1;29490:6;29486:14;29479:51;29362:175;:::o;29543:366::-;29685:3;29706:67;29770:2;29765:3;29706:67;:::i;:::-;29699:74;;29782:93;29871:3;29782:93;:::i;:::-;29900:2;29895:3;29891:12;29884:19;;29543:366;;;:::o;29915:419::-;30081:4;30119:2;30108:9;30104:18;30096:26;;30168:9;30162:4;30158:20;30154:1;30143:9;30139:17;30132:47;30196:131;30322:4;30196:131;:::i;:::-;30188:139;;29915:419;;;:::o;30340:234::-;30480:34;30476:1;30468:6;30464:14;30457:58;30549:17;30544:2;30536:6;30532:15;30525:42;30340:234;:::o;30580:366::-;30722:3;30743:67;30807:2;30802:3;30743:67;:::i;:::-;30736:74;;30819:93;30908:3;30819:93;:::i;:::-;30937:2;30932:3;30928:12;30921:19;;30580:366;;;:::o;30952:419::-;31118:4;31156:2;31145:9;31141:18;31133:26;;31205:9;31199:4;31195:20;31191:1;31180:9;31176:17;31169:47;31233:131;31359:4;31233:131;:::i;:::-;31225:139;;30952:419;;;:::o;31377:148::-;31479:11;31516:3;31501:18;;31377:148;;;;:::o;31531:377::-;31637:3;31665:39;31698:5;31665:39;:::i;:::-;31720:89;31802:6;31797:3;31720:89;:::i;:::-;31713:96;;31818:52;31863:6;31858:3;31851:4;31844:5;31840:16;31818:52;:::i;:::-;31895:6;31890:3;31886:16;31879:23;;31641:267;31531:377;;;;:::o;31914:435::-;32094:3;32116:95;32207:3;32198:6;32116:95;:::i;:::-;32109:102;;32228:95;32319:3;32310:6;32228:95;:::i;:::-;32221:102;;32340:3;32333:10;;31914:435;;;;;:::o;32355:225::-;32495:34;32491:1;32483:6;32479:14;32472:58;32564:8;32559:2;32551:6;32547:15;32540:33;32355:225;:::o;32586:366::-;32728:3;32749:67;32813:2;32808:3;32749:67;:::i;:::-;32742:74;;32825:93;32914:3;32825:93;:::i;:::-;32943:2;32938:3;32934:12;32927:19;;32586:366;;;:::o;32958:419::-;33124:4;33162:2;33151:9;33147:18;33139:26;;33211:9;33205:4;33201:20;33197:1;33186:9;33182:17;33175:47;33239:131;33365:4;33239:131;:::i;:::-;33231:139;;32958:419;;;:::o;33383:231::-;33523:34;33519:1;33511:6;33507:14;33500:58;33592:14;33587:2;33579:6;33575:15;33568:39;33383:231;:::o;33620:366::-;33762:3;33783:67;33847:2;33842:3;33783:67;:::i;:::-;33776:74;;33859:93;33948:3;33859:93;:::i;:::-;33977:2;33972:3;33968:12;33961:19;;33620:366;;;:::o;33992:419::-;34158:4;34196:2;34185:9;34181:18;34173:26;;34245:9;34239:4;34235:20;34231:1;34220:9;34216:17;34209:47;34273:131;34399:4;34273:131;:::i;:::-;34265:139;;33992:419;;;:::o;34417:228::-;34557:34;34553:1;34545:6;34541:14;34534:58;34626:11;34621:2;34613:6;34609:15;34602:36;34417:228;:::o;34651:366::-;34793:3;34814:67;34878:2;34873:3;34814:67;:::i;:::-;34807:74;;34890:93;34979:3;34890:93;:::i;:::-;35008:2;35003:3;34999:12;34992:19;;34651:366;;;:::o;35023:419::-;35189:4;35227:2;35216:9;35212:18;35204:26;;35276:9;35270:4;35266:20;35262:1;35251:9;35247:17;35240:47;35304:131;35430:4;35304:131;:::i;:::-;35296:139;;35023:419;;;:::o;35448:223::-;35588:34;35584:1;35576:6;35572:14;35565:58;35657:6;35652:2;35644:6;35640:15;35633:31;35448:223;:::o;35677:366::-;35819:3;35840:67;35904:2;35899:3;35840:67;:::i;:::-;35833:74;;35916:93;36005:3;35916:93;:::i;:::-;36034:2;36029:3;36025:12;36018:19;;35677:366;;;:::o;36049:419::-;36215:4;36253:2;36242:9;36238:18;36230:26;;36302:9;36296:4;36292:20;36288:1;36277:9;36273:17;36266:47;36330:131;36456:4;36330:131;:::i;:::-;36322:139;;36049:419;;;:::o;36474:191::-;36514:4;36534:20;36552:1;36534:20;:::i;:::-;36529:25;;36568:20;36586:1;36568:20;:::i;:::-;36563:25;;36607:1;36604;36601:8;36598:34;;;36612:18;;:::i;:::-;36598:34;36657:1;36654;36650:9;36642:17;;36474:191;;;;:::o;36671:180::-;36719:77;36716:1;36709:88;36816:4;36813:1;36806:15;36840:4;36837:1;36830:15;36857:185;36897:1;36914:20;36932:1;36914:20;:::i;:::-;36909:25;;36948:20;36966:1;36948:20;:::i;:::-;36943:25;;36987:1;36977:35;;36992:18;;:::i;:::-;36977:35;37034:1;37031;37027:9;37022:14;;36857:185;;;;:::o;37048:237::-;37188:34;37184:1;37176:6;37172:14;37165:58;37257:20;37252:2;37244:6;37240:15;37233:45;37048:237;:::o;37291:366::-;37433:3;37454:67;37518:2;37513:3;37454:67;:::i;:::-;37447:74;;37530:93;37619:3;37530:93;:::i;:::-;37648:2;37643:3;37639:12;37632:19;;37291:366;;;:::o;37663:419::-;37829:4;37867:2;37856:9;37852:18;37844:26;;37916:9;37910:4;37906:20;37902:1;37891:9;37887:17;37880:47;37944:131;38070:4;37944:131;:::i;:::-;37936:139;;37663:419;;;:::o;38088:176::-;38120:1;38137:20;38155:1;38137:20;:::i;:::-;38132:25;;38171:20;38189:1;38171:20;:::i;:::-;38166:25;;38210:1;38200:35;;38215:18;;:::i;:::-;38200:35;38256:1;38253;38249:9;38244:14;;38088:176;;;;:::o;38270:98::-;38321:6;38355:5;38349:12;38339:22;;38270:98;;;:::o;38374:168::-;38457:11;38491:6;38486:3;38479:19;38531:4;38526:3;38522:14;38507:29;;38374:168;;;;:::o;38548:360::-;38634:3;38662:38;38694:5;38662:38;:::i;:::-;38716:70;38779:6;38774:3;38716:70;:::i;:::-;38709:77;;38795:52;38840:6;38835:3;38828:4;38821:5;38817:16;38795:52;:::i;:::-;38872:29;38894:6;38872:29;:::i;:::-;38867:3;38863:39;38856:46;;38638:270;38548:360;;;;:::o;38914:640::-;39109:4;39147:3;39136:9;39132:19;39124:27;;39161:71;39229:1;39218:9;39214:17;39205:6;39161:71;:::i;:::-;39242:72;39310:2;39299:9;39295:18;39286:6;39242:72;:::i;:::-;39324;39392:2;39381:9;39377:18;39368:6;39324:72;:::i;:::-;39443:9;39437:4;39433:20;39428:2;39417:9;39413:18;39406:48;39471:76;39542:4;39533:6;39471:76;:::i;:::-;39463:84;;38914:640;;;;;;;:::o;39560:141::-;39616:5;39647:6;39641:13;39632:22;;39663:32;39689:5;39663:32;:::i;:::-;39560:141;;;;:::o;39707:349::-;39776:6;39825:2;39813:9;39804:7;39800:23;39796:32;39793:119;;;39831:79;;:::i;:::-;39793:119;39951:1;39976:63;40031:7;40022:6;40011:9;40007:22;39976:63;:::i;:::-;39966:73;;39922:127;39707:349;;;;:::o;40062:180::-;40110:77;40107:1;40100:88;40207:4;40204:1;40197:15;40231:4;40228:1;40221:15;40248:182;40388:34;40384:1;40376:6;40372:14;40365:58;40248:182;:::o;40436:366::-;40578:3;40599:67;40663:2;40658:3;40599:67;:::i;:::-;40592:74;;40675:93;40764:3;40675:93;:::i;:::-;40793:2;40788:3;40784:12;40777:19;;40436:366;;;:::o;40808:419::-;40974:4;41012:2;41001:9;40997:18;40989:26;;41061:9;41055:4;41051:20;41047:1;41036:9;41032:17;41025:47;41089:131;41215:4;41089:131;:::i;:::-;41081:139;;40808:419;;;:::o;41233:178::-;41373:30;41369:1;41361:6;41357:14;41350:54;41233:178;:::o;41417:366::-;41559:3;41580:67;41644:2;41639:3;41580:67;:::i;:::-;41573:74;;41656:93;41745:3;41656:93;:::i;:::-;41774:2;41769:3;41765:12;41758:19;;41417:366;;;:::o;41789:419::-;41955:4;41993:2;41982:9;41978:18;41970:26;;42042:9;42036:4;42032:20;42028:1;42017:9;42013:17;42006:47;42070:131;42196:4;42070:131;:::i;:::-;42062:139;;41789:419;;;:::o
Swarm Source
ipfs://1632ff308ac95ef8f2a4ab3aabd8e2f2d96b08b4daffd7d48d90ffec471271be
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.