ERC-721
Overview
Max Total Supply
44 DBT
Holders
22
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
2 DBTLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TheDabbuNFT
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "./ERC721Enumerable.sol"; import "./Ownable.sol"; contract TheDabbuNFT is ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; string public mintToken = "1"; uint256 public cost = 0.07 ether; uint256 public presaleCost = 0.05 ether; uint256 public maxSupply = 6425; bool public paused = false; bool public presale = false; constructor( string memory _name, string memory _symbol, string memory _initBaseURI ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); } // internal function _baseURI() internal view virtual override returns (string memory) { return baseURI; } // public function mint(address _to, uint256 _mintToken) public payable { require(!paused); uint256 supply = totalSupply(); require(_mintToken > 0); require(supply + 1 <= maxSupply); require(_mintToken <= maxSupply); if (msg.sender != owner()) { if (presale) { //general public require(msg.value >= presaleCost); } else { //presale require(msg.value >= cost); } } setMintToken(_mintToken.toString()); _safeMint(_to, _mintToken); } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function tokenURI(uint256 tokenId) public view override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, mintToken, baseExtension ) ) : ""; } //only owner function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setPresaleCost(uint256 _newCost) public onlyOwner { presaleCost = _newCost; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setMintToken(string memory _mintToken) public { mintToken = _mintToken; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function pause(bool _state) public onlyOwner { paused = _state; } function presaleState(bool _state) public onlyOwner { presale = _state; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{ value: address(this).balance }(""); require(success); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); (bool success, ) = recipient.call{value: amount}(""); require( success, "Address: unable to send value, recipient may have reverted" ); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue( target, data, value, "Address: low-level call with value failed" ); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require( address(this).balance >= value, "Address: insufficient balance for call" ); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}( data ); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./IERC721Metadata.sol"; import "./Address.sol"; import "./Context.sol"; import "./Strings.sol"; import "./ERC165.sol"; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require( owner != address(0), "ERC721: balance query for the zero address" ); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require( owner != address(0), "ERC721: owner query for nonexistent token" ); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require( _exists(tokenId), "ERC721: approved query for nonexistent token" ); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require( _exists(tokenId), "ERC721: operator query for nonexistent token" ); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require( ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own" ); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received( _msgSender(), from, tokenId, _data ) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert( "ERC721: transfer to non ERC721Receiver implementer" ); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERC721.sol"; import "./IERC721Enumerable.sol"; /** * @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(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_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 { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","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":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintToken","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintToken","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"presaleState","outputs":[],"stateMutability":"nonpayable","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":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_mintToken","type":"string"}],"name":"setMintToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPresaleCost","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":[],"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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90805190602001906200005192919062000338565b506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250600d90805190602001906200009f92919062000338565b5066f8b0a10e470000600e5566b1a2bc2ec50000600f556119196010556000601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff021916908315150217905550348015620000ff57600080fd5b5060405162004a6938038062004a69833981810160405281019062000125919062000466565b828281600090805190602001906200013f92919062000338565b5080600190805190602001906200015892919062000338565b5050506200017b6200016f6200019560201b60201c565b6200019d60201b60201c565b6200018c816200026360201b60201c565b50505062000726565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002736200019560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002996200030e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e99062000546565b60405180910390fd5b80600b90805190602001906200030a92919062000338565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000346906200060e565b90600052602060002090601f0160209004810192826200036a5760008555620003b6565b82601f106200038557805160ff1916838001178555620003b6565b82800160010185558215620003b6579182015b82811115620003b557825182559160200191906001019062000398565b5b509050620003c59190620003c9565b5090565b5b80821115620003e4576000816000905550600101620003ca565b5090565b6000620003ff620003f98462000591565b62000568565b9050828152602081018484840111156200041e576200041d620006dd565b5b6200042b848285620005d8565b509392505050565b600082601f8301126200044b576200044a620006d8565b5b81516200045d848260208601620003e8565b91505092915050565b600080600060608486031215620004825762000481620006e7565b5b600084015167ffffffffffffffff811115620004a357620004a2620006e2565b5b620004b18682870162000433565b935050602084015167ffffffffffffffff811115620004d557620004d4620006e2565b5b620004e38682870162000433565b925050604084015167ffffffffffffffff811115620005075762000506620006e2565b5b620005158682870162000433565b9150509250925092565b60006200052e602083620005c7565b91506200053b82620006fd565b602082019050919050565b6000602082019050818103600083015262000561816200051f565b9050919050565b60006200057462000587565b905062000582828262000644565b919050565b6000604051905090565b600067ffffffffffffffff821115620005af57620005ae620006a9565b5b620005ba82620006ec565b9050602081019050919050565b600082825260208201905092915050565b60005b83811015620005f8578082015181840152602081019050620005db565b8381111562000608576000848401525b50505050565b600060028204905060018216806200062757607f821691505b602082108114156200063e576200063d6200067a565b5b50919050565b6200064f82620006ec565b810181811067ffffffffffffffff82111715620006715762000670620006a9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61433380620007366000396000f3fe60806040526004361061021a5760003560e01c80635b61952a116101235780639e438e06116100ab578063d5abeb011161006f578063d5abeb01146107b5578063da3ef23f146107e0578063e985e9c514610809578063f2fde38b14610846578063fdea8e0b1461086f5761021a565b80639e438e06146106d2578063a22cb465146106fb578063b88d4fde14610724578063c66828621461074d578063c87b56dd146107785761021a565b806370a08231116100f257806370a08231146105ff578063715018a61461063c5780638da5cb5b146106535780638fdcf9421461067e57806395d89b41146106a75761021a565b80635b61952a146105435780635c975abb1461056c5780636352211e146105975780636c0360eb146105d45761021a565b80632a23d07d116101a657806342842e0e1161017557806342842e0e1461044e578063438b63001461047757806344a0d68a146104b45780634f6ccce7146104dd57806355f804b31461051a5761021a565b80632a23d07d146103c05780632f745c59146103eb5780633ccfd60b1461042857806340c10f19146104325761021a565b8063095ea7b3116101ed578063095ea7b3146102ed57806313faede61461031657806318160ddd146103415780632004ffd91461036c57806323b872dd146103975761021a565b806301ffc9a71461021f57806302329a291461025c57806306fdde0314610285578063081812fc146102b0575b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190613054565b61089a565b6040516102539190613660565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613027565b610914565b005b34801561029157600080fd5b5061029a6109ad565b6040516102a7919061367b565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d291906130f7565b610a3f565b6040516102e491906135d7565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612fe7565b610ac4565b005b34801561032257600080fd5b5061032b610bdc565b60405161033891906138dd565b60405180910390f35b34801561034d57600080fd5b50610356610be2565b60405161036391906138dd565b60405180910390f35b34801561037857600080fd5b50610381610bef565b60405161038e919061367b565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190612ed1565b610c7d565b005b3480156103cc57600080fd5b506103d5610cdd565b6040516103e291906138dd565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190612fe7565b610ce3565b60405161041f91906138dd565b60405180910390f35b610430610d88565b005b61044c60048036038101906104479190612fe7565b610e7d565b005b34801561045a57600080fd5b5061047560048036038101906104709190612ed1565b610f6e565b005b34801561048357600080fd5b5061049e60048036038101906104999190612e64565b610f8e565b6040516104ab919061363e565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906130f7565b61103c565b005b3480156104e957600080fd5b5061050460048036038101906104ff91906130f7565b6110c2565b60405161051191906138dd565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906130ae565b611133565b005b34801561054f57600080fd5b5061056a600480360381019061056591906130ae565b6111c9565b005b34801561057857600080fd5b506105816111e3565b60405161058e9190613660565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906130f7565b6111f6565b6040516105cb91906135d7565b60405180910390f35b3480156105e057600080fd5b506105e96112a8565b6040516105f6919061367b565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612e64565b611336565b60405161063391906138dd565b60405180910390f35b34801561064857600080fd5b506106516113ee565b005b34801561065f57600080fd5b50610668611476565b60405161067591906135d7565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a091906130f7565b6114a0565b005b3480156106b357600080fd5b506106bc611526565b6040516106c9919061367b565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f49190613027565b6115b8565b005b34801561070757600080fd5b50610722600480360381019061071d9190612fa7565b611651565b005b34801561073057600080fd5b5061074b60048036038101906107469190612f24565b6117d2565b005b34801561075957600080fd5b50610762611834565b60405161076f919061367b565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a91906130f7565b6118c2565b6040516107ac919061367b565b60405180910390f35b3480156107c157600080fd5b506107ca611965565b6040516107d791906138dd565b60405180910390f35b3480156107ec57600080fd5b50610807600480360381019061080291906130ae565b61196b565b005b34801561081557600080fd5b50610830600480360381019061082b9190612e91565b611a01565b60405161083d9190613660565b60405180910390f35b34801561085257600080fd5b5061086d60048036038101906108689190612e64565b611a95565b005b34801561087b57600080fd5b50610884611b8d565b6040516108919190613660565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090d575061090c82611ba0565b5b9050919050565b61091c611c82565b73ffffffffffffffffffffffffffffffffffffffff1661093a611476565b73ffffffffffffffffffffffffffffffffffffffff1614610990576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109879061381d565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b6060600080546109bc90613b8c565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890613b8c565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b5050505050905090565b6000610a4a82611c8a565b610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906137fd565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610acf826111f6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b379061387d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5f611c82565b73ffffffffffffffffffffffffffffffffffffffff161480610b8e5750610b8d81610b88611c82565b611a01565b5b610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc49061377d565b60405180910390fd5b610bd78383611cf6565b505050565b600e5481565b6000600880549050905090565b600d8054610bfc90613b8c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2890613b8c565b8015610c755780601f10610c4a57610100808354040283529160200191610c75565b820191906000526020600020905b815481529060010190602001808311610c5857829003601f168201915b505050505081565b610c8e610c88611c82565b82611daf565b610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc49061389d565b60405180910390fd5b610cd8838383611e8d565b505050565b600f5481565b6000610cee83611336565b8210610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d269061369d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d90611c82565b73ffffffffffffffffffffffffffffffffffffffff16610dae611476565b73ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061381d565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610e2a906135c2565b60006040518083038185875af1925050503d8060008114610e67576040519150601f19603f3d011682016040523d82523d6000602084013e610e6c565b606091505b5050905080610e7a57600080fd5b50565b601160009054906101000a900460ff1615610e9757600080fd5b6000610ea1610be2565b905060008211610eb057600080fd5b601054600182610ec09190613a1b565b1115610ecb57600080fd5b601054821115610eda57600080fd5b610ee2611476565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4e57601160019054906101000a900460ff1615610f3d57600f54341015610f3857600080fd5b610f4d565b600e54341015610f4c57600080fd5b5b5b610f5f610f5a836120e9565b6111c9565b610f69838361224a565b505050565b610f89838383604051806020016040528060008152506117d2565b505050565b60606000610f9b83611336565b905060008167ffffffffffffffff811115610fb957610fb8613d54565b5b604051908082528060200260200182016040528015610fe75781602001602082028036833780820191505090505b50905060005b8281101561103157610fff8582610ce3565b82828151811061101257611011613d25565b5b602002602001018181525050808061102990613bef565b915050610fed565b508092505050919050565b611044611c82565b73ffffffffffffffffffffffffffffffffffffffff16611062611476565b73ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af9061381d565b60405180910390fd5b80600e8190555050565b60006110cc610be2565b821061110d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611104906138bd565b60405180910390fd5b6008828154811061112157611120613d25565b5b90600052602060002001549050919050565b61113b611c82565b73ffffffffffffffffffffffffffffffffffffffff16611159611476565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a69061381d565b60405180910390fd5b80600b90805190602001906111c5929190612c78565b5050565b80600d90805190602001906111df929190612c78565b5050565b601160009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906137bd565b60405180910390fd5b80915050919050565b600b80546112b590613b8c565b80601f01602080910402602001604051908101604052809291908181526020018280546112e190613b8c565b801561132e5780601f106113035761010080835404028352916020019161132e565b820191906000526020600020905b81548152906001019060200180831161131157829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061379d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113f6611c82565b73ffffffffffffffffffffffffffffffffffffffff16611414611476565b73ffffffffffffffffffffffffffffffffffffffff161461146a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114619061381d565b60405180910390fd5b6114746000612268565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114a8611c82565b73ffffffffffffffffffffffffffffffffffffffff166114c6611476565b73ffffffffffffffffffffffffffffffffffffffff161461151c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115139061381d565b60405180910390fd5b80600f8190555050565b60606001805461153590613b8c565b80601f016020809104026020016040519081016040528092919081815260200182805461156190613b8c565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b5050505050905090565b6115c0611c82565b73ffffffffffffffffffffffffffffffffffffffff166115de611476565b73ffffffffffffffffffffffffffffffffffffffff1614611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b9061381d565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b611659611c82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be9061373d565b60405180910390fd5b80600560006116d4611c82565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611781611c82565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117c69190613660565b60405180910390a35050565b6117e36117dd611c82565b83611daf565b611822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118199061389d565b60405180910390fd5b61182e8484848461232e565b50505050565b600c805461184190613b8c565b80601f016020809104026020016040519081016040528092919081815260200182805461186d90613b8c565b80156118ba5780601f1061188f576101008083540402835291602001916118ba565b820191906000526020600020905b81548152906001019060200180831161189d57829003601f168201915b505050505081565b60606118cd82611c8a565b61190c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119039061385d565b60405180910390fd5b600061191661238a565b90506000815111611936576040518060200160405280600081525061195d565b80600d600c60405160200161194d93929190613591565b6040516020818303038152906040525b915050919050565b60105481565b611973611c82565b73ffffffffffffffffffffffffffffffffffffffff16611991611476565b73ffffffffffffffffffffffffffffffffffffffff16146119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de9061381d565b60405180910390fd5b80600c90805190602001906119fd929190612c78565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a9d611c82565b73ffffffffffffffffffffffffffffffffffffffff16611abb611476565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b089061381d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906136dd565b60405180910390fd5b611b8a81612268565b50565b601160019054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c6b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c7b5750611c7a8261241c565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d69836111f6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611dba82611c8a565b611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df09061375d565b60405180910390fd5b6000611e04836111f6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e7357508373ffffffffffffffffffffffffffffffffffffffff16611e5b84610a3f565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e845750611e838185611a01565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ead826111f6565b73ffffffffffffffffffffffffffffffffffffffff1614611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa9061383d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a9061371d565b60405180910390fd5b611f7e838383612486565b611f89600082611cf6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fd99190613aa2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120309190613a1b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60606000821415612131576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612245565b600082905060005b6000821461216357808061214c90613bef565b915050600a8261215c9190613a71565b9150612139565b60008167ffffffffffffffff81111561217f5761217e613d54565b5b6040519080825280601f01601f1916602001820160405280156121b15781602001600182028036833780820191505090505b5090505b6000851461223e576001826121ca9190613aa2565b9150600a856121d99190613c38565b60306121e59190613a1b565b60f81b8183815181106121fb576121fa613d25565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122379190613a71565b94506121b5565b8093505050505b919050565b61226482826040518060200160405280600081525061259a565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612339848484611e8d565b612345848484846125f5565b612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b906136bd565b60405180910390fd5b50505050565b6060600b805461239990613b8c565b80601f01602080910402602001604051908101604052809291908181526020018280546123c590613b8c565b80156124125780601f106123e757610100808354040283529160200191612412565b820191906000526020600020905b8154815290600101906020018083116123f557829003601f168201915b5050505050905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61249183838361278c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124d4576124cf81612791565b612513565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125125761251183826127da565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125565761255181612947565b612595565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612594576125938282612a18565b5b5b505050565b6125a48383612a97565b6125b160008484846125f5565b6125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e7906136bd565b60405180910390fd5b505050565b60006126168473ffffffffffffffffffffffffffffffffffffffff16612c65565b1561277f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261263f611c82565b8786866040518563ffffffff1660e01b815260040161266194939291906135f2565b602060405180830381600087803b15801561267b57600080fd5b505af19250505080156126ac57506040513d601f19601f820116820180604052508101906126a99190613081565b60015b61272f573d80600081146126dc576040519150601f19603f3d011682016040523d82523d6000602084013e6126e1565b606091505b50600081511415612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e906136bd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612784565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016127e784611336565b6127f19190613aa2565b90506000600760008481526020019081526020016000205490508181146128d6576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061295b9190613aa2565b905060006009600084815260200190815260200160002054905060006008838154811061298b5761298a613d25565b5b9060005260206000200154905080600883815481106129ad576129ac613d25565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806129fc576129fb613cf6565b5b6001900381819060005260206000200160009055905550505050565b6000612a2383611336565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afe906137dd565b60405180910390fd5b612b1081611c8a565b15612b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b47906136fd565b60405180910390fd5b612b5c60008383612486565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bac9190613a1b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612c8490613b8c565b90600052602060002090601f016020900481019282612ca65760008555612ced565b82601f10612cbf57805160ff1916838001178555612ced565b82800160010185558215612ced579182015b82811115612cec578251825591602001919060010190612cd1565b5b509050612cfa9190612cfe565b5090565b5b80821115612d17576000816000905550600101612cff565b5090565b6000612d2e612d298461391d565b6138f8565b905082815260208101848484011115612d4a57612d49613d88565b5b612d55848285613b4a565b509392505050565b6000612d70612d6b8461394e565b6138f8565b905082815260208101848484011115612d8c57612d8b613d88565b5b612d97848285613b4a565b509392505050565b600081359050612dae816142a1565b92915050565b600081359050612dc3816142b8565b92915050565b600081359050612dd8816142cf565b92915050565b600081519050612ded816142cf565b92915050565b600082601f830112612e0857612e07613d83565b5b8135612e18848260208601612d1b565b91505092915050565b600082601f830112612e3657612e35613d83565b5b8135612e46848260208601612d5d565b91505092915050565b600081359050612e5e816142e6565b92915050565b600060208284031215612e7a57612e79613d92565b5b6000612e8884828501612d9f565b91505092915050565b60008060408385031215612ea857612ea7613d92565b5b6000612eb685828601612d9f565b9250506020612ec785828601612d9f565b9150509250929050565b600080600060608486031215612eea57612ee9613d92565b5b6000612ef886828701612d9f565b9350506020612f0986828701612d9f565b9250506040612f1a86828701612e4f565b9150509250925092565b60008060008060808587031215612f3e57612f3d613d92565b5b6000612f4c87828801612d9f565b9450506020612f5d87828801612d9f565b9350506040612f6e87828801612e4f565b925050606085013567ffffffffffffffff811115612f8f57612f8e613d8d565b5b612f9b87828801612df3565b91505092959194509250565b60008060408385031215612fbe57612fbd613d92565b5b6000612fcc85828601612d9f565b9250506020612fdd85828601612db4565b9150509250929050565b60008060408385031215612ffe57612ffd613d92565b5b600061300c85828601612d9f565b925050602061301d85828601612e4f565b9150509250929050565b60006020828403121561303d5761303c613d92565b5b600061304b84828501612db4565b91505092915050565b60006020828403121561306a57613069613d92565b5b600061307884828501612dc9565b91505092915050565b60006020828403121561309757613096613d92565b5b60006130a584828501612dde565b91505092915050565b6000602082840312156130c4576130c3613d92565b5b600082013567ffffffffffffffff8111156130e2576130e1613d8d565b5b6130ee84828501612e21565b91505092915050565b60006020828403121561310d5761310c613d92565b5b600061311b84828501612e4f565b91505092915050565b60006131308383613573565b60208301905092915050565b61314581613ad6565b82525050565b6000613156826139a4565b61316081856139d2565b935061316b8361397f565b8060005b8381101561319c5781516131838882613124565b975061318e836139c5565b92505060018101905061316f565b5085935050505092915050565b6131b281613ae8565b82525050565b60006131c3826139af565b6131cd81856139e3565b93506131dd818560208601613b59565b6131e681613d97565b840191505092915050565b60006131fc826139ba565b61320681856139ff565b9350613216818560208601613b59565b61321f81613d97565b840191505092915050565b6000613235826139ba565b61323f8185613a10565b935061324f818560208601613b59565b80840191505092915050565b6000815461326881613b8c565b6132728186613a10565b9450600182166000811461328d576001811461329e576132d1565b60ff198316865281860193506132d1565b6132a78561398f565b60005b838110156132c9578154818901526001820191506020810190506132aa565b838801955050505b50505092915050565b60006132e7602b836139ff565b91506132f282613da8565b604082019050919050565b600061330a6032836139ff565b915061331582613df7565b604082019050919050565b600061332d6026836139ff565b915061333882613e46565b604082019050919050565b6000613350601c836139ff565b915061335b82613e95565b602082019050919050565b60006133736024836139ff565b915061337e82613ebe565b604082019050919050565b60006133966019836139ff565b91506133a182613f0d565b602082019050919050565b60006133b9602c836139ff565b91506133c482613f36565b604082019050919050565b60006133dc6038836139ff565b91506133e782613f85565b604082019050919050565b60006133ff602a836139ff565b915061340a82613fd4565b604082019050919050565b60006134226029836139ff565b915061342d82614023565b604082019050919050565b60006134456020836139ff565b915061345082614072565b602082019050919050565b6000613468602c836139ff565b91506134738261409b565b604082019050919050565b600061348b6020836139ff565b9150613496826140ea565b602082019050919050565b60006134ae6029836139ff565b91506134b982614113565b604082019050919050565b60006134d1602f836139ff565b91506134dc82614162565b604082019050919050565b60006134f46021836139ff565b91506134ff826141b1565b604082019050919050565b60006135176000836139f4565b915061352282614200565b600082019050919050565b600061353a6031836139ff565b915061354582614203565b604082019050919050565b600061355d602c836139ff565b915061356882614252565b604082019050919050565b61357c81613b40565b82525050565b61358b81613b40565b82525050565b600061359d828661322a565b91506135a9828561325b565b91506135b5828461325b565b9150819050949350505050565b60006135cd8261350a565b9150819050919050565b60006020820190506135ec600083018461313c565b92915050565b6000608082019050613607600083018761313c565b613614602083018661313c565b6136216040830185613582565b818103606083015261363381846131b8565b905095945050505050565b60006020820190508181036000830152613658818461314b565b905092915050565b600060208201905061367560008301846131a9565b92915050565b6000602082019050818103600083015261369581846131f1565b905092915050565b600060208201905081810360008301526136b6816132da565b9050919050565b600060208201905081810360008301526136d6816132fd565b9050919050565b600060208201905081810360008301526136f681613320565b9050919050565b6000602082019050818103600083015261371681613343565b9050919050565b6000602082019050818103600083015261373681613366565b9050919050565b6000602082019050818103600083015261375681613389565b9050919050565b60006020820190508181036000830152613776816133ac565b9050919050565b60006020820190508181036000830152613796816133cf565b9050919050565b600060208201905081810360008301526137b6816133f2565b9050919050565b600060208201905081810360008301526137d681613415565b9050919050565b600060208201905081810360008301526137f681613438565b9050919050565b600060208201905081810360008301526138168161345b565b9050919050565b600060208201905081810360008301526138368161347e565b9050919050565b60006020820190508181036000830152613856816134a1565b9050919050565b60006020820190508181036000830152613876816134c4565b9050919050565b60006020820190508181036000830152613896816134e7565b9050919050565b600060208201905081810360008301526138b68161352d565b9050919050565b600060208201905081810360008301526138d681613550565b9050919050565b60006020820190506138f26000830184613582565b92915050565b6000613902613913565b905061390e8282613bbe565b919050565b6000604051905090565b600067ffffffffffffffff82111561393857613937613d54565b5b61394182613d97565b9050602081019050919050565b600067ffffffffffffffff82111561396957613968613d54565b5b61397282613d97565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a2682613b40565b9150613a3183613b40565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a6657613a65613c69565b5b828201905092915050565b6000613a7c82613b40565b9150613a8783613b40565b925082613a9757613a96613c98565b5b828204905092915050565b6000613aad82613b40565b9150613ab883613b40565b925082821015613acb57613aca613c69565b5b828203905092915050565b6000613ae182613b20565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613b77578082015181840152602081019050613b5c565b83811115613b86576000848401525b50505050565b60006002820490506001821680613ba457607f821691505b60208210811415613bb857613bb7613cc7565b5b50919050565b613bc782613d97565b810181811067ffffffffffffffff82111715613be657613be5613d54565b5b80604052505050565b6000613bfa82613b40565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c2d57613c2c613c69565b5b600182019050919050565b6000613c4382613b40565b9150613c4e83613b40565b925082613c5e57613c5d613c98565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6142aa81613ad6565b81146142b557600080fd5b50565b6142c181613ae8565b81146142cc57600080fd5b50565b6142d881613af4565b81146142e357600080fd5b50565b6142ef81613b40565b81146142fa57600080fd5b5056fea26469706673582212203cb1770c943de2b2d4209229d6b0e95a226aba8ad2ad0e0bd94b6f8f1463cc3c64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000005446162627500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034442540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f64616262752e6d7970696e6174612e636c6f75642f697066732f516d515933466e66437854474b4b7868365477575751385146514452713337446b6a5a65795757564b614e32666e2f000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061021a5760003560e01c80635b61952a116101235780639e438e06116100ab578063d5abeb011161006f578063d5abeb01146107b5578063da3ef23f146107e0578063e985e9c514610809578063f2fde38b14610846578063fdea8e0b1461086f5761021a565b80639e438e06146106d2578063a22cb465146106fb578063b88d4fde14610724578063c66828621461074d578063c87b56dd146107785761021a565b806370a08231116100f257806370a08231146105ff578063715018a61461063c5780638da5cb5b146106535780638fdcf9421461067e57806395d89b41146106a75761021a565b80635b61952a146105435780635c975abb1461056c5780636352211e146105975780636c0360eb146105d45761021a565b80632a23d07d116101a657806342842e0e1161017557806342842e0e1461044e578063438b63001461047757806344a0d68a146104b45780634f6ccce7146104dd57806355f804b31461051a5761021a565b80632a23d07d146103c05780632f745c59146103eb5780633ccfd60b1461042857806340c10f19146104325761021a565b8063095ea7b3116101ed578063095ea7b3146102ed57806313faede61461031657806318160ddd146103415780632004ffd91461036c57806323b872dd146103975761021a565b806301ffc9a71461021f57806302329a291461025c57806306fdde0314610285578063081812fc146102b0575b600080fd5b34801561022b57600080fd5b5061024660048036038101906102419190613054565b61089a565b6040516102539190613660565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613027565b610914565b005b34801561029157600080fd5b5061029a6109ad565b6040516102a7919061367b565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d291906130f7565b610a3f565b6040516102e491906135d7565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190612fe7565b610ac4565b005b34801561032257600080fd5b5061032b610bdc565b60405161033891906138dd565b60405180910390f35b34801561034d57600080fd5b50610356610be2565b60405161036391906138dd565b60405180910390f35b34801561037857600080fd5b50610381610bef565b60405161038e919061367b565b60405180910390f35b3480156103a357600080fd5b506103be60048036038101906103b99190612ed1565b610c7d565b005b3480156103cc57600080fd5b506103d5610cdd565b6040516103e291906138dd565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190612fe7565b610ce3565b60405161041f91906138dd565b60405180910390f35b610430610d88565b005b61044c60048036038101906104479190612fe7565b610e7d565b005b34801561045a57600080fd5b5061047560048036038101906104709190612ed1565b610f6e565b005b34801561048357600080fd5b5061049e60048036038101906104999190612e64565b610f8e565b6040516104ab919061363e565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906130f7565b61103c565b005b3480156104e957600080fd5b5061050460048036038101906104ff91906130f7565b6110c2565b60405161051191906138dd565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906130ae565b611133565b005b34801561054f57600080fd5b5061056a600480360381019061056591906130ae565b6111c9565b005b34801561057857600080fd5b506105816111e3565b60405161058e9190613660565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906130f7565b6111f6565b6040516105cb91906135d7565b60405180910390f35b3480156105e057600080fd5b506105e96112a8565b6040516105f6919061367b565b60405180910390f35b34801561060b57600080fd5b5061062660048036038101906106219190612e64565b611336565b60405161063391906138dd565b60405180910390f35b34801561064857600080fd5b506106516113ee565b005b34801561065f57600080fd5b50610668611476565b60405161067591906135d7565b60405180910390f35b34801561068a57600080fd5b506106a560048036038101906106a091906130f7565b6114a0565b005b3480156106b357600080fd5b506106bc611526565b6040516106c9919061367b565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f49190613027565b6115b8565b005b34801561070757600080fd5b50610722600480360381019061071d9190612fa7565b611651565b005b34801561073057600080fd5b5061074b60048036038101906107469190612f24565b6117d2565b005b34801561075957600080fd5b50610762611834565b60405161076f919061367b565b60405180910390f35b34801561078457600080fd5b5061079f600480360381019061079a91906130f7565b6118c2565b6040516107ac919061367b565b60405180910390f35b3480156107c157600080fd5b506107ca611965565b6040516107d791906138dd565b60405180910390f35b3480156107ec57600080fd5b50610807600480360381019061080291906130ae565b61196b565b005b34801561081557600080fd5b50610830600480360381019061082b9190612e91565b611a01565b60405161083d9190613660565b60405180910390f35b34801561085257600080fd5b5061086d60048036038101906108689190612e64565b611a95565b005b34801561087b57600080fd5b50610884611b8d565b6040516108919190613660565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061090d575061090c82611ba0565b5b9050919050565b61091c611c82565b73ffffffffffffffffffffffffffffffffffffffff1661093a611476565b73ffffffffffffffffffffffffffffffffffffffff1614610990576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109879061381d565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b6060600080546109bc90613b8c565b80601f01602080910402602001604051908101604052809291908181526020018280546109e890613b8c565b8015610a355780601f10610a0a57610100808354040283529160200191610a35565b820191906000526020600020905b815481529060010190602001808311610a1857829003601f168201915b5050505050905090565b6000610a4a82611c8a565b610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a80906137fd565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610acf826111f6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b379061387d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5f611c82565b73ffffffffffffffffffffffffffffffffffffffff161480610b8e5750610b8d81610b88611c82565b611a01565b5b610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc49061377d565b60405180910390fd5b610bd78383611cf6565b505050565b600e5481565b6000600880549050905090565b600d8054610bfc90613b8c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2890613b8c565b8015610c755780601f10610c4a57610100808354040283529160200191610c75565b820191906000526020600020905b815481529060010190602001808311610c5857829003601f168201915b505050505081565b610c8e610c88611c82565b82611daf565b610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc49061389d565b60405180910390fd5b610cd8838383611e8d565b505050565b600f5481565b6000610cee83611336565b8210610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d269061369d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d90611c82565b73ffffffffffffffffffffffffffffffffffffffff16610dae611476565b73ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061381d565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610e2a906135c2565b60006040518083038185875af1925050503d8060008114610e67576040519150601f19603f3d011682016040523d82523d6000602084013e610e6c565b606091505b5050905080610e7a57600080fd5b50565b601160009054906101000a900460ff1615610e9757600080fd5b6000610ea1610be2565b905060008211610eb057600080fd5b601054600182610ec09190613a1b565b1115610ecb57600080fd5b601054821115610eda57600080fd5b610ee2611476565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4e57601160019054906101000a900460ff1615610f3d57600f54341015610f3857600080fd5b610f4d565b600e54341015610f4c57600080fd5b5b5b610f5f610f5a836120e9565b6111c9565b610f69838361224a565b505050565b610f89838383604051806020016040528060008152506117d2565b505050565b60606000610f9b83611336565b905060008167ffffffffffffffff811115610fb957610fb8613d54565b5b604051908082528060200260200182016040528015610fe75781602001602082028036833780820191505090505b50905060005b8281101561103157610fff8582610ce3565b82828151811061101257611011613d25565b5b602002602001018181525050808061102990613bef565b915050610fed565b508092505050919050565b611044611c82565b73ffffffffffffffffffffffffffffffffffffffff16611062611476565b73ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af9061381d565b60405180910390fd5b80600e8190555050565b60006110cc610be2565b821061110d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611104906138bd565b60405180910390fd5b6008828154811061112157611120613d25565b5b90600052602060002001549050919050565b61113b611c82565b73ffffffffffffffffffffffffffffffffffffffff16611159611476565b73ffffffffffffffffffffffffffffffffffffffff16146111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a69061381d565b60405180910390fd5b80600b90805190602001906111c5929190612c78565b5050565b80600d90805190602001906111df929190612c78565b5050565b601160009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561129f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611296906137bd565b60405180910390fd5b80915050919050565b600b80546112b590613b8c565b80601f01602080910402602001604051908101604052809291908181526020018280546112e190613b8c565b801561132e5780601f106113035761010080835404028352916020019161132e565b820191906000526020600020905b81548152906001019060200180831161131157829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061379d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113f6611c82565b73ffffffffffffffffffffffffffffffffffffffff16611414611476565b73ffffffffffffffffffffffffffffffffffffffff161461146a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114619061381d565b60405180910390fd5b6114746000612268565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114a8611c82565b73ffffffffffffffffffffffffffffffffffffffff166114c6611476565b73ffffffffffffffffffffffffffffffffffffffff161461151c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115139061381d565b60405180910390fd5b80600f8190555050565b60606001805461153590613b8c565b80601f016020809104026020016040519081016040528092919081815260200182805461156190613b8c565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b5050505050905090565b6115c0611c82565b73ffffffffffffffffffffffffffffffffffffffff166115de611476565b73ffffffffffffffffffffffffffffffffffffffff1614611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b9061381d565b60405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b611659611c82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be9061373d565b60405180910390fd5b80600560006116d4611c82565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611781611c82565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117c69190613660565b60405180910390a35050565b6117e36117dd611c82565b83611daf565b611822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118199061389d565b60405180910390fd5b61182e8484848461232e565b50505050565b600c805461184190613b8c565b80601f016020809104026020016040519081016040528092919081815260200182805461186d90613b8c565b80156118ba5780601f1061188f576101008083540402835291602001916118ba565b820191906000526020600020905b81548152906001019060200180831161189d57829003601f168201915b505050505081565b60606118cd82611c8a565b61190c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119039061385d565b60405180910390fd5b600061191661238a565b90506000815111611936576040518060200160405280600081525061195d565b80600d600c60405160200161194d93929190613591565b6040516020818303038152906040525b915050919050565b60105481565b611973611c82565b73ffffffffffffffffffffffffffffffffffffffff16611991611476565b73ffffffffffffffffffffffffffffffffffffffff16146119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de9061381d565b60405180910390fd5b80600c90805190602001906119fd929190612c78565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a9d611c82565b73ffffffffffffffffffffffffffffffffffffffff16611abb611476565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b089061381d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906136dd565b60405180910390fd5b611b8a81612268565b50565b601160019054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c6b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c7b5750611c7a8261241c565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611d69836111f6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611dba82611c8a565b611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df09061375d565b60405180910390fd5b6000611e04836111f6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e7357508373ffffffffffffffffffffffffffffffffffffffff16611e5b84610a3f565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e845750611e838185611a01565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ead826111f6565b73ffffffffffffffffffffffffffffffffffffffff1614611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa9061383d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a9061371d565b60405180910390fd5b611f7e838383612486565b611f89600082611cf6565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fd99190613aa2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120309190613a1b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60606000821415612131576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612245565b600082905060005b6000821461216357808061214c90613bef565b915050600a8261215c9190613a71565b9150612139565b60008167ffffffffffffffff81111561217f5761217e613d54565b5b6040519080825280601f01601f1916602001820160405280156121b15781602001600182028036833780820191505090505b5090505b6000851461223e576001826121ca9190613aa2565b9150600a856121d99190613c38565b60306121e59190613a1b565b60f81b8183815181106121fb576121fa613d25565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122379190613a71565b94506121b5565b8093505050505b919050565b61226482826040518060200160405280600081525061259a565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612339848484611e8d565b612345848484846125f5565b612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b906136bd565b60405180910390fd5b50505050565b6060600b805461239990613b8c565b80601f01602080910402602001604051908101604052809291908181526020018280546123c590613b8c565b80156124125780601f106123e757610100808354040283529160200191612412565b820191906000526020600020905b8154815290600101906020018083116123f557829003601f168201915b5050505050905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61249183838361278c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124d4576124cf81612791565b612513565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125125761251183826127da565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125565761255181612947565b612595565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612594576125938282612a18565b5b5b505050565b6125a48383612a97565b6125b160008484846125f5565b6125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e7906136bd565b60405180910390fd5b505050565b60006126168473ffffffffffffffffffffffffffffffffffffffff16612c65565b1561277f578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261263f611c82565b8786866040518563ffffffff1660e01b815260040161266194939291906135f2565b602060405180830381600087803b15801561267b57600080fd5b505af19250505080156126ac57506040513d601f19601f820116820180604052508101906126a99190613081565b60015b61272f573d80600081146126dc576040519150601f19603f3d011682016040523d82523d6000602084013e6126e1565b606091505b50600081511415612727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271e906136bd565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612784565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016127e784611336565b6127f19190613aa2565b90506000600760008481526020019081526020016000205490508181146128d6576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061295b9190613aa2565b905060006009600084815260200190815260200160002054905060006008838154811061298b5761298a613d25565b5b9060005260206000200154905080600883815481106129ad576129ac613d25565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806129fc576129fb613cf6565b5b6001900381819060005260206000200160009055905550505050565b6000612a2383611336565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afe906137dd565b60405180910390fd5b612b1081611c8a565b15612b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b47906136fd565b60405180910390fd5b612b5c60008383612486565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bac9190613a1b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612c8490613b8c565b90600052602060002090601f016020900481019282612ca65760008555612ced565b82601f10612cbf57805160ff1916838001178555612ced565b82800160010185558215612ced579182015b82811115612cec578251825591602001919060010190612cd1565b5b509050612cfa9190612cfe565b5090565b5b80821115612d17576000816000905550600101612cff565b5090565b6000612d2e612d298461391d565b6138f8565b905082815260208101848484011115612d4a57612d49613d88565b5b612d55848285613b4a565b509392505050565b6000612d70612d6b8461394e565b6138f8565b905082815260208101848484011115612d8c57612d8b613d88565b5b612d97848285613b4a565b509392505050565b600081359050612dae816142a1565b92915050565b600081359050612dc3816142b8565b92915050565b600081359050612dd8816142cf565b92915050565b600081519050612ded816142cf565b92915050565b600082601f830112612e0857612e07613d83565b5b8135612e18848260208601612d1b565b91505092915050565b600082601f830112612e3657612e35613d83565b5b8135612e46848260208601612d5d565b91505092915050565b600081359050612e5e816142e6565b92915050565b600060208284031215612e7a57612e79613d92565b5b6000612e8884828501612d9f565b91505092915050565b60008060408385031215612ea857612ea7613d92565b5b6000612eb685828601612d9f565b9250506020612ec785828601612d9f565b9150509250929050565b600080600060608486031215612eea57612ee9613d92565b5b6000612ef886828701612d9f565b9350506020612f0986828701612d9f565b9250506040612f1a86828701612e4f565b9150509250925092565b60008060008060808587031215612f3e57612f3d613d92565b5b6000612f4c87828801612d9f565b9450506020612f5d87828801612d9f565b9350506040612f6e87828801612e4f565b925050606085013567ffffffffffffffff811115612f8f57612f8e613d8d565b5b612f9b87828801612df3565b91505092959194509250565b60008060408385031215612fbe57612fbd613d92565b5b6000612fcc85828601612d9f565b9250506020612fdd85828601612db4565b9150509250929050565b60008060408385031215612ffe57612ffd613d92565b5b600061300c85828601612d9f565b925050602061301d85828601612e4f565b9150509250929050565b60006020828403121561303d5761303c613d92565b5b600061304b84828501612db4565b91505092915050565b60006020828403121561306a57613069613d92565b5b600061307884828501612dc9565b91505092915050565b60006020828403121561309757613096613d92565b5b60006130a584828501612dde565b91505092915050565b6000602082840312156130c4576130c3613d92565b5b600082013567ffffffffffffffff8111156130e2576130e1613d8d565b5b6130ee84828501612e21565b91505092915050565b60006020828403121561310d5761310c613d92565b5b600061311b84828501612e4f565b91505092915050565b60006131308383613573565b60208301905092915050565b61314581613ad6565b82525050565b6000613156826139a4565b61316081856139d2565b935061316b8361397f565b8060005b8381101561319c5781516131838882613124565b975061318e836139c5565b92505060018101905061316f565b5085935050505092915050565b6131b281613ae8565b82525050565b60006131c3826139af565b6131cd81856139e3565b93506131dd818560208601613b59565b6131e681613d97565b840191505092915050565b60006131fc826139ba565b61320681856139ff565b9350613216818560208601613b59565b61321f81613d97565b840191505092915050565b6000613235826139ba565b61323f8185613a10565b935061324f818560208601613b59565b80840191505092915050565b6000815461326881613b8c565b6132728186613a10565b9450600182166000811461328d576001811461329e576132d1565b60ff198316865281860193506132d1565b6132a78561398f565b60005b838110156132c9578154818901526001820191506020810190506132aa565b838801955050505b50505092915050565b60006132e7602b836139ff565b91506132f282613da8565b604082019050919050565b600061330a6032836139ff565b915061331582613df7565b604082019050919050565b600061332d6026836139ff565b915061333882613e46565b604082019050919050565b6000613350601c836139ff565b915061335b82613e95565b602082019050919050565b60006133736024836139ff565b915061337e82613ebe565b604082019050919050565b60006133966019836139ff565b91506133a182613f0d565b602082019050919050565b60006133b9602c836139ff565b91506133c482613f36565b604082019050919050565b60006133dc6038836139ff565b91506133e782613f85565b604082019050919050565b60006133ff602a836139ff565b915061340a82613fd4565b604082019050919050565b60006134226029836139ff565b915061342d82614023565b604082019050919050565b60006134456020836139ff565b915061345082614072565b602082019050919050565b6000613468602c836139ff565b91506134738261409b565b604082019050919050565b600061348b6020836139ff565b9150613496826140ea565b602082019050919050565b60006134ae6029836139ff565b91506134b982614113565b604082019050919050565b60006134d1602f836139ff565b91506134dc82614162565b604082019050919050565b60006134f46021836139ff565b91506134ff826141b1565b604082019050919050565b60006135176000836139f4565b915061352282614200565b600082019050919050565b600061353a6031836139ff565b915061354582614203565b604082019050919050565b600061355d602c836139ff565b915061356882614252565b604082019050919050565b61357c81613b40565b82525050565b61358b81613b40565b82525050565b600061359d828661322a565b91506135a9828561325b565b91506135b5828461325b565b9150819050949350505050565b60006135cd8261350a565b9150819050919050565b60006020820190506135ec600083018461313c565b92915050565b6000608082019050613607600083018761313c565b613614602083018661313c565b6136216040830185613582565b818103606083015261363381846131b8565b905095945050505050565b60006020820190508181036000830152613658818461314b565b905092915050565b600060208201905061367560008301846131a9565b92915050565b6000602082019050818103600083015261369581846131f1565b905092915050565b600060208201905081810360008301526136b6816132da565b9050919050565b600060208201905081810360008301526136d6816132fd565b9050919050565b600060208201905081810360008301526136f681613320565b9050919050565b6000602082019050818103600083015261371681613343565b9050919050565b6000602082019050818103600083015261373681613366565b9050919050565b6000602082019050818103600083015261375681613389565b9050919050565b60006020820190508181036000830152613776816133ac565b9050919050565b60006020820190508181036000830152613796816133cf565b9050919050565b600060208201905081810360008301526137b6816133f2565b9050919050565b600060208201905081810360008301526137d681613415565b9050919050565b600060208201905081810360008301526137f681613438565b9050919050565b600060208201905081810360008301526138168161345b565b9050919050565b600060208201905081810360008301526138368161347e565b9050919050565b60006020820190508181036000830152613856816134a1565b9050919050565b60006020820190508181036000830152613876816134c4565b9050919050565b60006020820190508181036000830152613896816134e7565b9050919050565b600060208201905081810360008301526138b68161352d565b9050919050565b600060208201905081810360008301526138d681613550565b9050919050565b60006020820190506138f26000830184613582565b92915050565b6000613902613913565b905061390e8282613bbe565b919050565b6000604051905090565b600067ffffffffffffffff82111561393857613937613d54565b5b61394182613d97565b9050602081019050919050565b600067ffffffffffffffff82111561396957613968613d54565b5b61397282613d97565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a2682613b40565b9150613a3183613b40565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a6657613a65613c69565b5b828201905092915050565b6000613a7c82613b40565b9150613a8783613b40565b925082613a9757613a96613c98565b5b828204905092915050565b6000613aad82613b40565b9150613ab883613b40565b925082821015613acb57613aca613c69565b5b828203905092915050565b6000613ae182613b20565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613b77578082015181840152602081019050613b5c565b83811115613b86576000848401525b50505050565b60006002820490506001821680613ba457607f821691505b60208210811415613bb857613bb7613cc7565b5b50919050565b613bc782613d97565b810181811067ffffffffffffffff82111715613be657613be5613d54565b5b80604052505050565b6000613bfa82613b40565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c2d57613c2c613c69565b5b600182019050919050565b6000613c4382613b40565b9150613c4e83613b40565b925082613c5e57613c5d613c98565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6142aa81613ad6565b81146142b557600080fd5b50565b6142c181613ae8565b81146142cc57600080fd5b50565b6142d881613af4565b81146142e357600080fd5b50565b6142ef81613b40565b81146142fa57600080fd5b5056fea26469706673582212203cb1770c943de2b2d4209229d6b0e95a226aba8ad2ad0e0bd94b6f8f1463cc3c64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000005446162627500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034442540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f64616262752e6d7970696e6174612e636c6f75642f697066732f516d515933466e66437854474b4b7868365477575751385146514452713337446b6a5a65795757564b614e32666e2f000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Dabbu
Arg [1] : _symbol (string): DBT
Arg [2] : _initBaseURI (string): https://dabbu.mypinata.cloud/ipfs/QmQY3FnfCxTGKKxh6TwWWQ8QFQDRq37DkjZeyWWVKaN2fn/
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [4] : 4461626275000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 4442540000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [8] : 68747470733a2f2f64616262752e6d7970696e6174612e636c6f75642f697066
Arg [9] : 732f516d515933466e66437854474b4b78683654775757513851465144527133
Arg [10] : 37446b6a5a65795757564b614e32666e2f000000000000000000000000000000
Deployed Bytecode Sourcemap
122:3380:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;937:300:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3123:79:12;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:100:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4343:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3866:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;321:32:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1740:113:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;285:29:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5402:376:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;360:39:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1321:343:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3305:192:12;;;:::i;:::-;;853:643;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5849:185:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1504:390:12;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2546:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1930:320:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2748:104:12;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2860:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;444:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2257:326:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;213:21:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1900:295:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1675:94:10;;;;;;;;;;;;;:::i;:::-;;1024:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2640:100:12;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2819:104:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:87:12;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4723:327:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6105:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;241:37:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1904:616;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;406:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2964:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5121:214:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1924:229:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;477:27:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;937:300:4;1084:4;1141:35;1126:50;;;:11;:50;;;;:103;;;;1193:36;1217:11;1193:23;:36::i;:::-;1126:103;1106:123;;937:300;;;:::o;3123:79:12:-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3188:6:12::1;3179;;:15;;;;;;;;;;;;;;;;;;3123:79:::0;:::o;2650:100:3:-;2704:13;2737:5;2730:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:100;:::o;4343:308::-;4464:7;4511:16;4519:7;4511;:16::i;:::-;4489:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4619:15;:24;4635:7;4619:24;;;;;;;;;;;;;;;;;;;;;4612:31;;4343:308;;;:::o;3866:411::-;3947:13;3963:23;3978:7;3963:14;:23::i;:::-;3947:39;;4011:5;4005:11;;:2;:11;;;;3997:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4105:5;4089:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4114:37;4131:5;4138:12;:10;:12::i;:::-;4114:16;:37::i;:::-;4089:62;4067:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;4248:21;4257:2;4261:7;4248:8;:21::i;:::-;3936:341;3866:411;;:::o;321:32:12:-;;;;:::o;1740:113:4:-;1801:7;1828:10;:17;;;;1821:24;;1740:113;:::o;285:29:12:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5402:376:3:-;5611:41;5630:12;:10;:12::i;:::-;5644:7;5611:18;:41::i;:::-;5589:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;5742:28;5752:4;5758:2;5762:7;5742:9;:28::i;:::-;5402:376;;;:::o;360:39:12:-;;;;:::o;1321:343:4:-;1463:7;1518:23;1535:5;1518:16;:23::i;:::-;1510:5;:31;1488:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;1630:12;:19;1643:5;1630:19;;;;;;;;;;;;;;;:26;1650:5;1630:26;;;;;;;;;;;;1623:33;;1321:343;;;;:::o;3305:192:12:-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3362:12:12::1;3388:10;3380:24;;3426:21;3380:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3361:101;;;3481:7;3473:16;;;::::0;::::1;;3350:147;3305:192::o:0;853:643::-;935:6;;;;;;;;;;;934:7;926:16;;;;;;953:14;970:13;:11;:13::i;:::-;953:30;;1015:1;1002:10;:14;994:23;;;;;;1050:9;;1045:1;1036:6;:10;;;;:::i;:::-;:23;;1028:32;;;;;;1093:9;;1079:10;:23;;1071:32;;;;;;1132:7;:5;:7::i;:::-;1118:21;;:10;:21;;;1114:280;;1160:7;;;;;;;;;;;1156:227;;;1243:11;;1230:9;:24;;1222:33;;;;;;1156:227;;;1360:4;;1347:9;:17;;1339:26;;;;;;1156:227;1114:280;1406:35;1419:21;:10;:19;:21::i;:::-;1406:12;:35::i;:::-;1452:26;1462:3;1467:10;1452:9;:26::i;:::-;915:581;853:643;;:::o;5849:185:3:-;5987:39;6004:4;6010:2;6014:7;5987:39;;;;;;;;;;;;:16;:39::i;:::-;5849:185;;;:::o;1504:390:12:-;1591:16;1625:23;1651:17;1661:6;1651:9;:17::i;:::-;1625:43;;1679:25;1721:15;1707:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1679:58;;1753:9;1748:113;1768:15;1764:1;:19;1748:113;;;1819:30;1839:6;1847:1;1819:19;:30::i;:::-;1805:8;1814:1;1805:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;1785:3;;;;;:::i;:::-;;;;1748:113;;;;1878:8;1871:15;;;;1504:390;;;:::o;2546:86::-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2616:8:12::1;2609:4;:15;;;;2546:86:::0;:::o;1930:320:4:-;2050:7;2105:30;:28;:30::i;:::-;2097:5;:38;2075:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;2225:10;2236:5;2225:17;;;;;;;;:::i;:::-;;;;;;;;;;2218:24;;1930:320;;;:::o;2748:104:12:-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2833:11:12::1;2823:7;:21;;;;;;;;;;;;:::i;:::-;;2748:104:::0;:::o;2860:96::-;2938:10;2926:9;:22;;;;;;;;;;;;:::i;:::-;;2860:96;:::o;444:26::-;;;;;;;;;;;;;:::o;2257:326:3:-;2374:7;2399:13;2415:7;:16;2423:7;2415:16;;;;;;;;;;;;;;;;;;;;;2399:32;;2481:1;2464:19;;:5;:19;;;;2442:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2570:5;2563:12;;;2257:326;;;:::o;213:21:12:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1900:295:3:-;2017:7;2081:1;2064:19;;:5;:19;;;;2042:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;2171:9;:16;2181:5;2171:16;;;;;;;;;;;;;;;;2164:23;;1900:295;;;:::o;1675:94:10:-;1255:12;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1740:21:::1;1758:1;1740:9;:21::i;:::-;1675:94::o:0;1024:87::-;1070:7;1097:6;;;;;;;;;;;1090:13;;1024:87;:::o;2640:100:12:-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2724:8:12::1;2710:11;:22;;;;2640:100:::0;:::o;2819:104:3:-;2875:13;2908:7;2901:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2819:104;:::o;3210:87:12:-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3283:6:12::1;3273:7;;:16;;;;;;;;;;;;;;;;;;3210:87:::0;:::o;4723:327:3:-;4870:12;:10;:12::i;:::-;4858:24;;:8;:24;;;;4850:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;4970:8;4925:18;:32;4944:12;:10;:12::i;:::-;4925:32;;;;;;;;;;;;;;;:42;4958:8;4925:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;5023:8;4994:48;;5009:12;:10;:12::i;:::-;4994:48;;;5033:8;4994:48;;;;;;:::i;:::-;;;;;;;;4723:327;;:::o;6105:365::-;6294:41;6313:12;:10;:12::i;:::-;6327:7;6294:18;:41::i;:::-;6272:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;6423:39;6437:4;6443:2;6447:7;6456:5;6423:13;:39::i;:::-;6105:365;;;;:::o;241:37:12:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1904:616::-;2005:13;2058:16;2066:7;2058;:16::i;:::-;2036:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;2162:28;2193:10;:8;:10::i;:::-;2162:41;;2265:1;2240:14;2234:28;:32;:278;;;;;;;;;;;;;;;;;2358:14;2399:9;2435:13;2315:156;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2234:278;2214:298;;;1904:616;;;:::o;406:31::-;;;;:::o;2964:151::-;1255:12:10;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3090:17:12::1;3074:13;:33;;;;;;;;;;;;:::i;:::-;;2964:151:::0;:::o;5121:214:3:-;5263:4;5292:18;:25;5311:5;5292:25;;;;;;;;;;;;;;;:35;5318:8;5292:35;;;;;;;;;;;;;;;;;;;;;;;;;5285:42;;5121:214;;;;:::o;1924:229:10:-;1255:12;:10;:12::i;:::-;1244:23;;:7;:5;:7::i;:::-;:23;;;1236:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2047:1:::1;2027:22;;:8;:22;;;;2005:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2126:19;2136:8;2126:9;:19::i;:::-;1924:229:::0;:::o;477:27:12:-;;;;;;;;;;;;;:::o;1481:355:3:-;1628:4;1685:25;1670:40;;;:11;:40;;;;:105;;;;1742:33;1727:48;;;:11;:48;;;;1670:105;:158;;;;1792:36;1816:11;1792:23;:36::i;:::-;1670:158;1650:178;;1481:355;;;:::o;602:98:1:-;655:7;682:10;675:17;;602:98;:::o;8017:127:3:-;8082:4;8134:1;8106:30;;:7;:16;8114:7;8106:16;;;;;;;;;;;;;;;;;;;;;:30;;;;8099:37;;8017:127;;;:::o;12140:174::-;12242:2;12215:15;:24;12231:7;12215:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12298:7;12294:2;12260:46;;12269:23;12284:7;12269:14;:23::i;:::-;12260:46;;;;;;;;;;;;12140:174;;:::o;8311:452::-;8440:4;8484:16;8492:7;8484;:16::i;:::-;8462:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8583:13;8599:23;8614:7;8599:14;:23::i;:::-;8583:39;;8652:5;8641:16;;:7;:16;;;:64;;;;8698:7;8674:31;;:20;8686:7;8674:11;:20::i;:::-;:31;;;8641:64;:113;;;;8722:32;8739:5;8746:7;8722:16;:32::i;:::-;8641:113;8633:122;;;8311:452;;;;:::o;11407:615::-;11580:4;11553:31;;:23;11568:7;11553:14;:23::i;:::-;:31;;;11531:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11686:1;11672:16;;:2;:16;;;;11664:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11742:39;11763:4;11769:2;11773:7;11742:20;:39::i;:::-;11846:29;11863:1;11867:7;11846:8;:29::i;:::-;11907:1;11888:9;:15;11898:4;11888:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11936:1;11919:9;:13;11929:2;11919:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11967:2;11948:7;:16;11956:7;11948:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12006:7;12002:2;11987:27;;11996:4;11987:27;;;;;;;;;;;;11407:615;;;:::o;288:723:11:-;344:13;574:1;565:5;:10;561:53;;;592:10;;;;;;;;;;;;;;;;;;;;;561:53;624:12;639:5;624:20;;655:14;680:78;695:1;687:4;:9;680:78;;713:8;;;;;:::i;:::-;;;;744:2;736:10;;;;;:::i;:::-;;;680:78;;;768:19;800:6;790:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:39;;818:154;834:1;825:5;:10;818:154;;862:1;852:11;;;;;:::i;:::-;;;929:2;921:5;:10;;;;:::i;:::-;908:2;:24;;;;:::i;:::-;895:39;;878:6;885;878:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;958:2;949:11;;;;;:::i;:::-;;;818:154;;;996:6;982:21;;;;;288:723;;;;:::o;9105:110:3:-;9181:26;9191:2;9195:7;9181:26;;;;;;;;;;;;:9;:26::i;:::-;9105:110;;:::o;2161:173:10:-;2217:16;2236:6;;;;;;;;;;;2217:25;;2262:8;2253:6;;:17;;;;;;;;;;;;;;;;;;2317:8;2286:40;;2307:8;2286:40;;;;;;;;;;;;2206:128;2161:173;:::o;7352:352:3:-;7509:28;7519:4;7525:2;7529:7;7509:9;:28::i;:::-;7570:48;7593:4;7599:2;7603:7;7612:5;7570:22;:48::i;:::-;7548:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;7352:352;;;;:::o;722:108:12:-;782:13;815:7;808:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;722:108;:::o;787:207:2:-;917:4;961:25;946:40;;;:11;:40;;;;939:47;;787:207;;;:::o;2863:589:4:-;3007:45;3034:4;3040:2;3044:7;3007:26;:45::i;:::-;3085:1;3069:18;;:4;:18;;;3065:187;;;3104:40;3136:7;3104:31;:40::i;:::-;3065:187;;;3174:2;3166:10;;:4;:10;;;3162:90;;3193:47;3226:4;3232:7;3193:32;:47::i;:::-;3162:90;3065:187;3280:1;3266:16;;:2;:16;;;3262:183;;;3299:45;3336:7;3299:36;:45::i;:::-;3262:183;;;3372:4;3366:10;;:2;:10;;;3362:83;;3393:40;3421:2;3425:7;3393:27;:40::i;:::-;3362:83;3262:183;2863:589;;;:::o;9442:321:3:-;9572:18;9578:2;9582:7;9572:5;:18::i;:::-;9623:54;9654:1;9658:2;9662:7;9671:5;9623:22;:54::i;:::-;9601:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;9442:321;;;:::o;12879:980::-;13034:4;13055:15;:2;:13;;;:15::i;:::-;13051:801;;;13124:2;13108:36;;;13167:12;:10;:12::i;:::-;13202:4;13229:7;13259:5;13108:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13087:710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13483:1;13466:6;:13;:18;13462:320;;;13509:108;;;;;;;;;;:::i;:::-;;;;;;;;13462:320;13732:6;13726:13;13717:6;13713:2;13709:15;13702:38;13087:710;13357:41;;;13347:51;;;:6;:51;;;;13340:58;;;;;13051:801;13836:4;13829:11;;12879:980;;;;;;;:::o;14431:126::-;;;;:::o;4175:164:4:-;4279:10;:17;;;;4252:15;:24;4268:7;4252:24;;;;;;;;;;;:44;;;;4307:10;4323:7;4307:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4175:164;:::o;4966:1002::-;5246:22;5296:1;5271:22;5288:4;5271:16;:22::i;:::-;:26;;;;:::i;:::-;5246:51;;5308:18;5329:17;:26;5347:7;5329:26;;;;;;;;;;;;5308:47;;5476:14;5462:10;:28;5458:328;;5507:19;5529:12;:18;5542:4;5529:18;;;;;;;;;;;;;;;:34;5548:14;5529:34;;;;;;;;;;;;5507:56;;5613:11;5580:12;:18;5593:4;5580:18;;;;;;;;;;;;;;;:30;5599:10;5580:30;;;;;;;;;;;:44;;;;5730:10;5697:17;:30;5715:11;5697:30;;;;;;;;;;;:43;;;;5492:294;5458:328;5882:17;:26;5900:7;5882:26;;;;;;;;;;;5875:33;;;5926:12;:18;5939:4;5926:18;;;;;;;;;;;;;;;:34;5945:14;5926:34;;;;;;;;;;;5919:41;;;5061:907;;4966:1002;;:::o;6263:1079::-;6516:22;6561:1;6541:10;:17;;;;:21;;;;:::i;:::-;6516:46;;6573:18;6594:15;:24;6610:7;6594:24;;;;;;;;;;;;6573:45;;6945:19;6967:10;6978:14;6967:26;;;;;;;;:::i;:::-;;;;;;;;;;6945:48;;7031:11;7006:10;7017;7006:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;7142:10;7111:15;:28;7127:11;7111:28;;;;;;;;;;;:41;;;;7283:15;:24;7299:7;7283:24;;;;;;;;;;;7276:31;;;7318:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6334:1008;;;6263:1079;:::o;3753:221::-;3838:14;3855:20;3872:2;3855:16;:20::i;:::-;3838:37;;3913:7;3886:12;:16;3899:2;3886:16;;;;;;;;;;;;;;;:24;3903:6;3886:24;;;;;;;;;;;:34;;;;3960:6;3931:17;:26;3949:7;3931:26;;;;;;;;;;;:35;;;;3827:147;3753:221;;:::o;10099:382:3:-;10193:1;10179:16;;:2;:16;;;;10171:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10252:16;10260:7;10252;:16::i;:::-;10251:17;10243:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10314:45;10343:1;10347:2;10351:7;10314:20;:45::i;:::-;10389:1;10372:9;:13;10382:2;10372:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;10420:2;10401:7;:16;10409:7;10401:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10465:7;10461:2;10440:33;;10457:1;10440:33;;;;;;;;;;;;10099:382;;:::o;743:387:0:-;803:4;1011:12;1078:7;1066:20;1058:28;;1121:1;1114:4;:8;1107:15;;;743:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:13:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:323::-;5676:6;5725:2;5713:9;5704:7;5700:23;5696:32;5693:119;;;5731:79;;:::i;:::-;5693:119;5851:1;5876:50;5918:7;5909:6;5898:9;5894:22;5876:50;:::i;:::-;5866:60;;5822:114;5620:323;;;;:::o;5949:327::-;6007:6;6056:2;6044:9;6035:7;6031:23;6027:32;6024:119;;;6062:79;;:::i;:::-;6024:119;6182:1;6207:52;6251:7;6242:6;6231:9;6227:22;6207:52;:::i;:::-;6197:62;;6153:116;5949:327;;;;:::o;6282:349::-;6351:6;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:63;6606:7;6597:6;6586:9;6582:22;6551:63;:::i;:::-;6541:73;;6497:127;6282:349;;;;:::o;6637:509::-;6706:6;6755:2;6743:9;6734:7;6730:23;6726:32;6723:119;;;6761:79;;:::i;:::-;6723:119;6909:1;6898:9;6894:17;6881:31;6939:18;6931:6;6928:30;6925:117;;;6961:79;;:::i;:::-;6925:117;7066:63;7121:7;7112:6;7101:9;7097:22;7066:63;:::i;:::-;7056:73;;6852:287;6637:509;;;;:::o;7152:329::-;7211:6;7260:2;7248:9;7239:7;7235:23;7231:32;7228:119;;;7266:79;;:::i;:::-;7228:119;7386:1;7411:53;7456:7;7447:6;7436:9;7432:22;7411:53;:::i;:::-;7401:63;;7357:117;7152:329;;;;:::o;7487:179::-;7556:10;7577:46;7619:3;7611:6;7577:46;:::i;:::-;7655:4;7650:3;7646:14;7632:28;;7487:179;;;;:::o;7672:118::-;7759:24;7777:5;7759:24;:::i;:::-;7754:3;7747:37;7672:118;;:::o;7826:732::-;7945:3;7974:54;8022:5;7974:54;:::i;:::-;8044:86;8123:6;8118:3;8044:86;:::i;:::-;8037:93;;8154:56;8204:5;8154:56;:::i;:::-;8233:7;8264:1;8249:284;8274:6;8271:1;8268:13;8249:284;;;8350:6;8344:13;8377:63;8436:3;8421:13;8377:63;:::i;:::-;8370:70;;8463:60;8516:6;8463:60;:::i;:::-;8453:70;;8309:224;8296:1;8293;8289:9;8284:14;;8249:284;;;8253:14;8549:3;8542:10;;7950:608;;;7826:732;;;;:::o;8564:109::-;8645:21;8660:5;8645:21;:::i;:::-;8640:3;8633:34;8564:109;;:::o;8679:360::-;8765:3;8793:38;8825:5;8793:38;:::i;:::-;8847:70;8910:6;8905:3;8847:70;:::i;:::-;8840:77;;8926:52;8971:6;8966:3;8959:4;8952:5;8948:16;8926:52;:::i;:::-;9003:29;9025:6;9003:29;:::i;:::-;8998:3;8994:39;8987:46;;8769:270;8679:360;;;;:::o;9045:364::-;9133:3;9161:39;9194:5;9161:39;:::i;:::-;9216:71;9280:6;9275:3;9216:71;:::i;:::-;9209:78;;9296:52;9341:6;9336:3;9329:4;9322:5;9318:16;9296:52;:::i;:::-;9373:29;9395:6;9373:29;:::i;:::-;9368:3;9364:39;9357:46;;9137:272;9045:364;;;;:::o;9415:377::-;9521:3;9549:39;9582:5;9549:39;:::i;:::-;9604:89;9686:6;9681:3;9604:89;:::i;:::-;9597:96;;9702:52;9747:6;9742:3;9735:4;9728:5;9724:16;9702:52;:::i;:::-;9779:6;9774:3;9770:16;9763:23;;9525:267;9415:377;;;;:::o;9822:845::-;9925:3;9962:5;9956:12;9991:36;10017:9;9991:36;:::i;:::-;10043:89;10125:6;10120:3;10043:89;:::i;:::-;10036:96;;10163:1;10152:9;10148:17;10179:1;10174:137;;;;10325:1;10320:341;;;;10141:520;;10174:137;10258:4;10254:9;10243;10239:25;10234:3;10227:38;10294:6;10289:3;10285:16;10278:23;;10174:137;;10320:341;10387:38;10419:5;10387:38;:::i;:::-;10447:1;10461:154;10475:6;10472:1;10469:13;10461:154;;;10549:7;10543:14;10539:1;10534:3;10530:11;10523:35;10599:1;10590:7;10586:15;10575:26;;10497:4;10494:1;10490:12;10485:17;;10461:154;;;10644:6;10639:3;10635:16;10628:23;;10327:334;;10141:520;;9929:738;;9822:845;;;;:::o;10673:366::-;10815:3;10836:67;10900:2;10895:3;10836:67;:::i;:::-;10829:74;;10912:93;11001:3;10912:93;:::i;:::-;11030:2;11025:3;11021:12;11014:19;;10673:366;;;:::o;11045:::-;11187:3;11208:67;11272:2;11267:3;11208:67;:::i;:::-;11201:74;;11284:93;11373:3;11284:93;:::i;:::-;11402:2;11397:3;11393:12;11386:19;;11045:366;;;:::o;11417:::-;11559:3;11580:67;11644:2;11639:3;11580:67;:::i;:::-;11573:74;;11656:93;11745:3;11656:93;:::i;:::-;11774:2;11769:3;11765:12;11758:19;;11417:366;;;:::o;11789:::-;11931:3;11952:67;12016:2;12011:3;11952:67;:::i;:::-;11945:74;;12028:93;12117:3;12028:93;:::i;:::-;12146:2;12141:3;12137:12;12130:19;;11789:366;;;:::o;12161:::-;12303:3;12324:67;12388:2;12383:3;12324:67;:::i;:::-;12317:74;;12400:93;12489:3;12400:93;:::i;:::-;12518:2;12513:3;12509:12;12502:19;;12161:366;;;:::o;12533:::-;12675:3;12696:67;12760:2;12755:3;12696:67;:::i;:::-;12689:74;;12772:93;12861:3;12772:93;:::i;:::-;12890:2;12885:3;12881:12;12874:19;;12533:366;;;:::o;12905:::-;13047:3;13068:67;13132:2;13127:3;13068:67;:::i;:::-;13061:74;;13144:93;13233:3;13144:93;:::i;:::-;13262:2;13257:3;13253:12;13246:19;;12905:366;;;:::o;13277:::-;13419:3;13440:67;13504:2;13499:3;13440:67;:::i;:::-;13433:74;;13516:93;13605:3;13516:93;:::i;:::-;13634:2;13629:3;13625:12;13618:19;;13277:366;;;:::o;13649:::-;13791:3;13812:67;13876:2;13871:3;13812:67;:::i;:::-;13805:74;;13888:93;13977:3;13888:93;:::i;:::-;14006:2;14001:3;13997:12;13990:19;;13649:366;;;:::o;14021:::-;14163:3;14184:67;14248:2;14243:3;14184:67;:::i;:::-;14177:74;;14260:93;14349:3;14260:93;:::i;:::-;14378:2;14373:3;14369:12;14362:19;;14021:366;;;:::o;14393:::-;14535:3;14556:67;14620:2;14615:3;14556:67;:::i;:::-;14549:74;;14632:93;14721:3;14632:93;:::i;:::-;14750:2;14745:3;14741:12;14734:19;;14393:366;;;:::o;14765:::-;14907:3;14928:67;14992:2;14987:3;14928:67;:::i;:::-;14921:74;;15004:93;15093:3;15004:93;:::i;:::-;15122:2;15117:3;15113:12;15106:19;;14765:366;;;:::o;15137:::-;15279:3;15300:67;15364:2;15359:3;15300:67;:::i;:::-;15293:74;;15376:93;15465:3;15376:93;:::i;:::-;15494:2;15489:3;15485:12;15478:19;;15137:366;;;:::o;15509:::-;15651:3;15672:67;15736:2;15731:3;15672:67;:::i;:::-;15665:74;;15748:93;15837:3;15748:93;:::i;:::-;15866:2;15861:3;15857:12;15850:19;;15509:366;;;:::o;15881:::-;16023:3;16044:67;16108:2;16103:3;16044:67;:::i;:::-;16037:74;;16120:93;16209:3;16120:93;:::i;:::-;16238:2;16233:3;16229:12;16222:19;;15881:366;;;:::o;16253:::-;16395:3;16416:67;16480:2;16475:3;16416:67;:::i;:::-;16409:74;;16492:93;16581:3;16492:93;:::i;:::-;16610:2;16605:3;16601:12;16594:19;;16253:366;;;:::o;16625:398::-;16784:3;16805:83;16886:1;16881:3;16805:83;:::i;:::-;16798:90;;16897:93;16986:3;16897:93;:::i;:::-;17015:1;17010:3;17006:11;16999:18;;16625:398;;;:::o;17029:366::-;17171:3;17192:67;17256:2;17251:3;17192:67;:::i;:::-;17185:74;;17268:93;17357:3;17268:93;:::i;:::-;17386:2;17381:3;17377:12;17370:19;;17029:366;;;:::o;17401:::-;17543:3;17564:67;17628:2;17623:3;17564:67;:::i;:::-;17557:74;;17640:93;17729:3;17640:93;:::i;:::-;17758:2;17753:3;17749:12;17742:19;;17401:366;;;:::o;17773:108::-;17850:24;17868:5;17850:24;:::i;:::-;17845:3;17838:37;17773:108;;:::o;17887:118::-;17974:24;17992:5;17974:24;:::i;:::-;17969:3;17962:37;17887:118;;:::o;18011:583::-;18233:3;18255:95;18346:3;18337:6;18255:95;:::i;:::-;18248:102;;18367:92;18455:3;18446:6;18367:92;:::i;:::-;18360:99;;18476:92;18564:3;18555:6;18476:92;:::i;:::-;18469:99;;18585:3;18578:10;;18011:583;;;;;;:::o;18600:379::-;18784:3;18806:147;18949:3;18806:147;:::i;:::-;18799:154;;18970:3;18963:10;;18600:379;;;:::o;18985:222::-;19078:4;19116:2;19105:9;19101:18;19093:26;;19129:71;19197:1;19186:9;19182:17;19173:6;19129:71;:::i;:::-;18985:222;;;;:::o;19213:640::-;19408:4;19446:3;19435:9;19431:19;19423:27;;19460:71;19528:1;19517:9;19513:17;19504:6;19460:71;:::i;:::-;19541:72;19609:2;19598:9;19594:18;19585:6;19541:72;:::i;:::-;19623;19691:2;19680:9;19676:18;19667:6;19623:72;:::i;:::-;19742:9;19736:4;19732:20;19727:2;19716:9;19712:18;19705:48;19770:76;19841:4;19832:6;19770:76;:::i;:::-;19762:84;;19213:640;;;;;;;:::o;19859:373::-;20002:4;20040:2;20029:9;20025:18;20017:26;;20089:9;20083:4;20079:20;20075:1;20064:9;20060:17;20053:47;20117:108;20220:4;20211:6;20117:108;:::i;:::-;20109:116;;19859:373;;;;:::o;20238:210::-;20325:4;20363:2;20352:9;20348:18;20340:26;;20376:65;20438:1;20427:9;20423:17;20414:6;20376:65;:::i;:::-;20238:210;;;;:::o;20454:313::-;20567:4;20605:2;20594:9;20590:18;20582:26;;20654:9;20648:4;20644:20;20640:1;20629:9;20625:17;20618:47;20682:78;20755:4;20746:6;20682:78;:::i;:::-;20674:86;;20454:313;;;;:::o;20773:419::-;20939:4;20977:2;20966:9;20962:18;20954:26;;21026:9;21020:4;21016:20;21012:1;21001:9;20997:17;20990:47;21054:131;21180:4;21054:131;:::i;:::-;21046:139;;20773:419;;;:::o;21198:::-;21364:4;21402:2;21391:9;21387:18;21379:26;;21451:9;21445:4;21441:20;21437:1;21426:9;21422:17;21415:47;21479:131;21605:4;21479:131;:::i;:::-;21471:139;;21198:419;;;:::o;21623:::-;21789:4;21827:2;21816:9;21812:18;21804:26;;21876:9;21870:4;21866:20;21862:1;21851:9;21847:17;21840:47;21904:131;22030:4;21904:131;:::i;:::-;21896:139;;21623:419;;;:::o;22048:::-;22214:4;22252:2;22241:9;22237:18;22229:26;;22301:9;22295:4;22291:20;22287:1;22276:9;22272:17;22265:47;22329:131;22455:4;22329:131;:::i;:::-;22321:139;;22048:419;;;:::o;22473:::-;22639:4;22677:2;22666:9;22662:18;22654:26;;22726:9;22720:4;22716:20;22712:1;22701:9;22697:17;22690:47;22754:131;22880:4;22754:131;:::i;:::-;22746:139;;22473:419;;;:::o;22898:::-;23064:4;23102:2;23091:9;23087:18;23079:26;;23151:9;23145:4;23141:20;23137:1;23126:9;23122:17;23115:47;23179:131;23305:4;23179:131;:::i;:::-;23171:139;;22898:419;;;:::o;23323:::-;23489:4;23527:2;23516:9;23512:18;23504:26;;23576:9;23570:4;23566:20;23562:1;23551:9;23547:17;23540:47;23604:131;23730:4;23604:131;:::i;:::-;23596:139;;23323:419;;;:::o;23748:::-;23914:4;23952:2;23941:9;23937:18;23929:26;;24001:9;23995:4;23991:20;23987:1;23976:9;23972:17;23965:47;24029:131;24155:4;24029:131;:::i;:::-;24021:139;;23748:419;;;:::o;24173:::-;24339:4;24377:2;24366:9;24362:18;24354:26;;24426:9;24420:4;24416:20;24412:1;24401:9;24397:17;24390:47;24454:131;24580:4;24454:131;:::i;:::-;24446:139;;24173:419;;;:::o;24598:::-;24764:4;24802:2;24791:9;24787:18;24779:26;;24851:9;24845:4;24841:20;24837:1;24826:9;24822:17;24815:47;24879:131;25005:4;24879:131;:::i;:::-;24871:139;;24598:419;;;:::o;25023:::-;25189:4;25227:2;25216:9;25212:18;25204:26;;25276:9;25270:4;25266:20;25262:1;25251:9;25247:17;25240:47;25304:131;25430:4;25304:131;:::i;:::-;25296:139;;25023:419;;;:::o;25448:::-;25614:4;25652:2;25641:9;25637:18;25629:26;;25701:9;25695:4;25691:20;25687:1;25676:9;25672:17;25665:47;25729:131;25855:4;25729:131;:::i;:::-;25721:139;;25448:419;;;:::o;25873:::-;26039:4;26077:2;26066:9;26062:18;26054:26;;26126:9;26120:4;26116:20;26112:1;26101:9;26097:17;26090:47;26154:131;26280:4;26154:131;:::i;:::-;26146:139;;25873:419;;;:::o;26298:::-;26464:4;26502:2;26491:9;26487:18;26479:26;;26551:9;26545:4;26541:20;26537:1;26526:9;26522:17;26515:47;26579:131;26705:4;26579:131;:::i;:::-;26571:139;;26298:419;;;:::o;26723:::-;26889:4;26927:2;26916:9;26912:18;26904:26;;26976:9;26970:4;26966:20;26962:1;26951:9;26947:17;26940:47;27004:131;27130:4;27004:131;:::i;:::-;26996:139;;26723:419;;;:::o;27148:::-;27314:4;27352:2;27341:9;27337:18;27329:26;;27401:9;27395:4;27391:20;27387:1;27376:9;27372:17;27365:47;27429:131;27555:4;27429:131;:::i;:::-;27421:139;;27148:419;;;:::o;27573:::-;27739:4;27777:2;27766:9;27762:18;27754:26;;27826:9;27820:4;27816:20;27812:1;27801:9;27797:17;27790:47;27854:131;27980:4;27854:131;:::i;:::-;27846:139;;27573:419;;;:::o;27998:::-;28164:4;28202:2;28191:9;28187:18;28179:26;;28251:9;28245:4;28241:20;28237:1;28226:9;28222:17;28215:47;28279:131;28405:4;28279:131;:::i;:::-;28271:139;;27998:419;;;:::o;28423:222::-;28516:4;28554:2;28543:9;28539:18;28531:26;;28567:71;28635:1;28624:9;28620:17;28611:6;28567:71;:::i;:::-;28423:222;;;;:::o;28651:129::-;28685:6;28712:20;;:::i;:::-;28702:30;;28741:33;28769:4;28761:6;28741:33;:::i;:::-;28651:129;;;:::o;28786:75::-;28819:6;28852:2;28846:9;28836:19;;28786:75;:::o;28867:307::-;28928:4;29018:18;29010:6;29007:30;29004:56;;;29040:18;;:::i;:::-;29004:56;29078:29;29100:6;29078:29;:::i;:::-;29070:37;;29162:4;29156;29152:15;29144:23;;28867:307;;;:::o;29180:308::-;29242:4;29332:18;29324:6;29321:30;29318:56;;;29354:18;;:::i;:::-;29318:56;29392:29;29414:6;29392:29;:::i;:::-;29384:37;;29476:4;29470;29466:15;29458:23;;29180:308;;;:::o;29494:132::-;29561:4;29584:3;29576:11;;29614:4;29609:3;29605:14;29597:22;;29494:132;;;:::o;29632:141::-;29681:4;29704:3;29696:11;;29727:3;29724:1;29717:14;29761:4;29758:1;29748:18;29740:26;;29632:141;;;:::o;29779:114::-;29846:6;29880:5;29874:12;29864:22;;29779:114;;;:::o;29899:98::-;29950:6;29984:5;29978:12;29968:22;;29899:98;;;:::o;30003:99::-;30055:6;30089:5;30083:12;30073:22;;30003:99;;;:::o;30108:113::-;30178:4;30210;30205:3;30201:14;30193:22;;30108:113;;;:::o;30227:184::-;30326:11;30360:6;30355:3;30348:19;30400:4;30395:3;30391:14;30376:29;;30227:184;;;;:::o;30417:168::-;30500:11;30534:6;30529:3;30522:19;30574:4;30569:3;30565:14;30550:29;;30417:168;;;;:::o;30591:147::-;30692:11;30729:3;30714:18;;30591:147;;;;:::o;30744:169::-;30828:11;30862:6;30857:3;30850:19;30902:4;30897:3;30893:14;30878:29;;30744:169;;;;:::o;30919:148::-;31021:11;31058:3;31043:18;;30919:148;;;;:::o;31073:305::-;31113:3;31132:20;31150:1;31132:20;:::i;:::-;31127:25;;31166:20;31184:1;31166:20;:::i;:::-;31161:25;;31320:1;31252:66;31248:74;31245:1;31242:81;31239:107;;;31326:18;;:::i;:::-;31239:107;31370:1;31367;31363:9;31356:16;;31073:305;;;;:::o;31384:185::-;31424:1;31441:20;31459:1;31441:20;:::i;:::-;31436:25;;31475:20;31493:1;31475:20;:::i;:::-;31470:25;;31514:1;31504:35;;31519:18;;:::i;:::-;31504:35;31561:1;31558;31554:9;31549:14;;31384:185;;;;:::o;31575:191::-;31615:4;31635:20;31653:1;31635:20;:::i;:::-;31630:25;;31669:20;31687:1;31669:20;:::i;:::-;31664:25;;31708:1;31705;31702:8;31699:34;;;31713:18;;:::i;:::-;31699:34;31758:1;31755;31751:9;31743:17;;31575:191;;;;:::o;31772:96::-;31809:7;31838:24;31856:5;31838:24;:::i;:::-;31827:35;;31772:96;;;:::o;31874:90::-;31908:7;31951:5;31944:13;31937:21;31926:32;;31874:90;;;:::o;31970:149::-;32006:7;32046:66;32039:5;32035:78;32024:89;;31970:149;;;:::o;32125:126::-;32162:7;32202:42;32195:5;32191:54;32180:65;;32125:126;;;:::o;32257:77::-;32294:7;32323:5;32312:16;;32257:77;;;:::o;32340:154::-;32424:6;32419:3;32414;32401:30;32486:1;32477:6;32472:3;32468:16;32461:27;32340:154;;;:::o;32500:307::-;32568:1;32578:113;32592:6;32589:1;32586:13;32578:113;;;32677:1;32672:3;32668:11;32662:18;32658:1;32653:3;32649:11;32642:39;32614:2;32611:1;32607:10;32602:15;;32578:113;;;32709:6;32706:1;32703:13;32700:101;;;32789:1;32780:6;32775:3;32771:16;32764:27;32700:101;32549:258;32500:307;;;:::o;32813:320::-;32857:6;32894:1;32888:4;32884:12;32874:22;;32941:1;32935:4;32931:12;32962:18;32952:81;;33018:4;33010:6;33006:17;32996:27;;32952:81;33080:2;33072:6;33069:14;33049:18;33046:38;33043:84;;;33099:18;;:::i;:::-;33043:84;32864:269;32813:320;;;:::o;33139:281::-;33222:27;33244:4;33222:27;:::i;:::-;33214:6;33210:40;33352:6;33340:10;33337:22;33316:18;33304:10;33301:34;33298:62;33295:88;;;33363:18;;:::i;:::-;33295:88;33403:10;33399:2;33392:22;33182:238;33139:281;;:::o;33426:233::-;33465:3;33488:24;33506:5;33488:24;:::i;:::-;33479:33;;33534:66;33527:5;33524:77;33521:103;;;33604:18;;:::i;:::-;33521:103;33651:1;33644:5;33640:13;33633:20;;33426:233;;;:::o;33665:176::-;33697:1;33714:20;33732:1;33714:20;:::i;:::-;33709:25;;33748:20;33766:1;33748:20;:::i;:::-;33743:25;;33787:1;33777:35;;33792:18;;:::i;:::-;33777:35;33833:1;33830;33826:9;33821:14;;33665:176;;;;:::o;33847:180::-;33895:77;33892:1;33885:88;33992:4;33989:1;33982:15;34016:4;34013:1;34006:15;34033:180;34081:77;34078:1;34071:88;34178:4;34175:1;34168:15;34202:4;34199:1;34192:15;34219:180;34267:77;34264:1;34257:88;34364:4;34361:1;34354:15;34388:4;34385:1;34378:15;34405:180;34453:77;34450:1;34443:88;34550:4;34547:1;34540:15;34574:4;34571:1;34564:15;34591:180;34639:77;34636:1;34629:88;34736:4;34733:1;34726:15;34760:4;34757:1;34750:15;34777:180;34825:77;34822:1;34815:88;34922:4;34919:1;34912:15;34946:4;34943:1;34936:15;34963:117;35072:1;35069;35062:12;35086:117;35195:1;35192;35185:12;35209:117;35318:1;35315;35308:12;35332:117;35441:1;35438;35431:12;35455:102;35496:6;35547:2;35543:7;35538:2;35531:5;35527:14;35523:28;35513:38;;35455:102;;;:::o;35563:230::-;35703:34;35699:1;35691:6;35687:14;35680:58;35772:13;35767:2;35759:6;35755:15;35748:38;35563:230;:::o;35799:237::-;35939:34;35935:1;35927:6;35923:14;35916:58;36008:20;36003:2;35995:6;35991:15;35984:45;35799:237;:::o;36042:225::-;36182:34;36178:1;36170:6;36166:14;36159:58;36251:8;36246:2;36238:6;36234:15;36227:33;36042:225;:::o;36273:178::-;36413:30;36409:1;36401:6;36397:14;36390:54;36273:178;:::o;36457:223::-;36597:34;36593:1;36585:6;36581:14;36574:58;36666:6;36661:2;36653:6;36649:15;36642:31;36457:223;:::o;36686:175::-;36826:27;36822:1;36814:6;36810:14;36803:51;36686:175;:::o;36867:231::-;37007:34;37003:1;36995:6;36991:14;36984:58;37076:14;37071:2;37063:6;37059:15;37052:39;36867:231;:::o;37104:243::-;37244:34;37240:1;37232:6;37228:14;37221:58;37313:26;37308:2;37300:6;37296:15;37289:51;37104:243;:::o;37353:229::-;37493:34;37489:1;37481:6;37477:14;37470:58;37562:12;37557:2;37549:6;37545:15;37538:37;37353:229;:::o;37588:228::-;37728:34;37724:1;37716:6;37712:14;37705:58;37797:11;37792:2;37784:6;37780:15;37773:36;37588:228;:::o;37822:182::-;37962:34;37958:1;37950:6;37946:14;37939:58;37822:182;:::o;38010:231::-;38150:34;38146:1;38138:6;38134:14;38127:58;38219:14;38214:2;38206:6;38202:15;38195:39;38010:231;:::o;38247:182::-;38387:34;38383:1;38375:6;38371:14;38364:58;38247:182;:::o;38435:228::-;38575:34;38571:1;38563:6;38559:14;38552:58;38644:11;38639:2;38631:6;38627:15;38620:36;38435:228;:::o;38669:234::-;38809:34;38805:1;38797:6;38793:14;38786:58;38878:17;38873:2;38865:6;38861:15;38854:42;38669:234;:::o;38909:220::-;39049:34;39045:1;39037:6;39033:14;39026:58;39118:3;39113:2;39105:6;39101:15;39094:28;38909:220;:::o;39135:114::-;;:::o;39255:236::-;39395:34;39391:1;39383:6;39379:14;39372:58;39464:19;39459:2;39451:6;39447:15;39440:44;39255:236;:::o;39497:231::-;39637:34;39633:1;39625:6;39621:14;39614:58;39706:14;39701:2;39693:6;39689:15;39682:39;39497:231;:::o;39734:122::-;39807:24;39825:5;39807:24;:::i;:::-;39800:5;39797:35;39787:63;;39846:1;39843;39836:12;39787:63;39734:122;:::o;39862:116::-;39932:21;39947:5;39932:21;:::i;:::-;39925:5;39922:32;39912:60;;39968:1;39965;39958:12;39912:60;39862:116;:::o;39984:120::-;40056:23;40073:5;40056:23;:::i;:::-;40049:5;40046:34;40036:62;;40094:1;40091;40084:12;40036:62;39984:120;:::o;40110:122::-;40183:24;40201:5;40183:24;:::i;:::-;40176:5;40173:35;40163:63;;40222:1;40219;40212:12;40163:63;40110:122;:::o
Swarm Source
ipfs://3cb1770c943de2b2d4209229d6b0e95a226aba8ad2ad0e0bd94b6f8f1463cc3c
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.