ERC-721
Overview
Max Total Supply
500 LDC
Holders
309
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
3 LDCLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LdcNFT
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 LdcNFT is ERC721Enumerable, Ownable { using Strings for uint256; string public baseURI; string public baseExtension = ".json"; bool public preSaleOn = false; bool public publicSaleOn = false; bool public santaAlgorithmOn = false; bool public revealed = false; string public notRevealedURI; uint256 public maxSupply = 2500; uint256 public reserved = 100; // For airdrops, ruffles, etc. uint256 public preSaleCost = 55000000000000000; // 0.055 eth uint256 public publicSaleCost = 65000000000000000; // 0.065 eth uint256 public preSaleMaxMintAmount = 3; uint256 public publicSaleMaxMintAmount = 6; uint256 public prizeAmount = 6000000000000000000; // 6 eth uint256 public prize1ETH = 1000000000000000000; // 1 eth uint256 public prize05ETH = 500000000000000000; // 0.5 eth uint256 public prize01ETH = 100000000000000000; // 0.1 eth mapping (address => uint256) public minted; // To check how many tokens an address has minted mapping (address => bool) public whiteListedWallets; constructor( string memory _name, string memory _symbol, string memory _initBaseURI, string memory _initNotRevealedURI ) ERC721(_name, _symbol) { setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedURI); } // internal function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function mint(address _to, uint256 _mintAmount) public payable { bool saleOn = (preSaleOn || publicSaleOn); require(saleOn, "Sale must be ON"); uint256 supply = totalSupply(); if (msg.sender != owner()) { if (preSaleOn) { require(preSaleOn, "Presale must be ON"); require(_mintAmount > 0, "Mint abmount must be more than 0"); require(whiteListedWallets[msg.sender] == true, "You aren't whitelisted!"); require(supply + _mintAmount <= maxSupply, "Purchase would exceed max supply of NFTs"); require(minted[msg.sender] + _mintAmount <= preSaleMaxMintAmount, "Purchase would exceed max tokens for presale"); require(msg.value >= preSaleCost * _mintAmount, "Ether value sent is not correct"); } else if (publicSaleOn) { require(publicSaleOn, "Publicsale must be ON"); require(_mintAmount > 0, "Mint abmount must be more than 0"); require(supply + _mintAmount <= maxSupply - reserved, "Purchase would exceed max supply of NFTs"); require(minted[msg.sender] + _mintAmount <= publicSaleMaxMintAmount, "Purchase would exceed max tokens for sale"); require(msg.value >= publicSaleCost * _mintAmount, "Ether value sent is not correct"); } } for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(_to, supply + i); } minted[msg.sender] += _mintAmount; // Santa algorithm if (santaAlgorithmOn && prizeAmount > 0 && msg.sender != owner()) { uint rnd = random(); if (rnd < 1 && address(this).balance > prize1ETH) { payable(_to).transfer(prize1ETH); prizeAmount -= prize1ETH; } else if (rnd < 4 && address(this).balance > prize05ETH) { payable(_to).transfer(prize05ETH); prizeAmount -= prize05ETH; } else if (rnd < 80 && address(this).balance > prize01ETH) { payable(_to).transfer(prize01ETH); prizeAmount -= prize01ETH; } } } function random() internal returns (uint) { uint randomnumber = uint(keccak256(abi.encodePacked(block.timestamp, block.difficulty ,msg.sender))) % 999; return randomnumber; } 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 virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if (revealed == false) { return notRevealedURI; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString(), baseExtension ) ) : ""; } //only owner function addWhiteList(address[] memory whiteListedAddresses) public onlyOwner { for(uint256 i=0; i<whiteListedAddresses.length;i++) { whiteListedWallets[whiteListedAddresses[i]] = true; } } function setPrizeAmount(uint256 _prizeAmount) public onlyOwner { prizeAmount = _prizeAmount; } function setPreSaleCost(uint256 _preSaleCost) public onlyOwner { preSaleCost = _preSaleCost; } function setPublicSaleCost(uint256 _publicSaleCost) public onlyOwner { publicSaleCost = _publicSaleCost; } function setPreSaleMaxMintAmount(uint256 _preSaleMaxMintAmount) public onlyOwner { preSaleMaxMintAmount = _preSaleMaxMintAmount; } function setmaxPublicSaleMintAmount(uint256 _publicSaleMaxMintAmount) public onlyOwner { publicSaleMaxMintAmount = _publicSaleMaxMintAmount; } function setMaxSupply(uint256 _maxSupply) public onlyOwner { maxSupply = _maxSupply; } function setReserved(uint256 _reserved) public onlyOwner { reserved = _reserved; } function flipPreSaleOn() public onlyOwner { preSaleOn = !preSaleOn; } function flipPublicSaleOn() public onlyOwner { publicSaleOn = !publicSaleOn; } function flipRevealed() public onlyOwner { revealed = !revealed; } function flipSantaAlgorithmOn() public onlyOwner { santaAlgorithmOn = !santaAlgorithmOn; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setNotRevealedURI(string memory _newNotRevealedURI) public onlyOwner { notRevealedURI = _newNotRevealedURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function withdrawAll() external onlyOwner { uint balance = address(this).balance; payable(msg.sender).transfer(balance); } function withdrawSome(uint _eth) external onlyOwner { payable(msg.sender).transfer(_eth); } }
// 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
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedURI","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":"whiteListedAddresses","type":"address[]"}],"name":"addWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"flipPreSaleOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPublicSaleOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipSantaAlgorithmOn","outputs":[],"stateMutability":"nonpayable","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":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedURI","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":[],"name":"preSaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prize01ETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prize05ETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prize1ETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prizeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"santaAlgorithmOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newNotRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_preSaleCost","type":"uint256"}],"name":"setPreSaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_preSaleMaxMintAmount","type":"uint256"}],"name":"setPreSaleMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_prizeAmount","type":"uint256"}],"name":"setPrizeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_publicSaleCost","type":"uint256"}],"name":"setPublicSaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reserved","type":"uint256"}],"name":"setReserved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_publicSaleMaxMintAmount","type":"uint256"}],"name":"setmaxPublicSaleMintAmount","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":[{"internalType":"address","name":"","type":"address"}],"name":"whiteListedWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eth","type":"uint256"}],"name":"withdrawSome","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c9080519060200190620000519291906200041c565b506000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506000600d60036101000a81548160ff0219169083151502179055506109c4600f55606460105566c3663566a5800060115566e6ed27d6668000601255600360135560066014556753444835ec580000601555670de0b6b3a76400006016556706f05b59d3b2000060175567016345785d8a00006018553480156200012657600080fd5b50604051620064403803806200644083398181016040528101906200014c91906200054a565b83838160009080519060200190620001669291906200041c565b5080600190805190602001906200017f9291906200041c565b505050620001a262000196620001ce60201b60201c565b620001d660201b60201c565b620001b3826200029c60201b60201c565b620001c4816200034760201b60201c565b505050506200083f565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002ac620001ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002d2620003f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000322906200065f565b60405180910390fd5b80600b9080519060200190620003439291906200041c565b5050565b62000357620001ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200037d620003f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003cd906200065f565b60405180910390fd5b80600e9080519060200190620003ee9291906200041c565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200042a9062000727565b90600052602060002090601f0160209004810192826200044e57600085556200049a565b82601f106200046957805160ff19168380011785556200049a565b828001600101855582156200049a579182015b82811115620004995782518255916020019190600101906200047c565b5b509050620004a99190620004ad565b5090565b5b80821115620004c8576000816000905550600101620004ae565b5090565b6000620004e3620004dd84620006aa565b62000681565b905082815260208101848484011115620005025762000501620007f6565b5b6200050f848285620006f1565b509392505050565b600082601f8301126200052f576200052e620007f1565b5b815162000541848260208601620004cc565b91505092915050565b6000806000806080858703121562000567576200056662000800565b5b600085015167ffffffffffffffff811115620005885762000587620007fb565b5b620005968782880162000517565b945050602085015167ffffffffffffffff811115620005ba57620005b9620007fb565b5b620005c88782880162000517565b935050604085015167ffffffffffffffff811115620005ec57620005eb620007fb565b5b620005fa8782880162000517565b925050606085015167ffffffffffffffff8111156200061e576200061d620007fb565b5b6200062c8782880162000517565b91505092959194509250565b600062000647602083620006e0565b9150620006548262000816565b602082019050919050565b600060208201905081810360008301526200067a8162000638565b9050919050565b60006200068d620006a0565b90506200069b82826200075d565b919050565b6000604051905090565b600067ffffffffffffffff821115620006c857620006c7620007c2565b5b620006d38262000805565b9050602081019050919050565b600082825260208201905092915050565b60005b8381101562000711578082015181840152602081019050620006f4565b8381111562000721576000848401525b50505050565b600060028204905060018216806200074057607f821691505b6020821081141562000757576200075662000793565b5b50919050565b620007688262000805565b810181811067ffffffffffffffff821117156200078a5762000789620007c2565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b615bf1806200084f6000396000f3fe6080604052600436106103765760003560e01c80636f8b44b0116101d1578063ae9b051c11610102578063d5abeb01116100a0578063f2c4ce1e1161006f578063f2c4ce1e14610c81578063f2fde38b14610caa578063f53280f714610cd3578063fe60d12c14610cfe57610376565b8063d5abeb0114610bd9578063da3ef23f14610c04578063e985e9c514610c2d578063ed19d26514610c6a57610376565b8063c87b56dd116100dc578063c87b56dd14610b1b578063c99bc1c714610b58578063cc9ff9c614610b83578063cd56117914610bae57610376565b8063ae9b051c14610a9e578063b88d4fde14610ac7578063c668286214610af057610376565b80638da5cb5b1161016f578063a16b638411610149578063a16b638414610a0a578063a1f92b3714610a33578063a22cb46514610a4a578063a2be7c2914610a7357610376565b80638da5cb5b1461098b5780638dbb7c06146109b657806395d89b41146109df57610376565b806372250380116101ab57806372250380146108f3578063785fa6271461091e5780637cd9591214610949578063853828b61461097457610376565b80636f8b44b01461087657806370a082311461089f578063715018a6146108dc57610376565b80633b2c3fb6116102ab57806351830227116102495780635c624220116102235780635c624220146107a85780635e1045ec146107e55780636352211e1461080e5780636c0360eb1461084b57610376565b8063518302271461073d57806354a2383b1461076857806355f804b31461077f57610376565b8063438b630011610285578063438b63001461066f578063453afb0f146106ac5780634f6ccce7146106d7578063513865321461071457610376565b80633b2c3fb61461061357806340c10f191461062a57806342842e0e1461064657610376565b80631e7269c51161031857806323b872dd116102f257806323b872dd146105595780632ad0a197146105825780632d6e71b6146105ad5780632f745c59146105d657610376565b80631e7269c5146104ca57806321c95bdf14610507578063231b07161461053057610376565b8063095ea7b311610354578063095ea7b3146104205780630b377e981461044957806318160ddd146104745780631dffa7cd1461049f57610376565b806301ffc9a71461037b57806306fdde03146103b8578063081812fc146103e3575b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d91906143e9565b610d29565b6040516103af9190614b63565b60405180910390f35b3480156103c457600080fd5b506103cd610da3565b6040516103da9190614b7e565b60405180910390f35b3480156103ef57600080fd5b5061040a6004803603810190610405919061448c565b610e35565b6040516104179190614ada565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190614360565b610eba565b005b34801561045557600080fd5b5061045e610fd2565b60405161046b9190614b63565b60405180910390f35b34801561048057600080fd5b50610489610fe5565b6040516104969190614f00565b60405180910390f35b3480156104ab57600080fd5b506104b4610ff2565b6040516104c19190614f00565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec91906141dd565b610ff8565b6040516104fe9190614f00565b60405180910390f35b34801561051357600080fd5b5061052e6004803603810190610529919061448c565b611010565b005b34801561053c57600080fd5b506105576004803603810190610552919061448c565b611096565b005b34801561056557600080fd5b50610580600480360381019061057b919061424a565b61111c565b005b34801561058e57600080fd5b5061059761117c565b6040516105a49190614f00565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf919061448c565b611182565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190614360565b611208565b60405161060a9190614f00565b60405180910390f35b34801561061f57600080fd5b506106286112ad565b005b610644600480360381019061063f9190614360565b611355565b005b34801561065257600080fd5b5061066d6004803603810190610668919061424a565b611ad8565b005b34801561067b57600080fd5b50610696600480360381019061069191906141dd565b611af8565b6040516106a39190614b41565b60405180910390f35b3480156106b857600080fd5b506106c1611ba6565b6040516106ce9190614f00565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f9919061448c565b611bac565b60405161070b9190614f00565b60405180910390f35b34801561072057600080fd5b5061073b6004803603810190610736919061448c565b611c1d565b005b34801561074957600080fd5b50610752611ca3565b60405161075f9190614b63565b60405180910390f35b34801561077457600080fd5b5061077d611cb6565b005b34801561078b57600080fd5b506107a660048036038101906107a19190614443565b611d5e565b005b3480156107b457600080fd5b506107cf60048036038101906107ca91906141dd565b611df4565b6040516107dc9190614b63565b60405180910390f35b3480156107f157600080fd5b5061080c600480360381019061080791906143a0565b611e14565b005b34801561081a57600080fd5b506108356004803603810190610830919061448c565b611f25565b6040516108429190614ada565b60405180910390f35b34801561085757600080fd5b50610860611fd7565b60405161086d9190614b7e565b60405180910390f35b34801561088257600080fd5b5061089d6004803603810190610898919061448c565b612065565b005b3480156108ab57600080fd5b506108c660048036038101906108c191906141dd565b6120eb565b6040516108d39190614f00565b60405180910390f35b3480156108e857600080fd5b506108f16121a3565b005b3480156108ff57600080fd5b5061090861222b565b6040516109159190614b7e565b60405180910390f35b34801561092a57600080fd5b506109336122b9565b6040516109409190614f00565b60405180910390f35b34801561095557600080fd5b5061095e6122bf565b60405161096b9190614b63565b60405180910390f35b34801561098057600080fd5b506109896122d2565b005b34801561099757600080fd5b506109a061239d565b6040516109ad9190614ada565b60405180910390f35b3480156109c257600080fd5b506109dd60048036038101906109d8919061448c565b6123c7565b005b3480156109eb57600080fd5b506109f461244d565b604051610a019190614b7e565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c919061448c565b6124df565b005b348015610a3f57600080fd5b50610a48612565565b005b348015610a5657600080fd5b50610a716004803603810190610a6c9190614320565b61260d565b005b348015610a7f57600080fd5b50610a8861278e565b604051610a959190614b63565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac0919061448c565b6127a1565b005b348015610ad357600080fd5b50610aee6004803603810190610ae9919061429d565b612867565b005b348015610afc57600080fd5b50610b056128c9565b604051610b129190614b7e565b60405180910390f35b348015610b2757600080fd5b50610b426004803603810190610b3d919061448c565b612957565b604051610b4f9190614b7e565b60405180910390f35b348015610b6457600080fd5b50610b6d612ab0565b604051610b7a9190614f00565b60405180910390f35b348015610b8f57600080fd5b50610b98612ab6565b604051610ba59190614f00565b60405180910390f35b348015610bba57600080fd5b50610bc3612abc565b604051610bd09190614f00565b60405180910390f35b348015610be557600080fd5b50610bee612ac2565b604051610bfb9190614f00565b60405180910390f35b348015610c1057600080fd5b50610c2b6004803603810190610c269190614443565b612ac8565b005b348015610c3957600080fd5b50610c546004803603810190610c4f919061420a565b612b5e565b604051610c619190614b63565b60405180910390f35b348015610c7657600080fd5b50610c7f612bf2565b005b348015610c8d57600080fd5b50610ca86004803603810190610ca39190614443565b612c9a565b005b348015610cb657600080fd5b50610cd16004803603810190610ccc91906141dd565b612d30565b005b348015610cdf57600080fd5b50610ce8612e28565b604051610cf59190614f00565b60405180910390f35b348015610d0a57600080fd5b50610d13612e2e565b604051610d209190614f00565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9c5750610d9b82612e34565b5b9050919050565b606060008054610db29061522a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde9061522a565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b5050505050905090565b6000610e4082612f16565b610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614dc0565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ec582611f25565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90614e40565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f55612f82565b73ffffffffffffffffffffffffffffffffffffffff161480610f845750610f8381610f7e612f82565b612b5e565b5b610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90614ce0565b60405180910390fd5b610fcd8383612f8a565b505050565b600d60029054906101000a900460ff1681565b6000600880549050905090565b60165481565b60196020528060005260406000206000915090505481565b611018612f82565b73ffffffffffffffffffffffffffffffffffffffff1661103661239d565b73ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108390614de0565b60405180910390fd5b8060138190555050565b61109e612f82565b73ffffffffffffffffffffffffffffffffffffffff166110bc61239d565b73ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990614de0565b60405180910390fd5b8060118190555050565b61112d611127612f82565b82613043565b61116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614e60565b60405180910390fd5b611177838383613121565b505050565b60145481565b61118a612f82565b73ffffffffffffffffffffffffffffffffffffffff166111a861239d565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614de0565b60405180910390fd5b8060108190555050565b6000611213836120eb565b8210611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90614ba0565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6112b5612f82565b73ffffffffffffffffffffffffffffffffffffffff166112d361239d565b73ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090614de0565b60405180910390fd5b600d60039054906101000a900460ff1615600d60036101000a81548160ff021916908315150217905550565b6000600d60009054906101000a900460ff168061137e5750600d60019054906101000a900460ff165b9050806113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790614da0565b60405180910390fd5b60006113ca610fe5565b90506113d461239d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461185a57600d60009054906101000a900460ff161561167457600d60009054906101000a900460ff1661146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190614d00565b60405180910390fd5b600083116114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a490614ec0565b60405180910390fd5b60011515601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790614e80565b60405180910390fd5b600f54838261154f919061505f565b1115611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790614be0565b60405180910390fd5b60135483601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115de919061505f565b111561161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690614d60565b60405180910390fd5b8260115461162d91906150e6565b34101561166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690614c80565b60405180910390fd5b611859565b600d60019054906101000a900460ff161561185857600d60019054906101000a900460ff166116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90614cc0565b60405180910390fd5b6000831161171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290614ec0565b60405180910390fd5b601054600f5461172b9190615140565b8382611737919061505f565b1115611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90614be0565b60405180910390fd5b60145483601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c6919061505f565b1115611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90614ee0565b60405180910390fd5b8260125461181591906150e6565b341015611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614c80565b60405180910390fd5b5b5b5b6000600190505b8381116118905761187d858284611878919061505f565b61337d565b80806118889061528d565b915050611861565b5082601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e0919061505f565b92505081905550600d60029054906101000a900460ff16801561190557506000601554115b8015611944575061191461239d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611ad257600061195361339b565b9050600181108015611966575060165447115b156119d4578473ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f193505050501580156119b3573d6000803e3d6000fd5b50601654601560008282546119c89190615140565b92505081905550611ad0565b6004811080156119e5575060175447115b15611a53578473ffffffffffffffffffffffffffffffffffffffff166108fc6017549081150290604051600060405180830381858888f19350505050158015611a32573d6000803e3d6000fd5b5060175460156000828254611a479190615140565b92505081905550611acf565b605081108015611a64575060185447115b15611ace578473ffffffffffffffffffffffffffffffffffffffff166108fc6018549081150290604051600060405180830381858888f19350505050158015611ab1573d6000803e3d6000fd5b5060185460156000828254611ac69190615140565b925050819055505b5b5b505b50505050565b611af383838360405180602001604052806000815250612867565b505050565b60606000611b05836120eb565b905060008167ffffffffffffffff811115611b2357611b22615420565b5b604051908082528060200260200182016040528015611b515781602001602082028036833780820191505090505b50905060005b82811015611b9b57611b698582611208565b828281518110611b7c57611b7b6153f1565b5b6020026020010181815250508080611b939061528d565b915050611b57565b508092505050919050565b60125481565b6000611bb6610fe5565b8210611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90614ea0565b60405180910390fd5b60088281548110611c0b57611c0a6153f1565b5b90600052602060002001549050919050565b611c25612f82565b73ffffffffffffffffffffffffffffffffffffffff16611c4361239d565b73ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090614de0565b60405180910390fd5b8060158190555050565b600d60039054906101000a900460ff1681565b611cbe612f82565b73ffffffffffffffffffffffffffffffffffffffff16611cdc61239d565b73ffffffffffffffffffffffffffffffffffffffff1614611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990614de0565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b611d66612f82565b73ffffffffffffffffffffffffffffffffffffffff16611d8461239d565b73ffffffffffffffffffffffffffffffffffffffff1614611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd190614de0565b60405180910390fd5b80600b9080519060200190611df0929190613f53565b5050565b601a6020528060005260406000206000915054906101000a900460ff1681565b611e1c612f82565b73ffffffffffffffffffffffffffffffffffffffff16611e3a61239d565b73ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790614de0565b60405180910390fd5b60005b8151811015611f21576001601a6000848481518110611eb557611eb46153f1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611f199061528d565b915050611e93565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590614d40565b60405180910390fd5b80915050919050565b600b8054611fe49061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546120109061522a565b801561205d5780601f106120325761010080835404028352916020019161205d565b820191906000526020600020905b81548152906001019060200180831161204057829003601f168201915b505050505081565b61206d612f82565b73ffffffffffffffffffffffffffffffffffffffff1661208b61239d565b73ffffffffffffffffffffffffffffffffffffffff16146120e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d890614de0565b60405180910390fd5b80600f8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215390614d20565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121ab612f82565b73ffffffffffffffffffffffffffffffffffffffff166121c961239d565b73ffffffffffffffffffffffffffffffffffffffff161461221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690614de0565b60405180910390fd5b61222960006133e2565b565b600e80546122389061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546122649061522a565b80156122b15780601f10612286576101008083540402835291602001916122b1565b820191906000526020600020905b81548152906001019060200180831161229457829003601f168201915b505050505081565b60155481565b600d60019054906101000a900460ff1681565b6122da612f82565b73ffffffffffffffffffffffffffffffffffffffff166122f861239d565b73ffffffffffffffffffffffffffffffffffffffff161461234e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234590614de0565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612399573d6000803e3d6000fd5b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6123cf612f82565b73ffffffffffffffffffffffffffffffffffffffff166123ed61239d565b73ffffffffffffffffffffffffffffffffffffffff1614612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614de0565b60405180910390fd5b8060128190555050565b60606001805461245c9061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546124889061522a565b80156124d55780601f106124aa576101008083540402835291602001916124d5565b820191906000526020600020905b8154815290600101906020018083116124b857829003601f168201915b5050505050905090565b6124e7612f82565b73ffffffffffffffffffffffffffffffffffffffff1661250561239d565b73ffffffffffffffffffffffffffffffffffffffff161461255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290614de0565b60405180910390fd5b8060148190555050565b61256d612f82565b73ffffffffffffffffffffffffffffffffffffffff1661258b61239d565b73ffffffffffffffffffffffffffffffffffffffff16146125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614de0565b60405180910390fd5b600d60029054906101000a900460ff1615600d60026101000a81548160ff021916908315150217905550565b612615612f82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267a90614c60565b60405180910390fd5b8060056000612690612f82565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661273d612f82565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516127829190614b63565b60405180910390a35050565b600d60009054906101000a900460ff1681565b6127a9612f82565b73ffffffffffffffffffffffffffffffffffffffff166127c761239d565b73ffffffffffffffffffffffffffffffffffffffff161461281d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281490614de0565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612863573d6000803e3d6000fd5b5050565b612878612872612f82565b83613043565b6128b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ae90614e60565b60405180910390fd5b6128c3848484846134a8565b50505050565b600c80546128d69061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546129029061522a565b801561294f5780601f106129245761010080835404028352916020019161294f565b820191906000526020600020905b81548152906001019060200180831161293257829003601f168201915b505050505081565b606061296282612f16565b6129a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299890614e20565b60405180910390fd5b60001515600d60039054906101000a900460ff1615151415612a4f57600e80546129ca9061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546129f69061522a565b8015612a435780601f10612a1857610100808354040283529160200191612a43565b820191906000526020600020905b815481529060010190602001808311612a2657829003601f168201915b50505050509050612aab565b6000612a59613504565b90506000815111612a795760405180602001604052806000815250612aa7565b80612a8384613596565b600c604051602001612a9793929190614a6c565b6040516020818303038152906040525b9150505b919050565b60135481565b60115481565b60185481565b600f5481565b612ad0612f82565b73ffffffffffffffffffffffffffffffffffffffff16612aee61239d565b73ffffffffffffffffffffffffffffffffffffffff1614612b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3b90614de0565b60405180910390fd5b80600c9080519060200190612b5a929190613f53565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612bfa612f82565b73ffffffffffffffffffffffffffffffffffffffff16612c1861239d565b73ffffffffffffffffffffffffffffffffffffffff1614612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6590614de0565b60405180910390fd5b600d60019054906101000a900460ff1615600d60016101000a81548160ff021916908315150217905550565b612ca2612f82565b73ffffffffffffffffffffffffffffffffffffffff16612cc061239d565b73ffffffffffffffffffffffffffffffffffffffff1614612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0d90614de0565b60405180910390fd5b80600e9080519060200190612d2c929190613f53565b5050565b612d38612f82565b73ffffffffffffffffffffffffffffffffffffffff16612d5661239d565b73ffffffffffffffffffffffffffffffffffffffff1614612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1390614c00565b60405180910390fd5b612e25816133e2565b50565b60175481565b60105481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612eff57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612f0f5750612f0e826136f7565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612ffd83611f25565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061304e82612f16565b61308d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308490614ca0565b60405180910390fd5b600061309883611f25565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061310757508373ffffffffffffffffffffffffffffffffffffffff166130ef84610e35565b73ffffffffffffffffffffffffffffffffffffffff16145b8061311857506131178185612b5e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661314182611f25565b73ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e90614e00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fe90614c40565b60405180910390fd5b613212838383613761565b61321d600082612f8a565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461326d9190615140565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132c4919061505f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b613397828260405180602001604052806000815250613875565b5050565b6000806103e74244336040516020016133b693929190614a9d565b6040516020818303038152906040528051906020012060001c6133d99190615304565b90508091505090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6134b3848484613121565b6134bf848484846138d0565b6134fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f590614bc0565b60405180910390fd5b50505050565b6060600b80546135139061522a565b80601f016020809104026020016040519081016040528092919081815260200182805461353f9061522a565b801561358c5780601f106135615761010080835404028352916020019161358c565b820191906000526020600020905b81548152906001019060200180831161356f57829003601f168201915b5050505050905090565b606060008214156135de576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506136f2565b600082905060005b600082146136105780806135f99061528d565b915050600a8261360991906150b5565b91506135e6565b60008167ffffffffffffffff81111561362c5761362b615420565b5b6040519080825280601f01601f19166020018201604052801561365e5781602001600182028036833780820191505090505b5090505b600085146136eb576001826136779190615140565b9150600a856136869190615304565b6030613692919061505f565b60f81b8183815181106136a8576136a76153f1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856136e491906150b5565b9450613662565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61376c838383613a67565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137af576137aa81613a6c565b6137ee565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137ed576137ec8382613ab5565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138315761382c81613c22565b613870565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461386f5761386e8282613cf3565b5b5b505050565b61387f8383613d72565b61388c60008484846138d0565b6138cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c290614bc0565b60405180910390fd5b505050565b60006138f18473ffffffffffffffffffffffffffffffffffffffff16613f40565b15613a5a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261391a612f82565b8786866040518563ffffffff1660e01b815260040161393c9493929190614af5565b602060405180830381600087803b15801561395657600080fd5b505af192505050801561398757506040513d601f19601f820116820180604052508101906139849190614416565b60015b613a0a573d80600081146139b7576040519150601f19603f3d011682016040523d82523d6000602084013e6139bc565b606091505b50600081511415613a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f990614bc0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613a5f565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613ac2846120eb565b613acc9190615140565b9050600060076000848152602001908152602001600020549050818114613bb1576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613c369190615140565b9050600060096000848152602001908152602001600020549050600060088381548110613c6657613c656153f1565b5b906000526020600020015490508060088381548110613c8857613c876153f1565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613cd757613cd66153c2565b5b6001900381819060005260206000200160009055905550505050565b6000613cfe836120eb565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd990614d80565b60405180910390fd5b613deb81612f16565b15613e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e2290614c20565b60405180910390fd5b613e3760008383613761565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e87919061505f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054613f5f9061522a565b90600052602060002090601f016020900481019282613f815760008555613fc8565b82601f10613f9a57805160ff1916838001178555613fc8565b82800160010185558215613fc8579182015b82811115613fc7578251825591602001919060010190613fac565b5b509050613fd59190613fd9565b5090565b5b80821115613ff2576000816000905550600101613fda565b5090565b600061400961400484614f40565b614f1b565b9050808382526020820190508285602086028201111561402c5761402b615454565b5b60005b8581101561405c578161404288826140ea565b84526020840193506020830192505060018101905061402f565b5050509392505050565b600061407961407484614f6c565b614f1b565b90508281526020810184848401111561409557614094615459565b5b6140a08482856151e8565b509392505050565b60006140bb6140b684614f9d565b614f1b565b9050828152602081018484840111156140d7576140d6615459565b5b6140e28482856151e8565b509392505050565b6000813590506140f981615b5f565b92915050565b600082601f8301126141145761411361544f565b5b8135614124848260208601613ff6565b91505092915050565b60008135905061413c81615b76565b92915050565b60008135905061415181615b8d565b92915050565b60008151905061416681615b8d565b92915050565b600082601f8301126141815761418061544f565b5b8135614191848260208601614066565b91505092915050565b600082601f8301126141af576141ae61544f565b5b81356141bf8482602086016140a8565b91505092915050565b6000813590506141d781615ba4565b92915050565b6000602082840312156141f3576141f2615463565b5b6000614201848285016140ea565b91505092915050565b6000806040838503121561422157614220615463565b5b600061422f858286016140ea565b9250506020614240858286016140ea565b9150509250929050565b60008060006060848603121561426357614262615463565b5b6000614271868287016140ea565b9350506020614282868287016140ea565b9250506040614293868287016141c8565b9150509250925092565b600080600080608085870312156142b7576142b6615463565b5b60006142c5878288016140ea565b94505060206142d6878288016140ea565b93505060406142e7878288016141c8565b925050606085013567ffffffffffffffff8111156143085761430761545e565b5b6143148782880161416c565b91505092959194509250565b6000806040838503121561433757614336615463565b5b6000614345858286016140ea565b92505060206143568582860161412d565b9150509250929050565b6000806040838503121561437757614376615463565b5b6000614385858286016140ea565b9250506020614396858286016141c8565b9150509250929050565b6000602082840312156143b6576143b5615463565b5b600082013567ffffffffffffffff8111156143d4576143d361545e565b5b6143e0848285016140ff565b91505092915050565b6000602082840312156143ff576143fe615463565b5b600061440d84828501614142565b91505092915050565b60006020828403121561442c5761442b615463565b5b600061443a84828501614157565b91505092915050565b60006020828403121561445957614458615463565b5b600082013567ffffffffffffffff8111156144775761447661545e565b5b6144838482850161419a565b91505092915050565b6000602082840312156144a2576144a1615463565b5b60006144b0848285016141c8565b91505092915050565b60006144c58383614a37565b60208301905092915050565b6144da81615174565b82525050565b6144f16144ec82615174565b6152d6565b82525050565b600061450282614ff3565b61450c8185615021565b935061451783614fce565b8060005b8381101561454857815161452f88826144b9565b975061453a83615014565b92505060018101905061451b565b5085935050505092915050565b61455e81615186565b82525050565b600061456f82614ffe565b6145798185615032565b93506145898185602086016151f7565b61459281615468565b840191505092915050565b60006145a882615009565b6145b28185615043565b93506145c28185602086016151f7565b6145cb81615468565b840191505092915050565b60006145e182615009565b6145eb8185615054565b93506145fb8185602086016151f7565b80840191505092915050565b600081546146148161522a565b61461e8186615054565b94506001821660008114614639576001811461464a5761467d565b60ff1983168652818601935061467d565b61465385614fde565b60005b8381101561467557815481890152600182019150602081019050614656565b838801955050505b50505092915050565b6000614693602b83615043565b915061469e82615486565b604082019050919050565b60006146b6603283615043565b91506146c1826154d5565b604082019050919050565b60006146d9602883615043565b91506146e482615524565b604082019050919050565b60006146fc602683615043565b915061470782615573565b604082019050919050565b600061471f601c83615043565b915061472a826155c2565b602082019050919050565b6000614742602483615043565b915061474d826155eb565b604082019050919050565b6000614765601983615043565b91506147708261563a565b602082019050919050565b6000614788601f83615043565b915061479382615663565b602082019050919050565b60006147ab602c83615043565b91506147b68261568c565b604082019050919050565b60006147ce601583615043565b91506147d9826156db565b602082019050919050565b60006147f1603883615043565b91506147fc82615704565b604082019050919050565b6000614814601283615043565b915061481f82615753565b602082019050919050565b6000614837602a83615043565b91506148428261577c565b604082019050919050565b600061485a602983615043565b9150614865826157cb565b604082019050919050565b600061487d602c83615043565b91506148888261581a565b604082019050919050565b60006148a0602083615043565b91506148ab82615869565b602082019050919050565b60006148c3600f83615043565b91506148ce82615892565b602082019050919050565b60006148e6602c83615043565b91506148f1826158bb565b604082019050919050565b6000614909602083615043565b91506149148261590a565b602082019050919050565b600061492c602983615043565b915061493782615933565b604082019050919050565b600061494f602f83615043565b915061495a82615982565b604082019050919050565b6000614972602183615043565b915061497d826159d1565b604082019050919050565b6000614995603183615043565b91506149a082615a20565b604082019050919050565b60006149b8601783615043565b91506149c382615a6f565b602082019050919050565b60006149db602c83615043565b91506149e682615a98565b604082019050919050565b60006149fe602083615043565b9150614a0982615ae7565b602082019050919050565b6000614a21602983615043565b9150614a2c82615b10565b604082019050919050565b614a40816151de565b82525050565b614a4f816151de565b82525050565b614a66614a61826151de565b6152fa565b82525050565b6000614a7882866145d6565b9150614a8482856145d6565b9150614a908284614607565b9150819050949350505050565b6000614aa98286614a55565b602082019150614ab98285614a55565b602082019150614ac982846144e0565b601482019150819050949350505050565b6000602082019050614aef60008301846144d1565b92915050565b6000608082019050614b0a60008301876144d1565b614b1760208301866144d1565b614b246040830185614a46565b8181036060830152614b368184614564565b905095945050505050565b60006020820190508181036000830152614b5b81846144f7565b905092915050565b6000602082019050614b786000830184614555565b92915050565b60006020820190508181036000830152614b98818461459d565b905092915050565b60006020820190508181036000830152614bb981614686565b9050919050565b60006020820190508181036000830152614bd9816146a9565b9050919050565b60006020820190508181036000830152614bf9816146cc565b9050919050565b60006020820190508181036000830152614c19816146ef565b9050919050565b60006020820190508181036000830152614c3981614712565b9050919050565b60006020820190508181036000830152614c5981614735565b9050919050565b60006020820190508181036000830152614c7981614758565b9050919050565b60006020820190508181036000830152614c998161477b565b9050919050565b60006020820190508181036000830152614cb98161479e565b9050919050565b60006020820190508181036000830152614cd9816147c1565b9050919050565b60006020820190508181036000830152614cf9816147e4565b9050919050565b60006020820190508181036000830152614d1981614807565b9050919050565b60006020820190508181036000830152614d398161482a565b9050919050565b60006020820190508181036000830152614d598161484d565b9050919050565b60006020820190508181036000830152614d7981614870565b9050919050565b60006020820190508181036000830152614d9981614893565b9050919050565b60006020820190508181036000830152614db9816148b6565b9050919050565b60006020820190508181036000830152614dd9816148d9565b9050919050565b60006020820190508181036000830152614df9816148fc565b9050919050565b60006020820190508181036000830152614e198161491f565b9050919050565b60006020820190508181036000830152614e3981614942565b9050919050565b60006020820190508181036000830152614e5981614965565b9050919050565b60006020820190508181036000830152614e7981614988565b9050919050565b60006020820190508181036000830152614e99816149ab565b9050919050565b60006020820190508181036000830152614eb9816149ce565b9050919050565b60006020820190508181036000830152614ed9816149f1565b9050919050565b60006020820190508181036000830152614ef981614a14565b9050919050565b6000602082019050614f156000830184614a46565b92915050565b6000614f25614f36565b9050614f31828261525c565b919050565b6000604051905090565b600067ffffffffffffffff821115614f5b57614f5a615420565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614f8757614f86615420565b5b614f9082615468565b9050602081019050919050565b600067ffffffffffffffff821115614fb857614fb7615420565b5b614fc182615468565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061506a826151de565b9150615075836151de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150aa576150a9615335565b5b828201905092915050565b60006150c0826151de565b91506150cb836151de565b9250826150db576150da615364565b5b828204905092915050565b60006150f1826151de565b91506150fc836151de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561513557615134615335565b5b828202905092915050565b600061514b826151de565b9150615156836151de565b92508282101561516957615168615335565b5b828203905092915050565b600061517f826151be565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156152155780820151818401526020810190506151fa565b83811115615224576000848401525b50505050565b6000600282049050600182168061524257607f821691505b6020821081141561525657615255615393565b5b50919050565b61526582615468565b810181811067ffffffffffffffff8211171561528457615283615420565b5b80604052505050565b6000615298826151de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152cb576152ca615335565b5b600182019050919050565b60006152e1826152e8565b9050919050565b60006152f382615479565b9050919050565b6000819050919050565b600061530f826151de565b915061531a836151de565b92508261532a57615329615364565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820737570706c7960008201527f206f66204e465473000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5075626c696373616c65206d757374206265204f4e0000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f50726573616c65206d757374206265204f4e0000000000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820746f6b656e7360008201527f20666f722070726573616c650000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f53616c65206d757374206265204f4e0000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f596f75206172656e27742077686974656c697374656421000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4d696e742061626d6f756e74206d757374206265206d6f7265207468616e2030600082015250565b7f507572636861736520776f756c6420657863656564206d617820746f6b656e7360008201527f20666f722073616c650000000000000000000000000000000000000000000000602082015250565b615b6881615174565b8114615b7357600080fd5b50565b615b7f81615186565b8114615b8a57600080fd5b50565b615b9681615192565b8114615ba157600080fd5b50565b615bad816151de565b8114615bb857600080fd5b5056fea264697066735822122088340e4fb95673cc0f343bc32f62ef7877292cb9fedecf337e6c7b0f6269e88064736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000144c696c20447564657320436c7562202d204c444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d614b5058314c6b464e445864375557716845704d4a656d69343974377846464b7061776843726a41726b76462f000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d614b5058314c6b464e445864375557716845704d4a656d69343974377846464b7061776843726a41726b76462f00000000000000000000
Deployed Bytecode
0x6080604052600436106103765760003560e01c80636f8b44b0116101d1578063ae9b051c11610102578063d5abeb01116100a0578063f2c4ce1e1161006f578063f2c4ce1e14610c81578063f2fde38b14610caa578063f53280f714610cd3578063fe60d12c14610cfe57610376565b8063d5abeb0114610bd9578063da3ef23f14610c04578063e985e9c514610c2d578063ed19d26514610c6a57610376565b8063c87b56dd116100dc578063c87b56dd14610b1b578063c99bc1c714610b58578063cc9ff9c614610b83578063cd56117914610bae57610376565b8063ae9b051c14610a9e578063b88d4fde14610ac7578063c668286214610af057610376565b80638da5cb5b1161016f578063a16b638411610149578063a16b638414610a0a578063a1f92b3714610a33578063a22cb46514610a4a578063a2be7c2914610a7357610376565b80638da5cb5b1461098b5780638dbb7c06146109b657806395d89b41146109df57610376565b806372250380116101ab57806372250380146108f3578063785fa6271461091e5780637cd9591214610949578063853828b61461097457610376565b80636f8b44b01461087657806370a082311461089f578063715018a6146108dc57610376565b80633b2c3fb6116102ab57806351830227116102495780635c624220116102235780635c624220146107a85780635e1045ec146107e55780636352211e1461080e5780636c0360eb1461084b57610376565b8063518302271461073d57806354a2383b1461076857806355f804b31461077f57610376565b8063438b630011610285578063438b63001461066f578063453afb0f146106ac5780634f6ccce7146106d7578063513865321461071457610376565b80633b2c3fb61461061357806340c10f191461062a57806342842e0e1461064657610376565b80631e7269c51161031857806323b872dd116102f257806323b872dd146105595780632ad0a197146105825780632d6e71b6146105ad5780632f745c59146105d657610376565b80631e7269c5146104ca57806321c95bdf14610507578063231b07161461053057610376565b8063095ea7b311610354578063095ea7b3146104205780630b377e981461044957806318160ddd146104745780631dffa7cd1461049f57610376565b806301ffc9a71461037b57806306fdde03146103b8578063081812fc146103e3575b600080fd5b34801561038757600080fd5b506103a2600480360381019061039d91906143e9565b610d29565b6040516103af9190614b63565b60405180910390f35b3480156103c457600080fd5b506103cd610da3565b6040516103da9190614b7e565b60405180910390f35b3480156103ef57600080fd5b5061040a6004803603810190610405919061448c565b610e35565b6040516104179190614ada565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190614360565b610eba565b005b34801561045557600080fd5b5061045e610fd2565b60405161046b9190614b63565b60405180910390f35b34801561048057600080fd5b50610489610fe5565b6040516104969190614f00565b60405180910390f35b3480156104ab57600080fd5b506104b4610ff2565b6040516104c19190614f00565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec91906141dd565b610ff8565b6040516104fe9190614f00565b60405180910390f35b34801561051357600080fd5b5061052e6004803603810190610529919061448c565b611010565b005b34801561053c57600080fd5b506105576004803603810190610552919061448c565b611096565b005b34801561056557600080fd5b50610580600480360381019061057b919061424a565b61111c565b005b34801561058e57600080fd5b5061059761117c565b6040516105a49190614f00565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf919061448c565b611182565b005b3480156105e257600080fd5b506105fd60048036038101906105f89190614360565b611208565b60405161060a9190614f00565b60405180910390f35b34801561061f57600080fd5b506106286112ad565b005b610644600480360381019061063f9190614360565b611355565b005b34801561065257600080fd5b5061066d6004803603810190610668919061424a565b611ad8565b005b34801561067b57600080fd5b50610696600480360381019061069191906141dd565b611af8565b6040516106a39190614b41565b60405180910390f35b3480156106b857600080fd5b506106c1611ba6565b6040516106ce9190614f00565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f9919061448c565b611bac565b60405161070b9190614f00565b60405180910390f35b34801561072057600080fd5b5061073b6004803603810190610736919061448c565b611c1d565b005b34801561074957600080fd5b50610752611ca3565b60405161075f9190614b63565b60405180910390f35b34801561077457600080fd5b5061077d611cb6565b005b34801561078b57600080fd5b506107a660048036038101906107a19190614443565b611d5e565b005b3480156107b457600080fd5b506107cf60048036038101906107ca91906141dd565b611df4565b6040516107dc9190614b63565b60405180910390f35b3480156107f157600080fd5b5061080c600480360381019061080791906143a0565b611e14565b005b34801561081a57600080fd5b506108356004803603810190610830919061448c565b611f25565b6040516108429190614ada565b60405180910390f35b34801561085757600080fd5b50610860611fd7565b60405161086d9190614b7e565b60405180910390f35b34801561088257600080fd5b5061089d6004803603810190610898919061448c565b612065565b005b3480156108ab57600080fd5b506108c660048036038101906108c191906141dd565b6120eb565b6040516108d39190614f00565b60405180910390f35b3480156108e857600080fd5b506108f16121a3565b005b3480156108ff57600080fd5b5061090861222b565b6040516109159190614b7e565b60405180910390f35b34801561092a57600080fd5b506109336122b9565b6040516109409190614f00565b60405180910390f35b34801561095557600080fd5b5061095e6122bf565b60405161096b9190614b63565b60405180910390f35b34801561098057600080fd5b506109896122d2565b005b34801561099757600080fd5b506109a061239d565b6040516109ad9190614ada565b60405180910390f35b3480156109c257600080fd5b506109dd60048036038101906109d8919061448c565b6123c7565b005b3480156109eb57600080fd5b506109f461244d565b604051610a019190614b7e565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c919061448c565b6124df565b005b348015610a3f57600080fd5b50610a48612565565b005b348015610a5657600080fd5b50610a716004803603810190610a6c9190614320565b61260d565b005b348015610a7f57600080fd5b50610a8861278e565b604051610a959190614b63565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac0919061448c565b6127a1565b005b348015610ad357600080fd5b50610aee6004803603810190610ae9919061429d565b612867565b005b348015610afc57600080fd5b50610b056128c9565b604051610b129190614b7e565b60405180910390f35b348015610b2757600080fd5b50610b426004803603810190610b3d919061448c565b612957565b604051610b4f9190614b7e565b60405180910390f35b348015610b6457600080fd5b50610b6d612ab0565b604051610b7a9190614f00565b60405180910390f35b348015610b8f57600080fd5b50610b98612ab6565b604051610ba59190614f00565b60405180910390f35b348015610bba57600080fd5b50610bc3612abc565b604051610bd09190614f00565b60405180910390f35b348015610be557600080fd5b50610bee612ac2565b604051610bfb9190614f00565b60405180910390f35b348015610c1057600080fd5b50610c2b6004803603810190610c269190614443565b612ac8565b005b348015610c3957600080fd5b50610c546004803603810190610c4f919061420a565b612b5e565b604051610c619190614b63565b60405180910390f35b348015610c7657600080fd5b50610c7f612bf2565b005b348015610c8d57600080fd5b50610ca86004803603810190610ca39190614443565b612c9a565b005b348015610cb657600080fd5b50610cd16004803603810190610ccc91906141dd565b612d30565b005b348015610cdf57600080fd5b50610ce8612e28565b604051610cf59190614f00565b60405180910390f35b348015610d0a57600080fd5b50610d13612e2e565b604051610d209190614f00565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9c5750610d9b82612e34565b5b9050919050565b606060008054610db29061522a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde9061522a565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b5050505050905090565b6000610e4082612f16565b610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614dc0565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ec582611f25565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90614e40565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f55612f82565b73ffffffffffffffffffffffffffffffffffffffff161480610f845750610f8381610f7e612f82565b612b5e565b5b610fc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fba90614ce0565b60405180910390fd5b610fcd8383612f8a565b505050565b600d60029054906101000a900460ff1681565b6000600880549050905090565b60165481565b60196020528060005260406000206000915090505481565b611018612f82565b73ffffffffffffffffffffffffffffffffffffffff1661103661239d565b73ffffffffffffffffffffffffffffffffffffffff161461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108390614de0565b60405180910390fd5b8060138190555050565b61109e612f82565b73ffffffffffffffffffffffffffffffffffffffff166110bc61239d565b73ffffffffffffffffffffffffffffffffffffffff1614611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990614de0565b60405180910390fd5b8060118190555050565b61112d611127612f82565b82613043565b61116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614e60565b60405180910390fd5b611177838383613121565b505050565b60145481565b61118a612f82565b73ffffffffffffffffffffffffffffffffffffffff166111a861239d565b73ffffffffffffffffffffffffffffffffffffffff16146111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590614de0565b60405180910390fd5b8060108190555050565b6000611213836120eb565b8210611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90614ba0565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6112b5612f82565b73ffffffffffffffffffffffffffffffffffffffff166112d361239d565b73ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090614de0565b60405180910390fd5b600d60039054906101000a900460ff1615600d60036101000a81548160ff021916908315150217905550565b6000600d60009054906101000a900460ff168061137e5750600d60019054906101000a900460ff165b9050806113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790614da0565b60405180910390fd5b60006113ca610fe5565b90506113d461239d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461185a57600d60009054906101000a900460ff161561167457600d60009054906101000a900460ff1661146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190614d00565b60405180910390fd5b600083116114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a490614ec0565b60405180910390fd5b60011515601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790614e80565b60405180910390fd5b600f54838261154f919061505f565b1115611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790614be0565b60405180910390fd5b60135483601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115de919061505f565b111561161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690614d60565b60405180910390fd5b8260115461162d91906150e6565b34101561166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690614c80565b60405180910390fd5b611859565b600d60019054906101000a900460ff161561185857600d60019054906101000a900460ff166116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90614cc0565b60405180910390fd5b6000831161171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290614ec0565b60405180910390fd5b601054600f5461172b9190615140565b8382611737919061505f565b1115611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90614be0565b60405180910390fd5b60145483601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117c6919061505f565b1115611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90614ee0565b60405180910390fd5b8260125461181591906150e6565b341015611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614c80565b60405180910390fd5b5b5b5b6000600190505b8381116118905761187d858284611878919061505f565b61337d565b80806118889061528d565b915050611861565b5082601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118e0919061505f565b92505081905550600d60029054906101000a900460ff16801561190557506000601554115b8015611944575061191461239d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611ad257600061195361339b565b9050600181108015611966575060165447115b156119d4578473ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f193505050501580156119b3573d6000803e3d6000fd5b50601654601560008282546119c89190615140565b92505081905550611ad0565b6004811080156119e5575060175447115b15611a53578473ffffffffffffffffffffffffffffffffffffffff166108fc6017549081150290604051600060405180830381858888f19350505050158015611a32573d6000803e3d6000fd5b5060175460156000828254611a479190615140565b92505081905550611acf565b605081108015611a64575060185447115b15611ace578473ffffffffffffffffffffffffffffffffffffffff166108fc6018549081150290604051600060405180830381858888f19350505050158015611ab1573d6000803e3d6000fd5b5060185460156000828254611ac69190615140565b925050819055505b5b5b505b50505050565b611af383838360405180602001604052806000815250612867565b505050565b60606000611b05836120eb565b905060008167ffffffffffffffff811115611b2357611b22615420565b5b604051908082528060200260200182016040528015611b515781602001602082028036833780820191505090505b50905060005b82811015611b9b57611b698582611208565b828281518110611b7c57611b7b6153f1565b5b6020026020010181815250508080611b939061528d565b915050611b57565b508092505050919050565b60125481565b6000611bb6610fe5565b8210611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee90614ea0565b60405180910390fd5b60088281548110611c0b57611c0a6153f1565b5b90600052602060002001549050919050565b611c25612f82565b73ffffffffffffffffffffffffffffffffffffffff16611c4361239d565b73ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090614de0565b60405180910390fd5b8060158190555050565b600d60039054906101000a900460ff1681565b611cbe612f82565b73ffffffffffffffffffffffffffffffffffffffff16611cdc61239d565b73ffffffffffffffffffffffffffffffffffffffff1614611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990614de0565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b611d66612f82565b73ffffffffffffffffffffffffffffffffffffffff16611d8461239d565b73ffffffffffffffffffffffffffffffffffffffff1614611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd190614de0565b60405180910390fd5b80600b9080519060200190611df0929190613f53565b5050565b601a6020528060005260406000206000915054906101000a900460ff1681565b611e1c612f82565b73ffffffffffffffffffffffffffffffffffffffff16611e3a61239d565b73ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790614de0565b60405180910390fd5b60005b8151811015611f21576001601a6000848481518110611eb557611eb46153f1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611f199061528d565b915050611e93565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc590614d40565b60405180910390fd5b80915050919050565b600b8054611fe49061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546120109061522a565b801561205d5780601f106120325761010080835404028352916020019161205d565b820191906000526020600020905b81548152906001019060200180831161204057829003601f168201915b505050505081565b61206d612f82565b73ffffffffffffffffffffffffffffffffffffffff1661208b61239d565b73ffffffffffffffffffffffffffffffffffffffff16146120e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d890614de0565b60405180910390fd5b80600f8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215390614d20565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121ab612f82565b73ffffffffffffffffffffffffffffffffffffffff166121c961239d565b73ffffffffffffffffffffffffffffffffffffffff161461221f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221690614de0565b60405180910390fd5b61222960006133e2565b565b600e80546122389061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546122649061522a565b80156122b15780601f10612286576101008083540402835291602001916122b1565b820191906000526020600020905b81548152906001019060200180831161229457829003601f168201915b505050505081565b60155481565b600d60019054906101000a900460ff1681565b6122da612f82565b73ffffffffffffffffffffffffffffffffffffffff166122f861239d565b73ffffffffffffffffffffffffffffffffffffffff161461234e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234590614de0565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612399573d6000803e3d6000fd5b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6123cf612f82565b73ffffffffffffffffffffffffffffffffffffffff166123ed61239d565b73ffffffffffffffffffffffffffffffffffffffff1614612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614de0565b60405180910390fd5b8060128190555050565b60606001805461245c9061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546124889061522a565b80156124d55780601f106124aa576101008083540402835291602001916124d5565b820191906000526020600020905b8154815290600101906020018083116124b857829003601f168201915b5050505050905090565b6124e7612f82565b73ffffffffffffffffffffffffffffffffffffffff1661250561239d565b73ffffffffffffffffffffffffffffffffffffffff161461255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290614de0565b60405180910390fd5b8060148190555050565b61256d612f82565b73ffffffffffffffffffffffffffffffffffffffff1661258b61239d565b73ffffffffffffffffffffffffffffffffffffffff16146125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614de0565b60405180910390fd5b600d60029054906101000a900460ff1615600d60026101000a81548160ff021916908315150217905550565b612615612f82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267a90614c60565b60405180910390fd5b8060056000612690612f82565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661273d612f82565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516127829190614b63565b60405180910390a35050565b600d60009054906101000a900460ff1681565b6127a9612f82565b73ffffffffffffffffffffffffffffffffffffffff166127c761239d565b73ffffffffffffffffffffffffffffffffffffffff161461281d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281490614de0565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612863573d6000803e3d6000fd5b5050565b612878612872612f82565b83613043565b6128b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ae90614e60565b60405180910390fd5b6128c3848484846134a8565b50505050565b600c80546128d69061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546129029061522a565b801561294f5780601f106129245761010080835404028352916020019161294f565b820191906000526020600020905b81548152906001019060200180831161293257829003601f168201915b505050505081565b606061296282612f16565b6129a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299890614e20565b60405180910390fd5b60001515600d60039054906101000a900460ff1615151415612a4f57600e80546129ca9061522a565b80601f01602080910402602001604051908101604052809291908181526020018280546129f69061522a565b8015612a435780601f10612a1857610100808354040283529160200191612a43565b820191906000526020600020905b815481529060010190602001808311612a2657829003601f168201915b50505050509050612aab565b6000612a59613504565b90506000815111612a795760405180602001604052806000815250612aa7565b80612a8384613596565b600c604051602001612a9793929190614a6c565b6040516020818303038152906040525b9150505b919050565b60135481565b60115481565b60185481565b600f5481565b612ad0612f82565b73ffffffffffffffffffffffffffffffffffffffff16612aee61239d565b73ffffffffffffffffffffffffffffffffffffffff1614612b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3b90614de0565b60405180910390fd5b80600c9080519060200190612b5a929190613f53565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612bfa612f82565b73ffffffffffffffffffffffffffffffffffffffff16612c1861239d565b73ffffffffffffffffffffffffffffffffffffffff1614612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6590614de0565b60405180910390fd5b600d60019054906101000a900460ff1615600d60016101000a81548160ff021916908315150217905550565b612ca2612f82565b73ffffffffffffffffffffffffffffffffffffffff16612cc061239d565b73ffffffffffffffffffffffffffffffffffffffff1614612d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0d90614de0565b60405180910390fd5b80600e9080519060200190612d2c929190613f53565b5050565b612d38612f82565b73ffffffffffffffffffffffffffffffffffffffff16612d5661239d565b73ffffffffffffffffffffffffffffffffffffffff1614612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1390614c00565b60405180910390fd5b612e25816133e2565b50565b60175481565b60105481565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612eff57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612f0f5750612f0e826136f7565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612ffd83611f25565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061304e82612f16565b61308d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308490614ca0565b60405180910390fd5b600061309883611f25565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061310757508373ffffffffffffffffffffffffffffffffffffffff166130ef84610e35565b73ffffffffffffffffffffffffffffffffffffffff16145b8061311857506131178185612b5e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661314182611f25565b73ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e90614e00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131fe90614c40565b60405180910390fd5b613212838383613761565b61321d600082612f8a565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461326d9190615140565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132c4919061505f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b613397828260405180602001604052806000815250613875565b5050565b6000806103e74244336040516020016133b693929190614a9d565b6040516020818303038152906040528051906020012060001c6133d99190615304565b90508091505090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6134b3848484613121565b6134bf848484846138d0565b6134fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f590614bc0565b60405180910390fd5b50505050565b6060600b80546135139061522a565b80601f016020809104026020016040519081016040528092919081815260200182805461353f9061522a565b801561358c5780601f106135615761010080835404028352916020019161358c565b820191906000526020600020905b81548152906001019060200180831161356f57829003601f168201915b5050505050905090565b606060008214156135de576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506136f2565b600082905060005b600082146136105780806135f99061528d565b915050600a8261360991906150b5565b91506135e6565b60008167ffffffffffffffff81111561362c5761362b615420565b5b6040519080825280601f01601f19166020018201604052801561365e5781602001600182028036833780820191505090505b5090505b600085146136eb576001826136779190615140565b9150600a856136869190615304565b6030613692919061505f565b60f81b8183815181106136a8576136a76153f1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856136e491906150b5565b9450613662565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61376c838383613a67565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156137af576137aa81613a6c565b6137ee565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146137ed576137ec8382613ab5565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138315761382c81613c22565b613870565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461386f5761386e8282613cf3565b5b5b505050565b61387f8383613d72565b61388c60008484846138d0565b6138cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c290614bc0565b60405180910390fd5b505050565b60006138f18473ffffffffffffffffffffffffffffffffffffffff16613f40565b15613a5a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261391a612f82565b8786866040518563ffffffff1660e01b815260040161393c9493929190614af5565b602060405180830381600087803b15801561395657600080fd5b505af192505050801561398757506040513d601f19601f820116820180604052508101906139849190614416565b60015b613a0a573d80600081146139b7576040519150601f19603f3d011682016040523d82523d6000602084013e6139bc565b606091505b50600081511415613a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f990614bc0565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613a5f565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613ac2846120eb565b613acc9190615140565b9050600060076000848152602001908152602001600020549050818114613bb1576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613c369190615140565b9050600060096000848152602001908152602001600020549050600060088381548110613c6657613c656153f1565b5b906000526020600020015490508060088381548110613c8857613c876153f1565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613cd757613cd66153c2565b5b6001900381819060005260206000200160009055905550505050565b6000613cfe836120eb565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd990614d80565b60405180910390fd5b613deb81612f16565b15613e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e2290614c20565b60405180910390fd5b613e3760008383613761565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e87919061505f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054613f5f9061522a565b90600052602060002090601f016020900481019282613f815760008555613fc8565b82601f10613f9a57805160ff1916838001178555613fc8565b82800160010185558215613fc8579182015b82811115613fc7578251825591602001919060010190613fac565b5b509050613fd59190613fd9565b5090565b5b80821115613ff2576000816000905550600101613fda565b5090565b600061400961400484614f40565b614f1b565b9050808382526020820190508285602086028201111561402c5761402b615454565b5b60005b8581101561405c578161404288826140ea565b84526020840193506020830192505060018101905061402f565b5050509392505050565b600061407961407484614f6c565b614f1b565b90508281526020810184848401111561409557614094615459565b5b6140a08482856151e8565b509392505050565b60006140bb6140b684614f9d565b614f1b565b9050828152602081018484840111156140d7576140d6615459565b5b6140e28482856151e8565b509392505050565b6000813590506140f981615b5f565b92915050565b600082601f8301126141145761411361544f565b5b8135614124848260208601613ff6565b91505092915050565b60008135905061413c81615b76565b92915050565b60008135905061415181615b8d565b92915050565b60008151905061416681615b8d565b92915050565b600082601f8301126141815761418061544f565b5b8135614191848260208601614066565b91505092915050565b600082601f8301126141af576141ae61544f565b5b81356141bf8482602086016140a8565b91505092915050565b6000813590506141d781615ba4565b92915050565b6000602082840312156141f3576141f2615463565b5b6000614201848285016140ea565b91505092915050565b6000806040838503121561422157614220615463565b5b600061422f858286016140ea565b9250506020614240858286016140ea565b9150509250929050565b60008060006060848603121561426357614262615463565b5b6000614271868287016140ea565b9350506020614282868287016140ea565b9250506040614293868287016141c8565b9150509250925092565b600080600080608085870312156142b7576142b6615463565b5b60006142c5878288016140ea565b94505060206142d6878288016140ea565b93505060406142e7878288016141c8565b925050606085013567ffffffffffffffff8111156143085761430761545e565b5b6143148782880161416c565b91505092959194509250565b6000806040838503121561433757614336615463565b5b6000614345858286016140ea565b92505060206143568582860161412d565b9150509250929050565b6000806040838503121561437757614376615463565b5b6000614385858286016140ea565b9250506020614396858286016141c8565b9150509250929050565b6000602082840312156143b6576143b5615463565b5b600082013567ffffffffffffffff8111156143d4576143d361545e565b5b6143e0848285016140ff565b91505092915050565b6000602082840312156143ff576143fe615463565b5b600061440d84828501614142565b91505092915050565b60006020828403121561442c5761442b615463565b5b600061443a84828501614157565b91505092915050565b60006020828403121561445957614458615463565b5b600082013567ffffffffffffffff8111156144775761447661545e565b5b6144838482850161419a565b91505092915050565b6000602082840312156144a2576144a1615463565b5b60006144b0848285016141c8565b91505092915050565b60006144c58383614a37565b60208301905092915050565b6144da81615174565b82525050565b6144f16144ec82615174565b6152d6565b82525050565b600061450282614ff3565b61450c8185615021565b935061451783614fce565b8060005b8381101561454857815161452f88826144b9565b975061453a83615014565b92505060018101905061451b565b5085935050505092915050565b61455e81615186565b82525050565b600061456f82614ffe565b6145798185615032565b93506145898185602086016151f7565b61459281615468565b840191505092915050565b60006145a882615009565b6145b28185615043565b93506145c28185602086016151f7565b6145cb81615468565b840191505092915050565b60006145e182615009565b6145eb8185615054565b93506145fb8185602086016151f7565b80840191505092915050565b600081546146148161522a565b61461e8186615054565b94506001821660008114614639576001811461464a5761467d565b60ff1983168652818601935061467d565b61465385614fde565b60005b8381101561467557815481890152600182019150602081019050614656565b838801955050505b50505092915050565b6000614693602b83615043565b915061469e82615486565b604082019050919050565b60006146b6603283615043565b91506146c1826154d5565b604082019050919050565b60006146d9602883615043565b91506146e482615524565b604082019050919050565b60006146fc602683615043565b915061470782615573565b604082019050919050565b600061471f601c83615043565b915061472a826155c2565b602082019050919050565b6000614742602483615043565b915061474d826155eb565b604082019050919050565b6000614765601983615043565b91506147708261563a565b602082019050919050565b6000614788601f83615043565b915061479382615663565b602082019050919050565b60006147ab602c83615043565b91506147b68261568c565b604082019050919050565b60006147ce601583615043565b91506147d9826156db565b602082019050919050565b60006147f1603883615043565b91506147fc82615704565b604082019050919050565b6000614814601283615043565b915061481f82615753565b602082019050919050565b6000614837602a83615043565b91506148428261577c565b604082019050919050565b600061485a602983615043565b9150614865826157cb565b604082019050919050565b600061487d602c83615043565b91506148888261581a565b604082019050919050565b60006148a0602083615043565b91506148ab82615869565b602082019050919050565b60006148c3600f83615043565b91506148ce82615892565b602082019050919050565b60006148e6602c83615043565b91506148f1826158bb565b604082019050919050565b6000614909602083615043565b91506149148261590a565b602082019050919050565b600061492c602983615043565b915061493782615933565b604082019050919050565b600061494f602f83615043565b915061495a82615982565b604082019050919050565b6000614972602183615043565b915061497d826159d1565b604082019050919050565b6000614995603183615043565b91506149a082615a20565b604082019050919050565b60006149b8601783615043565b91506149c382615a6f565b602082019050919050565b60006149db602c83615043565b91506149e682615a98565b604082019050919050565b60006149fe602083615043565b9150614a0982615ae7565b602082019050919050565b6000614a21602983615043565b9150614a2c82615b10565b604082019050919050565b614a40816151de565b82525050565b614a4f816151de565b82525050565b614a66614a61826151de565b6152fa565b82525050565b6000614a7882866145d6565b9150614a8482856145d6565b9150614a908284614607565b9150819050949350505050565b6000614aa98286614a55565b602082019150614ab98285614a55565b602082019150614ac982846144e0565b601482019150819050949350505050565b6000602082019050614aef60008301846144d1565b92915050565b6000608082019050614b0a60008301876144d1565b614b1760208301866144d1565b614b246040830185614a46565b8181036060830152614b368184614564565b905095945050505050565b60006020820190508181036000830152614b5b81846144f7565b905092915050565b6000602082019050614b786000830184614555565b92915050565b60006020820190508181036000830152614b98818461459d565b905092915050565b60006020820190508181036000830152614bb981614686565b9050919050565b60006020820190508181036000830152614bd9816146a9565b9050919050565b60006020820190508181036000830152614bf9816146cc565b9050919050565b60006020820190508181036000830152614c19816146ef565b9050919050565b60006020820190508181036000830152614c3981614712565b9050919050565b60006020820190508181036000830152614c5981614735565b9050919050565b60006020820190508181036000830152614c7981614758565b9050919050565b60006020820190508181036000830152614c998161477b565b9050919050565b60006020820190508181036000830152614cb98161479e565b9050919050565b60006020820190508181036000830152614cd9816147c1565b9050919050565b60006020820190508181036000830152614cf9816147e4565b9050919050565b60006020820190508181036000830152614d1981614807565b9050919050565b60006020820190508181036000830152614d398161482a565b9050919050565b60006020820190508181036000830152614d598161484d565b9050919050565b60006020820190508181036000830152614d7981614870565b9050919050565b60006020820190508181036000830152614d9981614893565b9050919050565b60006020820190508181036000830152614db9816148b6565b9050919050565b60006020820190508181036000830152614dd9816148d9565b9050919050565b60006020820190508181036000830152614df9816148fc565b9050919050565b60006020820190508181036000830152614e198161491f565b9050919050565b60006020820190508181036000830152614e3981614942565b9050919050565b60006020820190508181036000830152614e5981614965565b9050919050565b60006020820190508181036000830152614e7981614988565b9050919050565b60006020820190508181036000830152614e99816149ab565b9050919050565b60006020820190508181036000830152614eb9816149ce565b9050919050565b60006020820190508181036000830152614ed9816149f1565b9050919050565b60006020820190508181036000830152614ef981614a14565b9050919050565b6000602082019050614f156000830184614a46565b92915050565b6000614f25614f36565b9050614f31828261525c565b919050565b6000604051905090565b600067ffffffffffffffff821115614f5b57614f5a615420565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614f8757614f86615420565b5b614f9082615468565b9050602081019050919050565b600067ffffffffffffffff821115614fb857614fb7615420565b5b614fc182615468565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061506a826151de565b9150615075836151de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156150aa576150a9615335565b5b828201905092915050565b60006150c0826151de565b91506150cb836151de565b9250826150db576150da615364565b5b828204905092915050565b60006150f1826151de565b91506150fc836151de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561513557615134615335565b5b828202905092915050565b600061514b826151de565b9150615156836151de565b92508282101561516957615168615335565b5b828203905092915050565b600061517f826151be565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156152155780820151818401526020810190506151fa565b83811115615224576000848401525b50505050565b6000600282049050600182168061524257607f821691505b6020821081141561525657615255615393565b5b50919050565b61526582615468565b810181811067ffffffffffffffff8211171561528457615283615420565b5b80604052505050565b6000615298826151de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152cb576152ca615335565b5b600182019050919050565b60006152e1826152e8565b9050919050565b60006152f382615479565b9050919050565b6000819050919050565b600061530f826151de565b915061531a836151de565b92508261532a57615329615364565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820737570706c7960008201527f206f66204e465473000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5075626c696373616c65206d757374206265204f4e0000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f50726573616c65206d757374206265204f4e0000000000000000000000000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820746f6b656e7360008201527f20666f722070726573616c650000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f53616c65206d757374206265204f4e0000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f596f75206172656e27742077686974656c697374656421000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4d696e742061626d6f756e74206d757374206265206d6f7265207468616e2030600082015250565b7f507572636861736520776f756c6420657863656564206d617820746f6b656e7360008201527f20666f722073616c650000000000000000000000000000000000000000000000602082015250565b615b6881615174565b8114615b7357600080fd5b50565b615b7f81615186565b8114615b8a57600080fd5b50565b615b9681615192565b8114615ba157600080fd5b50565b615bad816151de565b8114615bb857600080fd5b5056fea264697066735822122088340e4fb95673cc0f343bc32f62ef7877292cb9fedecf337e6c7b0f6269e88064736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000144c696c20447564657320436c7562202d204c444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000034c444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d614b5058314c6b464e445864375557716845704d4a656d69343974377846464b7061776843726a41726b76462f000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d614b5058314c6b464e445864375557716845704d4a656d69343974377846464b7061776843726a41726b76462f00000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Lil Dudes Club - LDC
Arg [1] : _symbol (string): LDC
Arg [2] : _initBaseURI (string): ipfs://QmaKPX1LkFNDXd7UWqhEpMJemi49t7xFFKpawhCrjArkvF/
Arg [3] : _initNotRevealedURI (string): ipfs://QmaKPX1LkFNDXd7UWqhEpMJemi49t7xFFKpawhCrjArkvF/
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [5] : 4c696c20447564657320436c7562202d204c4443000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4c44430000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [9] : 697066733a2f2f516d614b5058314c6b464e445864375557716845704d4a656d
Arg [10] : 69343974377846464b7061776843726a41726b76462f00000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [12] : 697066733a2f2f516d614b5058314c6b464e445864375557716845704d4a656d
Arg [13] : 69343974377846464b7061776843726a41726b76462f00000000000000000000
Deployed Bytecode Sourcemap
115:6651:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;909:290:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2549:98:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4182:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3720:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;328:36:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1680:111:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;810:46:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;992:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5316:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5096:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5196:364:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;703:42:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5706:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1278:331:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5969:72:10;;;;;;;;;;;;;:::i;:::-;;1507:1968;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5626:179:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3667:375:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;594:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1863:308:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4992:100:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;368:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5798:75;;;;;;;;;;;;;:::i;:::-;;6145:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1088:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4759:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2174:313:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;194:21:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5609:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1834:283:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1620:92:11;;;;;;;;;;;;;:::i;:::-;;400:28:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;749:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;292:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:140;;;;;;;;;;;;;:::i;:::-;;988:85:11;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5200:112:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2711:102:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5457:148:10;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6045:96;;;;;;;;;;;;;:::i;:::-;;4544:318:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;260:29:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6663:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5871:354:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;219:37:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4046:694;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;660:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;531:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;930;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;432:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6375:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4928:206:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5881:84:10;;;;;;;;;;;;;:::i;:::-;;6245:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1861:223:11;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;869:46:10;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;467:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;909:290:4;1051:4;1105:35;1090:50;;;:11;:50;;;;:102;;;;1156:36;1180:11;1156:23;:36::i;:::-;1090:102;1071:121;;909:290;;;:::o;2549:98:3:-;2603:13;2635:5;2628:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2549:98;:::o;4182:295::-;4298:7;4342:16;4350:7;4342;:16::i;:::-;4321:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;4446:15;:24;4462:7;4446:24;;;;;;;;;;;;;;;;;;;;;4439:31;;4182:295;;;:::o;3720:401::-;3800:13;3816:23;3831:7;3816:14;:23::i;:::-;3800:39;;3863:5;3857:11;;:2;:11;;;;3849:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3954:5;3938:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3963:37;3980:5;3987:12;:10;:12::i;:::-;3963:16;:37::i;:::-;3938:62;3917:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;4093:21;4102:2;4106:7;4093:8;:21::i;:::-;3790:331;3720:401;;:::o;328:36:10:-;;;;;;;;;;;;;:::o;1680:111:4:-;1741:7;1767:10;:17;;;;1760:24;;1680:111;:::o;810:46:10:-;;;;:::o;992:42::-;;;;;;;;;;;;;;;;;:::o;5316:136::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5426:21:10::1;5403:20;:44;;;;5316:136:::0;:::o;5096:100::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5179:12:10::1;5165:11;:26;;;;5096:100:::0;:::o;5196:364:3:-;5398:41;5417:12;:10;:12::i;:::-;5431:7;5398:18;:41::i;:::-;5377:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;5525:28;5535:4;5541:2;5545:7;5525:9;:28::i;:::-;5196:364;;;:::o;703:42:10:-;;;;:::o;5706:88::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5780:9:10::1;5769:8;:20;;;;5706:88:::0;:::o;1278:331:4:-;1415:7;1467:23;1484:5;1467:16;:23::i;:::-;1459:5;:31;1438:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;1576:12;:19;1589:5;1576:19;;;;;;;;;;;;;;;:26;1596:5;1576:26;;;;;;;;;;;;1569:33;;1278:331;;;;:::o;5969:72:10:-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6028:8:10::1;;;;;;;;;;;6027:9;6016:8;;:20;;;;;;;;;;;;;;;;;;5969:72::o:0;1507:1968::-;1576:11;1591:9;;;;;;;;;;;:25;;;;1604:12;;;;;;;;;;;1591:25;1576:41;;1631:6;1623:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1669:14;1686:13;:11;:13::i;:::-;1669:30;;1724:7;:5;:7::i;:::-;1710:21;;:10;:21;;;1706:1048;;1744:9;;;;;;;;;;;1740:1008;;;1771:9;;;;;;;;;;;1763:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;1833:1;1819:11;:15;1811:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1921:4;1887:38;;:18;:30;1906:10;1887:30;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;1879:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1993:9;;1978:11;1969:6;:20;;;;:::i;:::-;:33;;1961:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;2099:20;;2084:11;2063:6;:18;2070:10;2063:18;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;:56;;2055:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;2211:11;2197;;:25;;;;:::i;:::-;2184:9;:38;;2176:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;1740:1008;;;2277:12;;;;;;;;;;;2273:475;;;2307:12;;;;;;;;;;;2299:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2375:1;2361:11;:15;2353:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;2465:8;;2453:9;;:20;;;;:::i;:::-;2438:11;2429:6;:20;;;;:::i;:::-;:44;;2421:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;2570:23;;2555:11;2534:6;:18;2541:10;2534:18;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;:59;;2526:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;2685:11;2668:14;;:28;;;;:::i;:::-;2655:9;:41;;2647:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2273:475;1740:1008;1706:1048;2765:9;2777:1;2765:13;;2760:88;2785:11;2780:1;:16;2760:88;;2815:26;2825:3;2839:1;2830:6;:10;;;;:::i;:::-;2815:9;:26::i;:::-;2798:3;;;;;:::i;:::-;;;;2760:88;;;;2877:11;2855:6;:18;2862:10;2855:18;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;2926:16;;;;;;;;;;;:35;;;;;2960:1;2946:11;;:15;2926:35;:60;;;;;2979:7;:5;:7::i;:::-;2965:21;;:10;:21;;;;2926:60;2922:548;;;3005:8;3016;:6;:8::i;:::-;3005:19;;3050:1;3044:3;:7;:44;;;;;3079:9;;3055:21;:33;3044:44;3040:424;;;3108:3;3100:21;;:32;3122:9;;3100:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3157:9;;3142:11;;:24;;;;;;;:::i;:::-;;;;;;;;3040:424;;;3191:1;3185:3;:7;:45;;;;;3220:10;;3196:21;:34;3185:45;3181:283;;;3250:3;3242:21;;:33;3264:10;;3242:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;;3285:11;;:25;;;;;;;:::i;:::-;;;;;;;;3181:283;;;3335:2;3329:3;:8;:46;;;;;3365:10;;3341:21;:34;3329:46;3325:139;;;3395:3;3387:21;;:33;3409:10;;3387:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3445:10;;3430:11;;:25;;;;;;;:::i;:::-;;;;;;;;3325:139;3181:283;3040:424;2988:482;2922:548;1570:1905;;1507:1968;;:::o;5626:179:3:-;5759:39;5776:4;5782:2;5786:7;5759:39;;;;;;;;;;;;:16;:39::i;:::-;5626:179;;;:::o;3667:375:10:-;3751:16;3781:23;3807:17;3817:6;3807:9;:17::i;:::-;3781:43;;3834:25;3876:15;3862:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:58;;3907:9;3902:111;3922:15;3918:1;:19;3902:111;;;3972:30;3992:6;4000:1;3972:19;:30::i;:::-;3958:8;3967:1;3958:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;3939:3;;;;;:::i;:::-;;;;3902:111;;;;4029:8;4022:15;;;;3667:375;;;:::o;594:49::-;;;;:::o;1863:308:4:-;1978:7;2030:30;:28;:30::i;:::-;2022:5;:38;2001:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;2147:10;2158:5;2147:17;;;;;;;;:::i;:::-;;;;;;;;;;2140:24;;1863:308;;;:::o;4992:100:10:-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5075:12:10::1;5061:11;:26;;;;4992:100:::0;:::o;368:28::-;;;;;;;;;;;;;:::o;5798:75::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5859:9:10::1;;;;;;;;;;;5858:10;5846:9;;:22;;;;;;;;;;;;;;;;;;5798:75::o:0;6145:96::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6225:11:10::1;6215:7;:21;;;;;;;;;;;;:::i;:::-;;6145:96:::0;:::o;1088:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;4759:229::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4853:9:10::1;4849:135;4868:20;:27;4866:1;:29;4849:135;;;4969:4;4923:18;:43;4942:20;4963:1;4942:23;;;;;;;;:::i;:::-;;;;;;;;4923:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;4896:3;;;;;:::i;:::-;;;;4849:135;;;;4759:229:::0;:::o;2174:313:3:-;2286:7;2309:13;2325:7;:16;2333:7;2325:16;;;;;;;;;;;;;;;;;;;;;2309:32;;2389:1;2372:19;;:5;:19;;;;2351:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;2475:5;2468:12;;;2174:313;;;:::o;194:21:10:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5609:92::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5686:10:10::1;5674:9;:22;;;;5609:92:::0;:::o;1834:283:3:-;1946:7;2007:1;1990:19;;:5;:19;;;;1969:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;2094:9;:16;2104:5;2094:16;;;;;;;;;;;;;;;;2087:23;;1834:283;;;:::o;1620:92:11:-;1211:12;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1684:21:::1;1702:1;1684:9;:21::i;:::-;1620:92::o:0;400:28:10:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;749:48::-;;;;:::o;292:32::-;;;;;;;;;;;;;:::o;6519:140::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6571:12:10::1;6586:21;6571:36;;6625:10;6617:28;;:37;6646:7;6617:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;6561:98;6519:140::o:0;988:85:11:-;1034:7;1060:6;;;;;;;;;;;1053:13;;988:85;:::o;5200:112:10:-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5292:15:10::1;5275:14;:32;;;;5200:112:::0;:::o;2711:102:3:-;2767:13;2799:7;2792:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2711:102;:::o;5457:148:10:-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5576:24:10::1;5550:23;:50;;;;5457:148:::0;:::o;6045:96::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6120:16:10::1;;;;;;;;;;;6119:17;6100:16;;:36;;;;;;;;;;;;;;;;;;6045:96::o:0;4544:318:3:-;4686:12;:10;:12::i;:::-;4674:24;;:8;:24;;;;4666:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;4784:8;4739:18;:32;4758:12;:10;:12::i;:::-;4739:32;;;;;;;;;;;;;;;:42;4772:8;4739:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;4836:8;4807:48;;4822:12;:10;:12::i;:::-;4807:48;;;4846:8;4807:48;;;;;;:::i;:::-;;;;;;;;4544:318;;:::o;260:29:10:-;;;;;;;;;;;;;:::o;6663:101::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6733:10:10::1;6725:28;;:34;6754:4;6725:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;6663:101:::0;:::o;5871:354:3:-;6053:41;6072:12;:10;:12::i;:::-;6086:7;6053:18;:41::i;:::-;6032:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;6179:39;6193:4;6199:2;6203:7;6212:5;6179:13;:39::i;:::-;5871:354;;;;:::o;219:37:10:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4046:694::-;4159:13;4209:16;4217:7;4209;:16::i;:::-;4188:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4325:5;4313:17;;:8;;;;;;;;;;;:17;;;4309:67;;;4351:14;4344:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4309:67;4386:28;4417:10;:8;:10::i;:::-;4386:41;;4487:1;4462:14;4456:28;:32;:279;;;;;;;;;;;;;;;;;4577:14;4617:18;:7;:16;:18::i;:::-;4661:13;4535:161;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4456:279;4437:298;;;4046:694;;;;:::o;660:39::-;;;;:::o;531:46::-;;;;:::o;930:::-;;;;:::o;432:31::-;;;;:::o;6375:140::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6493:17:10::1;6477:13;:33;;;;;;;;;;;;:::i;:::-;;6375:140:::0;:::o;4928:206:3:-;5065:4;5092:18;:25;5111:5;5092:25;;;;;;;;;;;;;;;:35;5118:8;5092:35;;;;;;;;;;;;;;;;;;;;;;;;;5085:42;;4928:206;;;;:::o;5881:84:10:-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5948:12:10::1;;;;;;;;;;;5947:13;5932:12;;:28;;;;;;;;;;;;;;;;;;5881:84::o:0;6245:124::-;1211:12:11;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6346:18:10::1;6329:14;:35;;;;;;;;;;;;:::i;:::-;;6245:124:::0;:::o;1861:223:11:-;1211:12;:10;:12::i;:::-;1200:23;;:7;:5;:7::i;:::-;:23;;;1192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1982:1:::1;1962:22;;:8;:22;;;;1941:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;2058:19;2068:8;2058:9;:19::i;:::-;1861:223:::0;:::o;869:46:10:-;;;;:::o;467:29::-;;;;:::o;1431:344:3:-;1573:4;1627:25;1612:40;;;:11;:40;;;;:104;;;;1683:33;1668:48;;;:11;:48;;;;1612:104;:156;;;;1732:36;1756:11;1732:23;:36::i;:::-;1612:156;1593:175;;1431:344;;;:::o;7731:125::-;7796:4;7847:1;7819:30;;:7;:16;7827:7;7819:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7812:37;;7731:125;;;:::o;587:96:1:-;640:7;666:10;659:17;;587:96;:::o;11710:171:3:-;11811:2;11784:15;:24;11800:7;11784:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11866:7;11862:2;11828:46;;11837:23;11852:7;11837:14;:23::i;:::-;11828:46;;;;;;;;;;;;11710:171;;:::o;8014:438::-;8139:4;8180:16;8188:7;8180;:16::i;:::-;8159:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;8276:13;8292:23;8307:7;8292:14;:23::i;:::-;8276:39;;8344:5;8333:16;;:7;:16;;;:63;;;;8389:7;8365:31;;:20;8377:7;8365:11;:20::i;:::-;:31;;;8333:63;:111;;;;8412:32;8429:5;8436:7;8412:16;:32::i;:::-;8333:111;8325:120;;;8014:438;;;;:::o;11005:594::-;11172:4;11145:31;;:23;11160:7;11145:14;:23::i;:::-;:31;;;11124:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;11275:1;11261:16;;:2;:16;;;;11253:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11329:39;11350:4;11356:2;11360:7;11329:20;:39::i;:::-;11430:29;11447:1;11451:7;11430:8;:29::i;:::-;11489:1;11470:9;:15;11480:4;11470:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11517:1;11500:9;:13;11510:2;11500:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11547:2;11528:7;:16;11536:7;11528:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11584:7;11580:2;11565:27;;11574:4;11565:27;;;;;;;;;;;;11005:594;;;:::o;8782:108::-;8857:26;8867:2;8871:7;8857:26;;;;;;;;;;;;:9;:26::i;:::-;8782:108;;:::o;3479:184:10:-;3515:4;3527:17;3630:3;3579:15;3596:16;3614:10;3562:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3552:74;;;;;;3547:80;;:86;;;;:::i;:::-;3527:106;;3646:12;3639:19;;;3479:184;:::o;2090:169:11:-;2145:16;2164:6;;;;;;;;;;;2145:25;;2189:8;2180:6;;:17;;;;;;;;;;;;;;;;;;2243:8;2212:40;;2233:8;2212:40;;;;;;;;;;;;2135:124;2090:169;:::o;7087:341:3:-;7238:28;7248:4;7254:2;7258:7;7238:9;:28::i;:::-;7297:48;7320:4;7326:2;7330:7;7339:5;7297:22;:48::i;:::-;7276:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;7087:341;;;;:::o;1403:100:10:-;1463:13;1491:7;1484:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1403:100;:::o;275:703:12:-;331:13;557:1;548:5;:10;544:51;;;574:10;;;;;;;;;;;;;;;;;;;;;544:51;604:12;619:5;604:20;;634:14;658:75;673:1;665:4;:9;658:75;;690:8;;;;;:::i;:::-;;;;720:2;712:10;;;;;:::i;:::-;;;658:75;;;742:19;774:6;764:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;742:39;;791:150;807:1;798:5;:10;791:150;;834:1;824:11;;;;;:::i;:::-;;;900:2;892:5;:10;;;;:::i;:::-;879:2;:24;;;;:::i;:::-;866:39;;849:6;856;849:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;928:2;919:11;;;;;:::i;:::-;;;791:150;;;964:6;950:21;;;;;275:703;;;;:::o;763:199:2:-;888:4;930:25;915:40;;;:11;:40;;;;908:47;;763:199;;;:::o;2767:572:4:-;2906:45;2933:4;2939:2;2943:7;2906:26;:45::i;:::-;2982:1;2966:18;;:4;:18;;;2962:183;;;3000:40;3032:7;3000:31;:40::i;:::-;2962:183;;;3069:2;3061:10;;:4;:10;;;3057:88;;3087:47;3120:4;3126:7;3087:32;:47::i;:::-;3057:88;2962:183;3172:1;3158:16;;:2;:16;;;3154:179;;;3190:45;3227:7;3190:36;:45::i;:::-;3154:179;;;3262:4;3256:10;;:2;:10;;;3252:81;;3282:40;3310:2;3314:7;3282:27;:40::i;:::-;3252:81;3154:179;2767:572;;;:::o;9111:311:3:-;9236:18;9242:2;9246:7;9236:5;:18::i;:::-;9285:54;9316:1;9320:2;9324:7;9333:5;9285:22;:54::i;:::-;9264:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;9111:311;;;:::o;12434:950::-;12584:4;12604:15;:2;:13;;;:15::i;:::-;12600:778;;;12671:2;12655:36;;;12713:12;:10;:12::i;:::-;12747:4;12773:7;12802:5;12655:170;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12635:691;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13021:1;13004:6;:13;:18;13000:312;;;13046:106;;;;;;;;;;:::i;:::-;;;;;;;;13000:312;13264:6;13258:13;13249:6;13245:2;13241:15;13234:38;12635:691;12897:41;;;12887:51;;;:6;:51;;;;12880:58;;;;;12600:778;13363:4;13356:11;;12434:950;;;;;;;:::o;13940:122::-;;;;:::o;4045:161:4:-;4148:10;:17;;;;4121:15;:24;4137:7;4121:24;;;;;;;;;;;:44;;;;4175:10;4191:7;4175:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4045:161;:::o;4823:982::-;5097:22;5147:1;5122:22;5139:4;5122:16;:22::i;:::-;:26;;;;:::i;:::-;5097:51;;5158:18;5179:17;:26;5197:7;5179:26;;;;;;;;;;;;5158:47;;5323:14;5309:10;:28;5305:323;;5353:19;5375:12;:18;5388:4;5375:18;;;;;;;;;;;;;;;:34;5394:14;5375:34;;;;;;;;;;;;5353:56;;5457:11;5424:12;:18;5437:4;5424:18;;;;;;;;;;;;;;;:30;5443:10;5424:30;;;;;;;;;;;:44;;;;5573:10;5540:17;:30;5558:11;5540:30;;;;;;;;;;;:43;;;;5339:289;5305:323;5721:17;:26;5739:7;5721:26;;;;;;;;;;;5714:33;;;5764:12;:18;5777:4;5764:18;;;;;;;;;;;;;;;:34;5783:14;5764:34;;;;;;;;;;;5757:41;;;4916:889;;4823:982;;:::o;6093:1061::-;6342:22;6387:1;6367:10;:17;;;;:21;;;;:::i;:::-;6342:46;;6398:18;6419:15;:24;6435:7;6419:24;;;;;;;;;;;;6398:45;;6765:19;6787:10;6798:14;6787:26;;;;;;;;:::i;:::-;;;;;;;;;;6765:48;;6849:11;6824:10;6835;6824:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;6959:10;6928:15;:28;6944:11;6928:28;;;;;;;;;;;:41;;;;7097:15;:24;7113:7;7097:24;;;;;;;;;;;7090:31;;;7131:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6164:990;;;6093:1061;:::o;3633:217::-;3717:14;3734:20;3751:2;3734:16;:20::i;:::-;3717:37;;3791:7;3764:12;:16;3777:2;3764:16;;;;;;;;;;;;;;;:24;3781:6;3764:24;;;;;;;;;;;:34;;;;3837:6;3808:17;:26;3826:7;3808:26;;;;;;;;;;;:35;;;;3707:143;3633:217;;:::o;9744:372:3:-;9837:1;9823:16;;:2;:16;;;;9815:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9895:16;9903:7;9895;:16::i;:::-;9894:17;9886:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9955:45;9984:1;9988:2;9992:7;9955:20;:45::i;:::-;10028:1;10011:9;:13;10021:2;10011:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;10058:2;10039:7;:16;10047:7;10039:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10101:7;10097:2;10076:33;;10093:1;10076:33;;;;;;;;;;;;9744:372;;:::o;718:377:0:-;778:4;981:12;1046:7;1034:20;1026:28;;1087:1;1080:4;:8;1073:15;;;718:377;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:13:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:329::-;3474:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:119;;;3529:79;;:::i;:::-;3491:119;3649:1;3674:53;3719:7;3710:6;3699:9;3695:22;3674:53;:::i;:::-;3664:63;;3620:117;3415:329;;;;:::o;3750:474::-;3818:6;3826;3875:2;3863:9;3854:7;3850:23;3846:32;3843:119;;;3881:79;;:::i;:::-;3843:119;4001:1;4026:53;4071:7;4062:6;4051:9;4047:22;4026:53;:::i;:::-;4016:63;;3972:117;4128:2;4154:53;4199:7;4190:6;4179:9;4175:22;4154:53;:::i;:::-;4144:63;;4099:118;3750:474;;;;;:::o;4230:619::-;4307:6;4315;4323;4372:2;4360:9;4351:7;4347:23;4343:32;4340:119;;;4378:79;;:::i;:::-;4340:119;4498:1;4523:53;4568:7;4559:6;4548:9;4544:22;4523:53;:::i;:::-;4513:63;;4469:117;4625:2;4651:53;4696:7;4687:6;4676:9;4672:22;4651:53;:::i;:::-;4641:63;;4596:118;4753:2;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4724:118;4230:619;;;;;:::o;4855:943::-;4950:6;4958;4966;4974;5023:3;5011:9;5002:7;4998:23;4994:33;4991:120;;;5030:79;;:::i;:::-;4991:120;5150:1;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5121:117;5277:2;5303:53;5348:7;5339:6;5328:9;5324:22;5303:53;:::i;:::-;5293:63;;5248:118;5405:2;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5376:118;5561:2;5550:9;5546:18;5533:32;5592:18;5584:6;5581:30;5578:117;;;5614:79;;:::i;:::-;5578:117;5719:62;5773:7;5764:6;5753:9;5749:22;5719:62;:::i;:::-;5709:72;;5504:287;4855:943;;;;;;;:::o;5804:468::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:50;6247:7;6238:6;6227:9;6223:22;6205:50;:::i;:::-;6195:60;;6150:115;5804:468;;;;;:::o;6278:474::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:53;6599:7;6590:6;6579:9;6575:22;6554:53;:::i;:::-;6544:63;;6500:117;6656:2;6682:53;6727:7;6718:6;6707:9;6703:22;6682:53;:::i;:::-;6672:63;;6627:118;6278:474;;;;;:::o;6758:539::-;6842:6;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7045:1;7034:9;7030:17;7017:31;7075:18;7067:6;7064:30;7061:117;;;7097:79;;:::i;:::-;7061:117;7202:78;7272:7;7263:6;7252:9;7248:22;7202:78;:::i;:::-;7192:88;;6988:302;6758:539;;;;:::o;7303:327::-;7361:6;7410:2;7398:9;7389:7;7385:23;7381:32;7378:119;;;7416:79;;:::i;:::-;7378:119;7536:1;7561:52;7605:7;7596:6;7585:9;7581:22;7561:52;:::i;:::-;7551:62;;7507:116;7303:327;;;;:::o;7636:349::-;7705:6;7754:2;7742:9;7733:7;7729:23;7725:32;7722:119;;;7760:79;;:::i;:::-;7722:119;7880:1;7905:63;7960:7;7951:6;7940:9;7936:22;7905:63;:::i;:::-;7895:73;;7851:127;7636:349;;;;:::o;7991:509::-;8060:6;8109:2;8097:9;8088:7;8084:23;8080:32;8077:119;;;8115:79;;:::i;:::-;8077:119;8263:1;8252:9;8248:17;8235:31;8293:18;8285:6;8282:30;8279:117;;;8315:79;;:::i;:::-;8279:117;8420:63;8475:7;8466:6;8455:9;8451:22;8420:63;:::i;:::-;8410:73;;8206:287;7991:509;;;;:::o;8506:329::-;8565:6;8614:2;8602:9;8593:7;8589:23;8585:32;8582:119;;;8620:79;;:::i;:::-;8582:119;8740:1;8765:53;8810:7;8801:6;8790:9;8786:22;8765:53;:::i;:::-;8755:63;;8711:117;8506:329;;;;:::o;8841:179::-;8910:10;8931:46;8973:3;8965:6;8931:46;:::i;:::-;9009:4;9004:3;9000:14;8986:28;;8841:179;;;;:::o;9026:118::-;9113:24;9131:5;9113:24;:::i;:::-;9108:3;9101:37;9026:118;;:::o;9150:157::-;9255:45;9275:24;9293:5;9275:24;:::i;:::-;9255:45;:::i;:::-;9250:3;9243:58;9150:157;;:::o;9343:732::-;9462:3;9491:54;9539:5;9491:54;:::i;:::-;9561:86;9640:6;9635:3;9561:86;:::i;:::-;9554:93;;9671:56;9721:5;9671:56;:::i;:::-;9750:7;9781:1;9766:284;9791:6;9788:1;9785:13;9766:284;;;9867:6;9861:13;9894:63;9953:3;9938:13;9894:63;:::i;:::-;9887:70;;9980:60;10033:6;9980:60;:::i;:::-;9970:70;;9826:224;9813:1;9810;9806:9;9801:14;;9766:284;;;9770:14;10066:3;10059:10;;9467:608;;;9343:732;;;;:::o;10081:109::-;10162:21;10177:5;10162:21;:::i;:::-;10157:3;10150:34;10081:109;;:::o;10196:360::-;10282:3;10310:38;10342:5;10310:38;:::i;:::-;10364:70;10427:6;10422:3;10364:70;:::i;:::-;10357:77;;10443:52;10488:6;10483:3;10476:4;10469:5;10465:16;10443:52;:::i;:::-;10520:29;10542:6;10520:29;:::i;:::-;10515:3;10511:39;10504:46;;10286:270;10196:360;;;;:::o;10562:364::-;10650:3;10678:39;10711:5;10678:39;:::i;:::-;10733:71;10797:6;10792:3;10733:71;:::i;:::-;10726:78;;10813:52;10858:6;10853:3;10846:4;10839:5;10835:16;10813:52;:::i;:::-;10890:29;10912:6;10890:29;:::i;:::-;10885:3;10881:39;10874:46;;10654:272;10562:364;;;;:::o;10932:377::-;11038:3;11066:39;11099:5;11066:39;:::i;:::-;11121:89;11203:6;11198:3;11121:89;:::i;:::-;11114:96;;11219:52;11264:6;11259:3;11252:4;11245:5;11241:16;11219:52;:::i;:::-;11296:6;11291:3;11287:16;11280:23;;11042:267;10932:377;;;;:::o;11339:845::-;11442:3;11479:5;11473:12;11508:36;11534:9;11508:36;:::i;:::-;11560:89;11642:6;11637:3;11560:89;:::i;:::-;11553:96;;11680:1;11669:9;11665:17;11696:1;11691:137;;;;11842:1;11837:341;;;;11658:520;;11691:137;11775:4;11771:9;11760;11756:25;11751:3;11744:38;11811:6;11806:3;11802:16;11795:23;;11691:137;;11837:341;11904:38;11936:5;11904:38;:::i;:::-;11964:1;11978:154;11992:6;11989:1;11986:13;11978:154;;;12066:7;12060:14;12056:1;12051:3;12047:11;12040:35;12116:1;12107:7;12103:15;12092:26;;12014:4;12011:1;12007:12;12002:17;;11978:154;;;12161:6;12156:3;12152:16;12145:23;;11844:334;;11658:520;;11446:738;;11339:845;;;;:::o;12190:366::-;12332:3;12353:67;12417:2;12412:3;12353:67;:::i;:::-;12346:74;;12429:93;12518:3;12429:93;:::i;:::-;12547:2;12542:3;12538:12;12531:19;;12190:366;;;:::o;12562:::-;12704:3;12725:67;12789:2;12784:3;12725:67;:::i;:::-;12718:74;;12801:93;12890:3;12801:93;:::i;:::-;12919:2;12914:3;12910:12;12903:19;;12562:366;;;:::o;12934:::-;13076:3;13097:67;13161:2;13156:3;13097:67;:::i;:::-;13090:74;;13173:93;13262:3;13173:93;:::i;:::-;13291:2;13286:3;13282:12;13275:19;;12934:366;;;:::o;13306:::-;13448:3;13469:67;13533:2;13528:3;13469:67;:::i;:::-;13462:74;;13545:93;13634:3;13545:93;:::i;:::-;13663:2;13658:3;13654:12;13647:19;;13306:366;;;:::o;13678:::-;13820:3;13841:67;13905:2;13900:3;13841:67;:::i;:::-;13834:74;;13917:93;14006:3;13917:93;:::i;:::-;14035:2;14030:3;14026:12;14019:19;;13678:366;;;:::o;14050:::-;14192:3;14213:67;14277:2;14272:3;14213:67;:::i;:::-;14206:74;;14289:93;14378:3;14289:93;:::i;:::-;14407:2;14402:3;14398:12;14391:19;;14050:366;;;:::o;14422:::-;14564:3;14585:67;14649:2;14644:3;14585:67;:::i;:::-;14578:74;;14661:93;14750:3;14661:93;:::i;:::-;14779:2;14774:3;14770:12;14763:19;;14422:366;;;:::o;14794:::-;14936:3;14957:67;15021:2;15016:3;14957:67;:::i;:::-;14950:74;;15033:93;15122:3;15033:93;:::i;:::-;15151:2;15146:3;15142:12;15135:19;;14794:366;;;:::o;15166:::-;15308:3;15329:67;15393:2;15388:3;15329:67;:::i;:::-;15322:74;;15405:93;15494:3;15405:93;:::i;:::-;15523:2;15518:3;15514:12;15507:19;;15166:366;;;:::o;15538:::-;15680:3;15701:67;15765:2;15760:3;15701:67;:::i;:::-;15694:74;;15777:93;15866:3;15777:93;:::i;:::-;15895:2;15890:3;15886:12;15879:19;;15538:366;;;:::o;15910:::-;16052:3;16073:67;16137:2;16132:3;16073:67;:::i;:::-;16066:74;;16149:93;16238:3;16149:93;:::i;:::-;16267:2;16262:3;16258:12;16251:19;;15910:366;;;:::o;16282:::-;16424:3;16445:67;16509:2;16504:3;16445:67;:::i;:::-;16438:74;;16521:93;16610:3;16521:93;:::i;:::-;16639:2;16634:3;16630:12;16623:19;;16282:366;;;:::o;16654:::-;16796:3;16817:67;16881:2;16876:3;16817:67;:::i;:::-;16810:74;;16893:93;16982:3;16893:93;:::i;:::-;17011:2;17006:3;17002:12;16995:19;;16654:366;;;:::o;17026:::-;17168:3;17189:67;17253:2;17248:3;17189:67;:::i;:::-;17182:74;;17265:93;17354:3;17265:93;:::i;:::-;17383:2;17378:3;17374:12;17367:19;;17026:366;;;:::o;17398:::-;17540:3;17561:67;17625:2;17620:3;17561:67;:::i;:::-;17554:74;;17637:93;17726:3;17637:93;:::i;:::-;17755:2;17750:3;17746:12;17739:19;;17398:366;;;:::o;17770:::-;17912:3;17933:67;17997:2;17992:3;17933:67;:::i;:::-;17926:74;;18009:93;18098:3;18009:93;:::i;:::-;18127:2;18122:3;18118:12;18111:19;;17770:366;;;:::o;18142:::-;18284:3;18305:67;18369:2;18364:3;18305:67;:::i;:::-;18298:74;;18381:93;18470:3;18381:93;:::i;:::-;18499:2;18494:3;18490:12;18483:19;;18142:366;;;:::o;18514:::-;18656:3;18677:67;18741:2;18736:3;18677:67;:::i;:::-;18670:74;;18753:93;18842:3;18753:93;:::i;:::-;18871:2;18866:3;18862:12;18855:19;;18514:366;;;:::o;18886:::-;19028:3;19049:67;19113:2;19108:3;19049:67;:::i;:::-;19042:74;;19125:93;19214:3;19125:93;:::i;:::-;19243:2;19238:3;19234:12;19227:19;;18886:366;;;:::o;19258:::-;19400:3;19421:67;19485:2;19480:3;19421:67;:::i;:::-;19414:74;;19497:93;19586:3;19497:93;:::i;:::-;19615:2;19610:3;19606:12;19599:19;;19258:366;;;:::o;19630:::-;19772:3;19793:67;19857:2;19852:3;19793:67;:::i;:::-;19786:74;;19869:93;19958:3;19869:93;:::i;:::-;19987:2;19982:3;19978:12;19971:19;;19630:366;;;:::o;20002:::-;20144:3;20165:67;20229:2;20224:3;20165:67;:::i;:::-;20158:74;;20241:93;20330:3;20241:93;:::i;:::-;20359:2;20354:3;20350:12;20343:19;;20002:366;;;:::o;20374:::-;20516:3;20537:67;20601:2;20596:3;20537:67;:::i;:::-;20530:74;;20613:93;20702:3;20613:93;:::i;:::-;20731:2;20726:3;20722:12;20715:19;;20374:366;;;:::o;20746:::-;20888:3;20909:67;20973:2;20968:3;20909:67;:::i;:::-;20902:74;;20985:93;21074:3;20985:93;:::i;:::-;21103:2;21098:3;21094:12;21087:19;;20746:366;;;:::o;21118:::-;21260:3;21281:67;21345:2;21340:3;21281:67;:::i;:::-;21274:74;;21357:93;21446:3;21357:93;:::i;:::-;21475:2;21470:3;21466:12;21459:19;;21118:366;;;:::o;21490:::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:::-;22004:3;22025:67;22089:2;22084:3;22025:67;:::i;:::-;22018:74;;22101:93;22190:3;22101:93;:::i;:::-;22219:2;22214:3;22210:12;22203:19;;21862:366;;;:::o;22234:108::-;22311:24;22329:5;22311:24;:::i;:::-;22306:3;22299:37;22234:108;;:::o;22348:118::-;22435:24;22453:5;22435:24;:::i;:::-;22430:3;22423:37;22348:118;;:::o;22472:157::-;22577:45;22597:24;22615:5;22597:24;:::i;:::-;22577:45;:::i;:::-;22572:3;22565:58;22472:157;;:::o;22635:589::-;22860:3;22882:95;22973:3;22964:6;22882:95;:::i;:::-;22875:102;;22994:95;23085:3;23076:6;22994:95;:::i;:::-;22987:102;;23106:92;23194:3;23185:6;23106:92;:::i;:::-;23099:99;;23215:3;23208:10;;22635:589;;;;;;:::o;23230:538::-;23398:3;23413:75;23484:3;23475:6;23413:75;:::i;:::-;23513:2;23508:3;23504:12;23497:19;;23526:75;23597:3;23588:6;23526:75;:::i;:::-;23626:2;23621:3;23617:12;23610:19;;23639:75;23710:3;23701:6;23639:75;:::i;:::-;23739:2;23734:3;23730:12;23723:19;;23759:3;23752:10;;23230:538;;;;;;:::o;23774:222::-;23867:4;23905:2;23894:9;23890:18;23882:26;;23918:71;23986:1;23975:9;23971:17;23962:6;23918:71;:::i;:::-;23774:222;;;;:::o;24002:640::-;24197:4;24235:3;24224:9;24220:19;24212:27;;24249:71;24317:1;24306:9;24302:17;24293:6;24249:71;:::i;:::-;24330:72;24398:2;24387:9;24383:18;24374:6;24330:72;:::i;:::-;24412;24480:2;24469:9;24465:18;24456:6;24412:72;:::i;:::-;24531:9;24525:4;24521:20;24516:2;24505:9;24501:18;24494:48;24559:76;24630:4;24621:6;24559:76;:::i;:::-;24551:84;;24002:640;;;;;;;:::o;24648:373::-;24791:4;24829:2;24818:9;24814:18;24806:26;;24878:9;24872:4;24868:20;24864:1;24853:9;24849:17;24842:47;24906:108;25009:4;25000:6;24906:108;:::i;:::-;24898:116;;24648:373;;;;:::o;25027:210::-;25114:4;25152:2;25141:9;25137:18;25129:26;;25165:65;25227:1;25216:9;25212:17;25203:6;25165:65;:::i;:::-;25027:210;;;;:::o;25243:313::-;25356:4;25394:2;25383:9;25379:18;25371:26;;25443:9;25437:4;25433:20;25429:1;25418:9;25414:17;25407:47;25471:78;25544:4;25535:6;25471:78;:::i;:::-;25463:86;;25243:313;;;;:::o;25562:419::-;25728:4;25766:2;25755:9;25751:18;25743:26;;25815:9;25809:4;25805:20;25801:1;25790:9;25786:17;25779:47;25843:131;25969:4;25843:131;:::i;:::-;25835:139;;25562:419;;;:::o;25987:::-;26153:4;26191:2;26180:9;26176:18;26168:26;;26240:9;26234:4;26230:20;26226:1;26215:9;26211:17;26204:47;26268:131;26394:4;26268:131;:::i;:::-;26260:139;;25987:419;;;:::o;26412:::-;26578:4;26616:2;26605:9;26601:18;26593:26;;26665:9;26659:4;26655:20;26651:1;26640:9;26636:17;26629:47;26693:131;26819:4;26693:131;:::i;:::-;26685:139;;26412:419;;;:::o;26837:::-;27003:4;27041:2;27030:9;27026:18;27018:26;;27090:9;27084:4;27080:20;27076:1;27065:9;27061:17;27054:47;27118:131;27244:4;27118:131;:::i;:::-;27110:139;;26837:419;;;:::o;27262:::-;27428:4;27466:2;27455:9;27451:18;27443:26;;27515:9;27509:4;27505:20;27501:1;27490:9;27486:17;27479:47;27543:131;27669:4;27543:131;:::i;:::-;27535:139;;27262:419;;;:::o;27687:::-;27853:4;27891:2;27880:9;27876:18;27868:26;;27940:9;27934:4;27930:20;27926:1;27915:9;27911:17;27904:47;27968:131;28094:4;27968:131;:::i;:::-;27960:139;;27687:419;;;:::o;28112:::-;28278:4;28316:2;28305:9;28301:18;28293:26;;28365:9;28359:4;28355:20;28351:1;28340:9;28336:17;28329:47;28393:131;28519:4;28393:131;:::i;:::-;28385:139;;28112:419;;;:::o;28537:::-;28703:4;28741:2;28730:9;28726:18;28718:26;;28790:9;28784:4;28780:20;28776:1;28765:9;28761:17;28754:47;28818:131;28944:4;28818:131;:::i;:::-;28810:139;;28537:419;;;:::o;28962:::-;29128:4;29166:2;29155:9;29151:18;29143:26;;29215:9;29209:4;29205:20;29201:1;29190:9;29186:17;29179:47;29243:131;29369:4;29243:131;:::i;:::-;29235:139;;28962:419;;;:::o;29387:::-;29553:4;29591:2;29580:9;29576:18;29568:26;;29640:9;29634:4;29630:20;29626:1;29615:9;29611:17;29604:47;29668:131;29794:4;29668:131;:::i;:::-;29660:139;;29387:419;;;:::o;29812:::-;29978:4;30016:2;30005:9;30001:18;29993:26;;30065:9;30059:4;30055:20;30051:1;30040:9;30036:17;30029:47;30093:131;30219:4;30093:131;:::i;:::-;30085:139;;29812:419;;;:::o;30237:::-;30403:4;30441:2;30430:9;30426:18;30418:26;;30490:9;30484:4;30480:20;30476:1;30465:9;30461:17;30454:47;30518:131;30644:4;30518:131;:::i;:::-;30510:139;;30237:419;;;:::o;30662:::-;30828:4;30866:2;30855:9;30851:18;30843:26;;30915:9;30909:4;30905:20;30901:1;30890:9;30886:17;30879:47;30943:131;31069:4;30943:131;:::i;:::-;30935:139;;30662:419;;;:::o;31087:::-;31253:4;31291:2;31280:9;31276:18;31268:26;;31340:9;31334:4;31330:20;31326:1;31315:9;31311:17;31304:47;31368:131;31494:4;31368:131;:::i;:::-;31360:139;;31087:419;;;:::o;31512:::-;31678:4;31716:2;31705:9;31701:18;31693:26;;31765:9;31759:4;31755:20;31751:1;31740:9;31736:17;31729:47;31793:131;31919:4;31793:131;:::i;:::-;31785:139;;31512:419;;;:::o;31937:::-;32103:4;32141:2;32130:9;32126:18;32118:26;;32190:9;32184:4;32180:20;32176:1;32165:9;32161:17;32154:47;32218:131;32344:4;32218:131;:::i;:::-;32210:139;;31937:419;;;:::o;32362:::-;32528:4;32566:2;32555:9;32551:18;32543:26;;32615:9;32609:4;32605:20;32601:1;32590:9;32586:17;32579:47;32643:131;32769:4;32643:131;:::i;:::-;32635:139;;32362:419;;;:::o;32787:::-;32953:4;32991:2;32980:9;32976:18;32968:26;;33040:9;33034:4;33030:20;33026:1;33015:9;33011:17;33004:47;33068:131;33194:4;33068:131;:::i;:::-;33060:139;;32787:419;;;:::o;33212:::-;33378:4;33416:2;33405:9;33401:18;33393:26;;33465:9;33459:4;33455:20;33451:1;33440:9;33436:17;33429:47;33493:131;33619:4;33493:131;:::i;:::-;33485:139;;33212:419;;;:::o;33637:::-;33803:4;33841:2;33830:9;33826:18;33818:26;;33890:9;33884:4;33880:20;33876:1;33865:9;33861:17;33854:47;33918:131;34044:4;33918:131;:::i;:::-;33910:139;;33637:419;;;:::o;34062:::-;34228:4;34266:2;34255:9;34251:18;34243:26;;34315:9;34309:4;34305:20;34301:1;34290:9;34286:17;34279:47;34343:131;34469:4;34343:131;:::i;:::-;34335:139;;34062:419;;;:::o;34487:::-;34653:4;34691:2;34680:9;34676:18;34668:26;;34740:9;34734:4;34730:20;34726:1;34715:9;34711:17;34704:47;34768:131;34894:4;34768:131;:::i;:::-;34760:139;;34487:419;;;:::o;34912:::-;35078:4;35116:2;35105:9;35101:18;35093:26;;35165:9;35159:4;35155:20;35151:1;35140:9;35136:17;35129:47;35193:131;35319:4;35193:131;:::i;:::-;35185:139;;34912:419;;;:::o;35337:::-;35503:4;35541:2;35530:9;35526:18;35518:26;;35590:9;35584:4;35580:20;35576:1;35565:9;35561:17;35554:47;35618:131;35744:4;35618:131;:::i;:::-;35610:139;;35337:419;;;:::o;35762:::-;35928:4;35966:2;35955:9;35951:18;35943:26;;36015:9;36009:4;36005:20;36001:1;35990:9;35986:17;35979:47;36043:131;36169:4;36043:131;:::i;:::-;36035:139;;35762:419;;;:::o;36187:::-;36353:4;36391:2;36380:9;36376:18;36368:26;;36440:9;36434:4;36430:20;36426:1;36415:9;36411:17;36404:47;36468:131;36594:4;36468:131;:::i;:::-;36460:139;;36187:419;;;:::o;36612:::-;36778:4;36816:2;36805:9;36801:18;36793:26;;36865:9;36859:4;36855:20;36851:1;36840:9;36836:17;36829:47;36893:131;37019:4;36893:131;:::i;:::-;36885:139;;36612:419;;;:::o;37037:222::-;37130:4;37168:2;37157:9;37153:18;37145:26;;37181:71;37249:1;37238:9;37234:17;37225:6;37181:71;:::i;:::-;37037:222;;;;:::o;37265:129::-;37299:6;37326:20;;:::i;:::-;37316:30;;37355:33;37383:4;37375:6;37355:33;:::i;:::-;37265:129;;;:::o;37400:75::-;37433:6;37466:2;37460:9;37450:19;;37400:75;:::o;37481:311::-;37558:4;37648:18;37640:6;37637:30;37634:56;;;37670:18;;:::i;:::-;37634:56;37720:4;37712:6;37708:17;37700:25;;37780:4;37774;37770:15;37762:23;;37481:311;;;:::o;37798:307::-;37859:4;37949:18;37941:6;37938:30;37935:56;;;37971:18;;:::i;:::-;37935:56;38009:29;38031:6;38009:29;:::i;:::-;38001:37;;38093:4;38087;38083:15;38075:23;;37798:307;;;:::o;38111:308::-;38173:4;38263:18;38255:6;38252:30;38249:56;;;38285:18;;:::i;:::-;38249:56;38323:29;38345:6;38323:29;:::i;:::-;38315:37;;38407:4;38401;38397:15;38389:23;;38111:308;;;:::o;38425:132::-;38492:4;38515:3;38507:11;;38545:4;38540:3;38536:14;38528:22;;38425:132;;;:::o;38563:141::-;38612:4;38635:3;38627:11;;38658:3;38655:1;38648:14;38692:4;38689:1;38679:18;38671:26;;38563:141;;;:::o;38710:114::-;38777:6;38811:5;38805:12;38795:22;;38710:114;;;:::o;38830:98::-;38881:6;38915:5;38909:12;38899:22;;38830:98;;;:::o;38934:99::-;38986:6;39020:5;39014:12;39004:22;;38934:99;;;:::o;39039:113::-;39109:4;39141;39136:3;39132:14;39124:22;;39039:113;;;:::o;39158:184::-;39257:11;39291:6;39286:3;39279:19;39331:4;39326:3;39322:14;39307:29;;39158:184;;;;:::o;39348:168::-;39431:11;39465:6;39460:3;39453:19;39505:4;39500:3;39496:14;39481:29;;39348:168;;;;:::o;39522:169::-;39606:11;39640:6;39635:3;39628:19;39680:4;39675:3;39671:14;39656:29;;39522:169;;;;:::o;39697:148::-;39799:11;39836:3;39821:18;;39697:148;;;;:::o;39851:305::-;39891:3;39910:20;39928:1;39910:20;:::i;:::-;39905:25;;39944:20;39962:1;39944:20;:::i;:::-;39939:25;;40098:1;40030:66;40026:74;40023:1;40020:81;40017:107;;;40104:18;;:::i;:::-;40017:107;40148:1;40145;40141:9;40134:16;;39851:305;;;;:::o;40162:185::-;40202:1;40219:20;40237:1;40219:20;:::i;:::-;40214:25;;40253:20;40271:1;40253:20;:::i;:::-;40248:25;;40292:1;40282:35;;40297:18;;:::i;:::-;40282:35;40339:1;40336;40332:9;40327:14;;40162:185;;;;:::o;40353:348::-;40393:7;40416:20;40434:1;40416:20;:::i;:::-;40411:25;;40450:20;40468:1;40450:20;:::i;:::-;40445:25;;40638:1;40570:66;40566:74;40563:1;40560:81;40555:1;40548:9;40541:17;40537:105;40534:131;;;40645:18;;:::i;:::-;40534:131;40693:1;40690;40686:9;40675:20;;40353:348;;;;:::o;40707:191::-;40747:4;40767:20;40785:1;40767:20;:::i;:::-;40762:25;;40801:20;40819:1;40801:20;:::i;:::-;40796:25;;40840:1;40837;40834:8;40831:34;;;40845:18;;:::i;:::-;40831:34;40890:1;40887;40883:9;40875:17;;40707:191;;;;:::o;40904:96::-;40941:7;40970:24;40988:5;40970:24;:::i;:::-;40959:35;;40904:96;;;:::o;41006:90::-;41040:7;41083:5;41076:13;41069:21;41058:32;;41006:90;;;:::o;41102:149::-;41138:7;41178:66;41171:5;41167:78;41156:89;;41102:149;;;:::o;41257:126::-;41294:7;41334:42;41327:5;41323:54;41312:65;;41257:126;;;:::o;41389:77::-;41426:7;41455:5;41444:16;;41389:77;;;:::o;41472:154::-;41556:6;41551:3;41546;41533:30;41618:1;41609:6;41604:3;41600:16;41593:27;41472:154;;;:::o;41632:307::-;41700:1;41710:113;41724:6;41721:1;41718:13;41710:113;;;41809:1;41804:3;41800:11;41794:18;41790:1;41785:3;41781:11;41774:39;41746:2;41743:1;41739:10;41734:15;;41710:113;;;41841:6;41838:1;41835:13;41832:101;;;41921:1;41912:6;41907:3;41903:16;41896:27;41832:101;41681:258;41632:307;;;:::o;41945:320::-;41989:6;42026:1;42020:4;42016:12;42006:22;;42073:1;42067:4;42063:12;42094:18;42084:81;;42150:4;42142:6;42138:17;42128:27;;42084:81;42212:2;42204:6;42201:14;42181:18;42178:38;42175:84;;;42231:18;;:::i;:::-;42175:84;41996:269;41945:320;;;:::o;42271:281::-;42354:27;42376:4;42354:27;:::i;:::-;42346:6;42342:40;42484:6;42472:10;42469:22;42448:18;42436:10;42433:34;42430:62;42427:88;;;42495:18;;:::i;:::-;42427:88;42535:10;42531:2;42524:22;42314:238;42271:281;;:::o;42558:233::-;42597:3;42620:24;42638:5;42620:24;:::i;:::-;42611:33;;42666:66;42659:5;42656:77;42653:103;;;42736:18;;:::i;:::-;42653:103;42783:1;42776:5;42772:13;42765:20;;42558:233;;;:::o;42797:100::-;42836:7;42865:26;42885:5;42865:26;:::i;:::-;42854:37;;42797:100;;;:::o;42903:94::-;42942:7;42971:20;42985:5;42971:20;:::i;:::-;42960:31;;42903:94;;;:::o;43003:79::-;43042:7;43071:5;43060:16;;43003:79;;;:::o;43088:176::-;43120:1;43137:20;43155:1;43137:20;:::i;:::-;43132:25;;43171:20;43189:1;43171:20;:::i;:::-;43166:25;;43210:1;43200:35;;43215:18;;:::i;:::-;43200:35;43256:1;43253;43249:9;43244:14;;43088:176;;;;:::o;43270:180::-;43318:77;43315:1;43308:88;43415:4;43412:1;43405:15;43439:4;43436:1;43429:15;43456:180;43504:77;43501:1;43494:88;43601:4;43598:1;43591:15;43625:4;43622:1;43615:15;43642:180;43690:77;43687:1;43680:88;43787:4;43784:1;43777:15;43811:4;43808:1;43801:15;43828:180;43876:77;43873:1;43866:88;43973:4;43970:1;43963:15;43997:4;43994:1;43987:15;44014:180;44062:77;44059:1;44052:88;44159:4;44156:1;44149:15;44183:4;44180:1;44173:15;44200:180;44248:77;44245:1;44238:88;44345:4;44342:1;44335:15;44369:4;44366:1;44359:15;44386:117;44495:1;44492;44485:12;44509:117;44618:1;44615;44608:12;44632:117;44741:1;44738;44731:12;44755:117;44864:1;44861;44854:12;44878:117;44987:1;44984;44977:12;45001:102;45042:6;45093:2;45089:7;45084:2;45077:5;45073:14;45069:28;45059:38;;45001:102;;;:::o;45109:94::-;45142:8;45190:5;45186:2;45182:14;45161:35;;45109:94;;;:::o;45209:230::-;45349:34;45345:1;45337:6;45333:14;45326:58;45418:13;45413:2;45405:6;45401:15;45394:38;45209:230;:::o;45445:237::-;45585:34;45581:1;45573:6;45569:14;45562:58;45654:20;45649:2;45641:6;45637:15;45630:45;45445:237;:::o;45688:227::-;45828:34;45824:1;45816:6;45812:14;45805:58;45897:10;45892:2;45884:6;45880:15;45873:35;45688:227;:::o;45921:225::-;46061:34;46057:1;46049:6;46045:14;46038:58;46130:8;46125:2;46117:6;46113:15;46106:33;45921:225;:::o;46152:178::-;46292:30;46288:1;46280:6;46276:14;46269:54;46152:178;:::o;46336:223::-;46476:34;46472:1;46464:6;46460:14;46453:58;46545:6;46540:2;46532:6;46528:15;46521:31;46336:223;:::o;46565:175::-;46705:27;46701:1;46693:6;46689:14;46682:51;46565:175;:::o;46746:181::-;46886:33;46882:1;46874:6;46870:14;46863:57;46746:181;:::o;46933:231::-;47073:34;47069:1;47061:6;47057:14;47050:58;47142:14;47137:2;47129:6;47125:15;47118:39;46933:231;:::o;47170:171::-;47310:23;47306:1;47298:6;47294:14;47287:47;47170:171;:::o;47347:243::-;47487:34;47483:1;47475:6;47471:14;47464:58;47556:26;47551:2;47543:6;47539:15;47532:51;47347:243;:::o;47596:168::-;47736:20;47732:1;47724:6;47720:14;47713:44;47596:168;:::o;47770:229::-;47910:34;47906:1;47898:6;47894:14;47887:58;47979:12;47974:2;47966:6;47962:15;47955:37;47770:229;:::o;48005:228::-;48145:34;48141:1;48133:6;48129:14;48122:58;48214:11;48209:2;48201:6;48197:15;48190:36;48005:228;:::o;48239:231::-;48379:34;48375:1;48367:6;48363:14;48356:58;48448:14;48443:2;48435:6;48431:15;48424:39;48239:231;:::o;48476:182::-;48616:34;48612:1;48604:6;48600:14;48593:58;48476:182;:::o;48664:165::-;48804:17;48800:1;48792:6;48788:14;48781:41;48664:165;:::o;48835:231::-;48975:34;48971:1;48963:6;48959:14;48952:58;49044:14;49039:2;49031:6;49027:15;49020:39;48835:231;:::o;49072:182::-;49212:34;49208:1;49200:6;49196:14;49189:58;49072:182;:::o;49260:228::-;49400:34;49396:1;49388:6;49384:14;49377:58;49469:11;49464:2;49456:6;49452:15;49445:36;49260:228;:::o;49494:234::-;49634:34;49630:1;49622:6;49618:14;49611:58;49703:17;49698:2;49690:6;49686:15;49679:42;49494:234;:::o;49734:220::-;49874:34;49870:1;49862:6;49858:14;49851:58;49943:3;49938:2;49930:6;49926:15;49919:28;49734:220;:::o;49960:236::-;50100:34;50096:1;50088:6;50084:14;50077:58;50169:19;50164:2;50156:6;50152:15;50145:44;49960:236;:::o;50202:173::-;50342:25;50338:1;50330:6;50326:14;50319:49;50202:173;:::o;50381:231::-;50521:34;50517:1;50509:6;50505:14;50498:58;50590:14;50585:2;50577:6;50573:15;50566:39;50381:231;:::o;50618:182::-;50758:34;50754:1;50746:6;50742:14;50735:58;50618:182;:::o;50806:228::-;50946:34;50942:1;50934:6;50930:14;50923:58;51015:11;51010:2;51002:6;50998:15;50991:36;50806:228;:::o;51040:122::-;51113:24;51131:5;51113:24;:::i;:::-;51106:5;51103:35;51093:63;;51152:1;51149;51142:12;51093:63;51040:122;:::o;51168:116::-;51238:21;51253:5;51238:21;:::i;:::-;51231:5;51228:32;51218:60;;51274:1;51271;51264:12;51218:60;51168:116;:::o;51290:120::-;51362:23;51379:5;51362:23;:::i;:::-;51355:5;51352:34;51342:62;;51400:1;51397;51390:12;51342:62;51290:120;:::o;51416:122::-;51489:24;51507:5;51489:24;:::i;:::-;51482:5;51479:35;51469:63;;51528:1;51525;51518:12;51469:63;51416:122;:::o
Swarm Source
ipfs://88340e4fb95673cc0f343bc32f62ef7877292cb9fedecf337e6c7b0f6269e880
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.