Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 130 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Register | 15033743 | 812 days ago | IN | 0 ETH | 0.00270861 | ||||
Withdraw | 14705727 | 866 days ago | IN | 0 ETH | 0.00185201 | ||||
Toggle Ref Rewar... | 14705700 | 866 days ago | IN | 0 ETH | 0.00224121 | ||||
Withdraw Ref Rew... | 14656377 | 874 days ago | IN | 0 ETH | 0.00393923 | ||||
Withdraw Ref Rew... | 14629051 | 878 days ago | IN | 0 ETH | 0.00471114 | ||||
Public Mint | 14578479 | 886 days ago | IN | 0.0888 ETH | 0.00513714 | ||||
Public Mint | 14569339 | 888 days ago | IN | 0.0888 ETH | 0.00404089 | ||||
Register | 14563211 | 889 days ago | IN | 0 ETH | 0.00146958 | ||||
Public Mint | 14563172 | 889 days ago | IN | 0.444 ETH | 0.00212032 | ||||
Public Mint | 14563170 | 889 days ago | IN | 0.444 ETH | 0.00285747 | ||||
Public Mint | 14554336 | 890 days ago | IN | 0.0888 ETH | 0.00315125 | ||||
Register | 14552770 | 890 days ago | IN | 0 ETH | 0.00342441 | ||||
Register | 14550737 | 891 days ago | IN | 0 ETH | 0.00270192 | ||||
Public Mint | 14550631 | 891 days ago | IN | 0.1776 ETH | 0.00286021 | ||||
Public Mint | 14550236 | 891 days ago | IN | 0.2664 ETH | 0.00545782 | ||||
Public Mint | 14550172 | 891 days ago | IN | 0.0888 ETH | 0.00518363 | ||||
Public Mint | 14550104 | 891 days ago | IN | 0.0888 ETH | 0.00410637 | ||||
Public Mint | 14550104 | 891 days ago | IN | 0.1776 ETH | 0.0041868 | ||||
Public Mint | 14549993 | 891 days ago | IN | 0.0888 ETH | 0.00312684 | ||||
Public Mint | 14549872 | 891 days ago | IN | 0.1776 ETH | 0.00515598 | ||||
Register | 14549641 | 891 days ago | IN | 0 ETH | 0.00338134 | ||||
Public Mint | 14549636 | 891 days ago | IN | 0.1776 ETH | 0.00659343 | ||||
Register | 14549632 | 891 days ago | IN | 0 ETH | 0.00355464 | ||||
Public Mint | 14549626 | 891 days ago | IN | 0.0888 ETH | 0.00620659 | ||||
Public Mint | 14549626 | 891 days ago | IN | 0.0888 ETH | 0.00488317 |
Loading...
Loading
Contract Name:
NindoSale
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // Contract based on https://docs.openzeppelin.com/contracts/3.x/erc721 pragma solidity ^0.8.4; import "@openzeppelin/contracts/interfaces/IERC20.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; abstract contract NindoContract { function mintTransfer(address to, uint256 n) public virtual; function totalSupply() public view virtual returns (uint256); } contract NindoSale is Ownable, ReentrancyGuard { uint256 public constant MAX_SUPPLY = 9999; uint256 public immutable maxWhitelistAmount = 3000; uint256 public immutable maxWhitelistPerAmount = 2; uint256 public immutable maxPublicSalePerAmount = 30; uint256 public constant whitelistSalePrice = 0.0777 ether; uint256 public constant publicSalePrice = 0.0888 ether; uint256 public constant rewardPercent = 5; // used to validate whitelists bytes32 public whitelistMerkleRoot; // set time uint64 public immutable whitelistStartTime = 1649394780; uint64 public immutable whitelistEndTime = 1649481180; uint64 public immutable publicSaleStartTime = 1649481180; uint64 public immutable publicSaleEndTime = 1650085980; mapping(address => uint256) public whitelistMinted; mapping(address => uint256) public publicMinted; uint256 public whitelistMintedAmount; uint256 public refAddrCount; bool refRewardWithdrawLocked = false; address nindoTokenAddress; mapping(address => string) public refName; mapping(uint256 => address) public refAddrList; mapping(string => bool) public refNameRegistered; mapping(string => uint256) public refRewardUnclaimed; mapping(string => uint256) public refRewardClaimed; address withdrawAddress; event MintWhitelistWithRef(address buyer, string ref); event MintPublicWithRef(address buyer, string ref); event WithdrawReward(address user, uint256 amount); constructor() { refNameRegistered["none"] = true; nindoTokenAddress = address(0xaBAd3A3Ea761960093aF10DeD751bE8D94A564f4); whitelistMerkleRoot = 0x0; } // ============ MODIFIER FUNCTIONS ============ modifier isValidMerkleProof(bytes32[] calldata merkleProof, bytes32 root) { require( MerkleProof.verify( merkleProof, root, keccak256(abi.encodePacked(msg.sender)) ), "Address does not exist in list" ); _; } modifier isCorrectPayment(uint256 price, uint256 numberOfTokens) { require( price * numberOfTokens == msg.value, "Incorrect ETH value sent" ); _; } modifier canWhitelistMint(uint256 numberOfTokens) { uint256 ts = whitelistMintedAmount; require( ts + numberOfTokens <= maxWhitelistAmount, "Purchase would exceed max whitelist round tokens" ); _; } modifier canMint(uint256 numberOfTokens) { NindoContract tokenAttribution = NindoContract(nindoTokenAddress); uint256 ts = tokenAttribution.totalSupply(); require( ts + numberOfTokens <= MAX_SUPPLY, "Purchase would exceed max tokens" ); _; } modifier checkWhitelistTime() { require( block.timestamp >= uint256(whitelistStartTime) && block.timestamp <= uint256(whitelistEndTime), "Outside whitelist round hours" ); _; } modifier checkPublicSaleTime() { require( block.timestamp >= uint256(publicSaleStartTime) && block.timestamp <= uint256(publicSaleEndTime), "Outside public sale hours" ); _; } function isContainSpace(string memory _name) internal pure returns (bool) { bytes memory _nameBytes = bytes(_name); bytes memory _spaceBytes = bytes(" "); for (uint256 i = 0; i < _nameBytes.length; i++) { if (_nameBytes[i] == _spaceBytes[0]) { return true; } } return false; } // ============ PUBLIC FUNCTIONS FOR MINTING ============ function mintWhitelist( uint256 n, bytes32[] calldata merkleProof, string memory ref ) public payable isValidMerkleProof(merkleProof, whitelistMerkleRoot) isCorrectPayment(whitelistSalePrice, n) canWhitelistMint(n) checkWhitelistTime nonReentrant { require( whitelistMinted[msg.sender] + n <= maxWhitelistPerAmount, "NFT is already exceed max mint amount by this wallet" ); if ( keccak256(abi.encodePacked(ref)) == keccak256(abi.encodePacked("none")) ) {} else { require(refNameRegistered[ref] == true, "Ref name does not exist"); require( keccak256(abi.encodePacked(refName[msg.sender])) != keccak256(abi.encodePacked(ref)), "Invalid Ref Name" ); uint256 reward = (msg.value * rewardPercent) / 100; refRewardUnclaimed[ref] += reward; emit MintWhitelistWithRef(msg.sender, ref); } NindoContract tokenAttribution = NindoContract(nindoTokenAddress); tokenAttribution.mintTransfer(msg.sender, n); whitelistMinted[msg.sender] += n; whitelistMintedAmount += n; } function publicMint(uint256 n, string memory ref) public payable isCorrectPayment(publicSalePrice, n) canMint(n) checkPublicSaleTime nonReentrant { require( publicMinted[msg.sender] + n <= maxPublicSalePerAmount, "NFT is already exceed max mint amount by this wallet" ); if ( keccak256(abi.encodePacked(ref)) == keccak256(abi.encodePacked("none")) ) {} else { require(refNameRegistered[ref] == true, "Ref name does not exist"); require( keccak256(abi.encodePacked(refName[msg.sender])) != keccak256(abi.encodePacked(ref)), "Invalid Ref Name" ); uint256 reward = (msg.value * rewardPercent) / 100; refRewardUnclaimed[ref] += reward; emit MintPublicWithRef(msg.sender, ref); } NindoContract tokenAttribution = NindoContract(nindoTokenAddress); tokenAttribution.mintTransfer(msg.sender, n); publicMinted[msg.sender] += n; } // ============ PUBLIC FUNCTIONS FOR REFERRAL ============ function register(string memory name) public { require(refNameRegistered[name] == false, "This name already exists"); bytes memory tempName = bytes(name); bytes memory tempRefName = bytes(refName[msg.sender]); bool containSpace = isContainSpace(name); require( tempName.length > 0 && tempRefName.length == 0, "This address already has name OR name you enter is empty" ); require(containSpace == false, "Ref name can not include space"); refAddrList[refAddrCount] = msg.sender; refName[msg.sender] = name; refNameRegistered[name] = true; ++refAddrCount; } function withdrawRefReward() public { string memory name = refName[msg.sender]; require(refNameRegistered[name] == true, "This name does not exists"); require( refRewardWithdrawLocked == false, "refRewardWithdraw is locked" ); uint256 claim = refRewardUnclaimed[name]; require(claim > 0, "Nothing to claim"); payable(msg.sender).transfer(claim); refRewardClaimed[name] += claim; refRewardUnclaimed[name] = 0; emit WithdrawReward(msg.sender, claim); } function getRefNameByAddress(address addr) external view returns (string memory) { return refName[addr]; } function getRefNameAlreadyRegistered(string memory name) external view returns (bool) { return refNameRegistered[name]; } function getRefRewardClaimed(address addr) external view returns (uint256) { string memory name = this.getRefNameByAddress(addr); return refRewardClaimed[name]; } function getRefRewardUnclaimed(address addr) external view returns (uint256) { string memory name = this.getRefNameByAddress(addr); return refRewardUnclaimed[name]; } function getRefAddrByIndex(uint256 index) public view returns (address) { return refAddrList[index]; } function getRefAddrList() external view returns (address[] memory) { address[] memory addrList = new address[](refAddrCount); for (uint256 i = 0; i < refAddrCount; i++) { addrList[i] = refAddrList[i]; } return addrList; } // ============ OWNER-ONLY ADMIN FUNCTIONS ============ function withdraw() public { require( refRewardWithdrawLocked == true, "refReward withdraw must be true" ); require(msg.sender == withdrawAddress, "not withdrawAddress"); uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } function withdrawTokens(IERC20 token) public { require(msg.sender == withdrawAddress, "not withdrawAddress"); uint256 balance = token.balanceOf(address(this)); token.transfer(msg.sender, balance); } function setWhitelistMerkleRoot(bytes32 merkleRoot) external onlyOwner { whitelistMerkleRoot = merkleRoot; } function setNindoTokenAddress(address newAddress) public onlyOwner { nindoTokenAddress = newAddress; } function setWithdrawAddress(address newAddress) public onlyOwner { withdrawAddress = newAddress; } function toggleRefRewardLock() public onlyOwner { refRewardWithdrawLocked = !refRewardWithdrawLocked; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) pragma solidity ^0.8.0; import "../token/ERC20/IERC20.sol";
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) 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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/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() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) 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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"string","name":"ref","type":"string"}],"name":"MintPublicWithRef","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"string","name":"ref","type":"string"}],"name":"MintWhitelistWithRef","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":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawReward","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRefAddrByIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRefAddrList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getRefNameAlreadyRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRefNameByAddress","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRefRewardClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getRefRewardUnclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPublicSalePerAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWhitelistAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWhitelistPerAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"string","name":"ref","type":"string"}],"name":"mintWhitelist","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"string","name":"ref","type":"string"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"publicMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleEndTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleStartTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refAddrCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"refAddrList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"refName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"refNameRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"refRewardClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"refRewardUnclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setNindoTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"}],"name":"setWhitelistMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleRefRewardLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistEndTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistMerkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistStartTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawRefReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
610160604052610bb8608090815250600260a090815250601e60c09081525063624fc45c67ffffffffffffffff1660e09067ffffffffffffffff1660c01b81525063625115dc67ffffffffffffffff166101009067ffffffffffffffff1660c01b81525063625115dc67ffffffffffffffff166101209067ffffffffffffffff1660c01b81525063625a505c67ffffffffffffffff166101409067ffffffffffffffff1660c01b8152506000600760006101000a81548160ff021916908315150217905550348015620000d157600080fd5b50620000f2620000e66200019560201b60201c565b6200019d60201b60201c565b600180819055506001600a6040516200010b9062000288565b908152602001604051809103902060006101000a81548160ff02191690831515021790555073abad3a3ea761960093af10ded751be8d94a564f4600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000801b600281905550620002d3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000620002706004836200029f565b91506200027d82620002aa565b600482019050919050565b6000620002958262000261565b9150819050919050565b600081905092915050565b7f6e6f6e6500000000000000000000000000000000000000000000000000000000600082015250565b60805160a05160c05160e05160c01c6101005160c01c6101205160c01c6101405160c01c6142416200036b60003960008181610a4d015261109601526000818161106101526115a3015260008181611c2e01526125470152600081816119f80152611bf9015260008181611152015261157f015260008181611cea01526123af015260008181610b480152611b8b01526142416000f3fe60806040526004361061023b5760003560e01c8063819d383f1161012e578063ba1e8e21116100ab578063da757e7f1161006f578063da757e7f1461085f578063ebdfd7221461089c578063ecbaef10146108c7578063f2c298be14610904578063f2fde38b1461092d5761023b565b8063ba1e8e2114610778578063bd32fb66146107a3578063c0795ce1146107cc578063c117325014610809578063d0302051146108345761023b565b806398e59f40116100f257806398e59f40146106b25780639b6860c8146106ef5780639e48619a1461071a578063aa98e0c614610736578063b5d5fdb3146107615761023b565b8063819d383f146105b7578063870ee3f2146105f45780638da5cb5b1461061f5780639292caaf1461064a57806398a8cffe146106755761023b565b80634af56d93116101bc5780636bb7b1d9116101805780636bb7b1d9146104e4578063707cc3351461050f578063715018a614610538578063772463111461054f5780637a3cbc0f1461058c5761023b565b80634af56d93146103f85780634b543670146104145780634c958d901461043f5780636a1329e21461047c5780636b21fdda146104b95761023b565b806332cb6b0c1161020357806332cb6b0c14610339578063343365f6146103645780633ab1a4941461038f5780633ccfd60b146103b857806349df728c146103cf5761023b565b80630b1e854c146102405780630bedaa951461027d5780631015805b146102945780631e4d185f146102d1578063246f2336146102fc575b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190612f36565b610956565b6040516102749190613685565b60405180910390f35b34801561028957600080fd5b5061029261098b565b005b3480156102a057600080fd5b506102bb60048036038101906102b69190612e92565b610a33565b6040516102c8919061395d565b60405180910390f35b3480156102dd57600080fd5b506102e6610a4b565b6040516102f39190613978565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612e92565b610a6f565b60405161033091906136bb565b60405180910390f35b34801561034557600080fd5b5061034e610b40565b60405161035b919061395d565b60405180910390f35b34801561037057600080fd5b50610379610b46565b604051610386919061395d565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190612e92565b610b6a565b005b3480156103c457600080fd5b506103cd610c2a565b005b3480156103db57600080fd5b506103f660048036038101906103f19190612f0d565b610d5f565b005b610412600480360381019061040d919061308e565b610f0e565b005b34801561042057600080fd5b5061042961151b565b604051610436919061395d565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190612f36565b611521565b604051610473919061395d565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190612f36565b61154f565b6040516104b0919061395d565b60405180910390f35b3480156104c557600080fd5b506104ce61157d565b6040516104db919061395d565b60405180910390f35b3480156104f057600080fd5b506104f96115a1565b6040516105069190613978565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190612e92565b6115c5565b005b34801561054457600080fd5b5061054d611685565b005b34801561055b57600080fd5b5061057660048036038101906105719190612e92565b61170d565b604051610583919061395d565b60405180910390f35b34801561059857600080fd5b506105a16117c7565b6040516105ae919061395d565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190612e92565b6117cd565b6040516105eb919061395d565b60405180910390f35b34801561060057600080fd5b50610609611887565b6040516106169190613663565b60405180910390f35b34801561062b57600080fd5b506106346119cd565b60405161064191906135ef565b60405180910390f35b34801561065657600080fd5b5061065f6119f6565b60405161066c9190613978565b60405180910390f35b34801561068157600080fd5b5061069c60048036038101906106979190612e92565b611a1a565b6040516106a9919061395d565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190612f36565b611a32565b6040516106e69190613685565b60405180910390f35b3480156106fb57600080fd5b50610704611a68565b604051610711919061395d565b60405180910390f35b610734600480360381019061072f919061300a565b611a74565b005b34801561074257600080fd5b5061074b6120d0565b60405161075891906136a0565b60405180910390f35b34801561076d57600080fd5b506107766120d6565b005b34801561078457600080fd5b5061078d6123ad565b60405161079a919061395d565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190612ee4565b6123d1565b005b3480156107d857600080fd5b506107f360048036038101906107ee9190612e92565b612457565b60405161080091906136bb565b60405180910390f35b34801561081557600080fd5b5061081e6124f7565b60405161082b919061395d565b60405180910390f35b34801561084057600080fd5b50610849612503565b604051610856919061395d565b60405180910390f35b34801561086b57600080fd5b5061088660048036038101906108819190612fb8565b612508565b60405161089391906135ef565b60405180910390f35b3480156108a857600080fd5b506108b1612545565b6040516108be9190613978565b60405180910390f35b3480156108d357600080fd5b506108ee60048036038101906108e99190612fb8565b612569565b6040516108fb91906135ef565b60405180910390f35b34801561091057600080fd5b5061092b60048036038101906109269190612f36565b61259c565b005b34801561093957600080fd5b50610954600480360381019061094f9190612e92565b61287f565b005b6000600a8260405161096891906135ac565b908152602001604051809103902060009054906101000a900460ff169050919050565b610993612977565b73ffffffffffffffffffffffffffffffffffffffff166109b16119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe9061383d565b60405180910390fd5b600760009054906101000a900460ff1615600760006101000a81548160ff021916908315150217905550565b60046020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054610abb90613bf9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790613bf9565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b50505050509050919050565b61270f81565b7f000000000000000000000000000000000000000000000000000000000000000081565b610b72612977565b73ffffffffffffffffffffffffffffffffffffffff16610b906119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd9061383d565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60011515600760009054906101000a900460ff16151514610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c779061375d565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d079061385d565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d5b573d6000803e3d6000fd5b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de69061385d565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e2a91906135ef565b60206040518083038186803b158015610e4257600080fd5b505afa158015610e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7a9190612fe1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610eb792919061363a565b602060405180830381600087803b158015610ed157600080fd5b505af1158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190612ebb565b505050565b67013b7b21280e000082348183610f259190613ae5565b14610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906138fd565b60405180910390fd5b836000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd557600080fd5b505afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d9190612fe1565b905061270f838261101e9190613a5e565b111561105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061371d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1642101580156110c357507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164211155b611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f9906138dd565b60405180910390fd5b60026001541415611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f9061391d565b60405180910390fd5b60026001819055507f000000000000000000000000000000000000000000000000000000000000000087600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bc9190613a5e565b11156111fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f4906137dd565b60405180910390fd5b60405160200161120c906135da565b604051602081830303815290604052805190602001208660405160200161123391906135ac565b60405160208183030381529060405280519060200120141561125457611420565b60011515600a8760405161126891906135ac565b908152602001604051809103902060009054906101000a900460ff161515146112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd9061393d565b60405180910390fd5b856040516020016112d791906135ac565b60405160208183030381529060405280519060200120600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405160200161133c91906135c3565b604051602081830303815290604052805190602001201415611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a9061389d565b60405180910390fd5b600060646005346113a49190613ae5565b6113ae9190613ab4565b905080600b886040516113c191906135ac565b908152602001604051809103902060008282546113de9190613a5e565b925050819055507faba4d8c43ed396df25dff2494200e411e55b58799cb426bf74f13308c11f313c338860405161141692919061360a565b60405180910390a1505b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c349c93e338a6040518363ffffffff1660e01b815260040161148292919061363a565b600060405180830381600087803b15801561149c57600080fd5b505af11580156114b0573d6000803e3d6000fd5b5050505087600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115039190613a5e565b92505081905550506001808190555050505050505050565b60065481565b600c818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b600b818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6115cd612977565b73ffffffffffffffffffffffffffffffffffffffff166115eb6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116389061383d565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61168d612977565b73ffffffffffffffffffffffffffffffffffffffff166116ab6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061383d565b60405180910390fd5b61170b600061297f565b565b6000803073ffffffffffffffffffffffffffffffffffffffff1663246f2336846040518263ffffffff1660e01b815260040161174991906135ef565b60006040518083038186803b15801561176157600080fd5b505afa158015611775573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061179e9190612f77565b9050600c816040516117b091906135ac565b908152602001604051809103902054915050919050565b60055481565b6000803073ffffffffffffffffffffffffffffffffffffffff1663246f2336846040518263ffffffff1660e01b815260040161180991906135ef565b60006040518083038186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061185e9190612f77565b9050600b8160405161187091906135ac565b908152602001604051809103902054915050919050565b6060600060065467ffffffffffffffff8111156118cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118fb5781602001602082028036833780820191505090505b50905060005b6006548110156119c5576009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611978577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806119bd90613c5c565b915050611901565b508091505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020528060005260406000206000915090505481565b600a818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b67013b7b21280e000081565b8282600254611aeb838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508233604051602001611ad09190613591565b60405160208183030381529060405280519060200120612a43565b611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b219061379d565b60405180910390fd5b6701140bbd030c400087348183611b419190613ae5565b14611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906138fd565b60405180910390fd5b88600060055490507f00000000000000000000000000000000000000000000000000000000000000008282611bb69190613a5e565b1115611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee906137bd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164210158015611c5b57507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff164211155b611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c919061381d565b60405180910390fd5b60026001541415611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd79061391d565b60405180910390fd5b60026001819055507f00000000000000000000000000000000000000000000000000000000000000008b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d549190613a5e565b1115611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c906137dd565b60405180910390fd5b604051602001611da4906135da565b6040516020818303038152906040528051906020012088604051602001611dcb91906135ac565b604051602081830303815290604052805190602001201415611dec57611fb8565b60011515600a89604051611e0091906135ac565b908152602001604051809103902060009054906101000a900460ff16151514611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e559061393d565b60405180910390fd5b87604051602001611e6f91906135ac565b60405160208183030381529060405280519060200120600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051602001611ed491906135c3565b604051602081830303815290604052805190602001201415611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f229061389d565b60405180910390fd5b60006064600534611f3c9190613ae5565b611f469190613ab4565b905080600b8a604051611f5991906135ac565b90815260200160405180910390206000828254611f769190613a5e565b925050819055507f2258bf1f233cf93c8742b43d66bcb4175b901e0582fc96236b6dd2d5d8210f00338a604051611fae92919061360a565b60405180910390a1505b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c349c93e338e6040518363ffffffff1660e01b815260040161201a92919061363a565b600060405180830381600087803b15801561203457600080fd5b505af1158015612048573d6000803e3d6000fd5b505050508b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461209b9190613a5e565b925050819055508b600560008282546120b49190613a5e565b9250508190555050600180819055505050505050505050505050565b60025481565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805461212290613bf9565b80601f016020809104026020016040519081016040528092919081815260200182805461214e90613bf9565b801561219b5780601f106121705761010080835404028352916020019161219b565b820191906000526020600020905b81548152906001019060200180831161217e57829003601f168201915b5050505050905060011515600a826040516121b691906135ac565b908152602001604051809103902060009054906101000a900460ff16151514612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b9061387d565b60405180910390fd5b60001515600760009054906101000a900460ff1615151461226a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612261906137fd565b60405180910390fd5b6000600b8260405161227c91906135ac565b9081526020016040518091039020549050600081116122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c7906136dd565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612316573d6000803e3d6000fd5b5080600c8360405161232891906135ac565b908152602001604051809103902060008282546123459190613a5e565b925050819055506000600b8360405161235e91906135ac565b9081526020016040518091039020819055507fbc84835063c693975166f00cffb19f01a94c2db55b1bf259238c5da3594e506633826040516123a192919061363a565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6123d9612977565b73ffffffffffffffffffffffffffffffffffffffff166123f76119cd565b73ffffffffffffffffffffffffffffffffffffffff161461244d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124449061383d565b60405180910390fd5b8060028190555050565b6008602052806000526040600020600091509050805461247690613bf9565b80601f01602080910402602001604051908101604052809291908181526020018280546124a290613bf9565b80156124ef5780601f106124c4576101008083540402835291602001916124ef565b820191906000526020600020905b8154815290600101906020018083116124d257829003601f168201915b505050505081565b6701140bbd030c400081565b600581565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600a826040516125b091906135ac565b908152602001604051809103902060009054906101000a900460ff1615151461260e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612605906138bd565b60405180910390fd5b60008190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805461265f90613bf9565b80601f016020809104026020016040519081016040528092919081815260200182805461268b90613bf9565b80156126d85780601f106126ad576101008083540402835291602001916126d8565b820191906000526020600020905b8154815290600101906020018083116126bb57829003601f168201915b5050505050905060006126ea84612a5a565b9050600083511180156126fe575060008251145b61273d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127349061373d565b60405180910390fd5b6000151581151514612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b9061377d565b60405180910390fd5b3360096000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908051906020019061282b929190612c57565b506001600a8560405161283e91906135ac565b908152602001604051809103902060006101000a81548160ff02191690831515021790555060066000815461287290613c5c565b9190508190555050505050565b612887612977565b73ffffffffffffffffffffffffffffffffffffffff166128a56119cd565b73ffffffffffffffffffffffffffffffffffffffff16146128fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f29061383d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561296b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612962906136fd565b60405180910390fd5b6129748161297f565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082612a508584612ba5565b1490509392505050565b60008082905060006040518060400160405280600181526020017f2000000000000000000000000000000000000000000000000000000000000000815250905060005b8251811015612b985781600081518110612ae0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916838281518110612b46577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415612b855760019350505050612ba0565b8080612b9090613c5c565b915050612a9d565b506000925050505b919050565b60008082905060005b8451811015612c35576000858281518110612bf2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311612c1457612c0d8382612c40565b9250612c21565b612c1e8184612c40565b92505b508080612c2d90613c5c565b915050612bae565b508091505092915050565b600082600052816020526040600020905092915050565b828054612c6390613bf9565b90600052602060002090601f016020900481019282612c855760008555612ccc565b82601f10612c9e57805160ff1916838001178555612ccc565b82800160010185558215612ccc579182015b82811115612ccb578251825591602001919060010190612cb0565b5b509050612cd99190612cdd565b5090565b5b80821115612cf6576000816000905550600101612cde565b5090565b6000612d0d612d08846139b8565b613993565b905082815260208101848484011115612d2557600080fd5b612d30848285613bb7565b509392505050565b6000612d4b612d46846139b8565b613993565b905082815260208101848484011115612d6357600080fd5b612d6e848285613bc6565b509392505050565b600081359050612d8581614198565b92915050565b60008083601f840112612d9d57600080fd5b8235905067ffffffffffffffff811115612db657600080fd5b602083019150836020820283011115612dce57600080fd5b9250929050565b600081519050612de4816141af565b92915050565b600081359050612df9816141c6565b92915050565b600081359050612e0e816141dd565b92915050565b600082601f830112612e2557600080fd5b8135612e35848260208601612cfa565b91505092915050565b600082601f830112612e4f57600080fd5b8151612e5f848260208601612d38565b91505092915050565b600081359050612e77816141f4565b92915050565b600081519050612e8c816141f4565b92915050565b600060208284031215612ea457600080fd5b6000612eb284828501612d76565b91505092915050565b600060208284031215612ecd57600080fd5b6000612edb84828501612dd5565b91505092915050565b600060208284031215612ef657600080fd5b6000612f0484828501612dea565b91505092915050565b600060208284031215612f1f57600080fd5b6000612f2d84828501612dff565b91505092915050565b600060208284031215612f4857600080fd5b600082013567ffffffffffffffff811115612f6257600080fd5b612f6e84828501612e14565b91505092915050565b600060208284031215612f8957600080fd5b600082015167ffffffffffffffff811115612fa357600080fd5b612faf84828501612e3e565b91505092915050565b600060208284031215612fca57600080fd5b6000612fd884828501612e68565b91505092915050565b600060208284031215612ff357600080fd5b600061300184828501612e7d565b91505092915050565b6000806000806060858703121561302057600080fd5b600061302e87828801612e68565b945050602085013567ffffffffffffffff81111561304b57600080fd5b61305787828801612d8b565b9350935050604085013567ffffffffffffffff81111561307657600080fd5b61308287828801612e14565b91505092959194509250565b600080604083850312156130a157600080fd5b60006130af85828601612e68565b925050602083013567ffffffffffffffff8111156130cc57600080fd5b6130d885828601612e14565b9150509250929050565b60006130ee83836130fa565b60208301905092915050565b61310381613b3f565b82525050565b61311281613b3f565b82525050565b61312961312482613b3f565b613ca5565b82525050565b600061313a82613a0e565b6131448185613a31565b935061314f836139e9565b8060005b8381101561318057815161316788826130e2565b975061317283613a24565b925050600181019050613153565b5085935050505092915050565b61319681613b51565b82525050565b6131a581613b5d565b82525050565b60006131b682613a19565b6131c08185613a42565b93506131d0818560208601613bc6565b6131d981613d85565b840191505092915050565b60006131ef82613a19565b6131f98185613a53565b9350613209818560208601613bc6565b80840191505092915050565b6000815461322281613bf9565b61322c8186613a53565b9450600182166000811461324757600181146132585761328b565b60ff1983168652818601935061328b565b613261856139f9565b60005b8381101561328357815481890152600182019150602081019050613264565b838801955050505b50505092915050565b60006132a1601083613a42565b91506132ac82613da3565b602082019050919050565b60006132c4602683613a42565b91506132cf82613dcc565b604082019050919050565b60006132e7602083613a42565b91506132f282613e1b565b602082019050919050565b600061330a603883613a42565b915061331582613e44565b604082019050919050565b600061332d601f83613a42565b915061333882613e93565b602082019050919050565b6000613350601e83613a42565b915061335b82613ebc565b602082019050919050565b6000613373601e83613a42565b915061337e82613ee5565b602082019050919050565b6000613396603083613a42565b91506133a182613f0e565b604082019050919050565b60006133b9603483613a42565b91506133c482613f5d565b604082019050919050565b60006133dc601b83613a42565b91506133e782613fac565b602082019050919050565b60006133ff601d83613a42565b915061340a82613fd5565b602082019050919050565b6000613422602083613a42565b915061342d82613ffe565b602082019050919050565b6000613445601383613a42565b915061345082614027565b602082019050919050565b6000613468601983613a42565b915061347382614050565b602082019050919050565b600061348b601083613a42565b915061349682614079565b602082019050919050565b60006134ae601883613a42565b91506134b9826140a2565b602082019050919050565b60006134d1601983613a42565b91506134dc826140cb565b602082019050919050565b60006134f4601883613a42565b91506134ff826140f4565b602082019050919050565b6000613517601f83613a42565b91506135228261411d565b602082019050919050565b600061353a601783613a42565b915061354582614146565b602082019050919050565b600061355d600483613a53565b91506135688261416f565b600482019050919050565b61357c81613b99565b82525050565b61358b81613ba3565b82525050565b600061359d8284613118565b60148201915081905092915050565b60006135b882846131e4565b915081905092915050565b60006135cf8284613215565b915081905092915050565b60006135e582613550565b9150819050919050565b60006020820190506136046000830184613109565b92915050565b600060408201905061361f6000830185613109565b818103602083015261363181846131ab565b90509392505050565b600060408201905061364f6000830185613109565b61365c6020830184613573565b9392505050565b6000602082019050818103600083015261367d818461312f565b905092915050565b600060208201905061369a600083018461318d565b92915050565b60006020820190506136b5600083018461319c565b92915050565b600060208201905081810360008301526136d581846131ab565b905092915050565b600060208201905081810360008301526136f681613294565b9050919050565b60006020820190508181036000830152613716816132b7565b9050919050565b60006020820190508181036000830152613736816132da565b9050919050565b60006020820190508181036000830152613756816132fd565b9050919050565b6000602082019050818103600083015261377681613320565b9050919050565b6000602082019050818103600083015261379681613343565b9050919050565b600060208201905081810360008301526137b681613366565b9050919050565b600060208201905081810360008301526137d681613389565b9050919050565b600060208201905081810360008301526137f6816133ac565b9050919050565b60006020820190508181036000830152613816816133cf565b9050919050565b60006020820190508181036000830152613836816133f2565b9050919050565b6000602082019050818103600083015261385681613415565b9050919050565b6000602082019050818103600083015261387681613438565b9050919050565b600060208201905081810360008301526138968161345b565b9050919050565b600060208201905081810360008301526138b68161347e565b9050919050565b600060208201905081810360008301526138d6816134a1565b9050919050565b600060208201905081810360008301526138f6816134c4565b9050919050565b60006020820190508181036000830152613916816134e7565b9050919050565b600060208201905081810360008301526139368161350a565b9050919050565b600060208201905081810360008301526139568161352d565b9050919050565b60006020820190506139726000830184613573565b92915050565b600060208201905061398d6000830184613582565b92915050565b600061399d6139ae565b90506139a98282613c2b565b919050565b6000604051905090565b600067ffffffffffffffff8211156139d3576139d2613d56565b5b6139dc82613d85565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a6982613b99565b9150613a7483613b99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aa957613aa8613cc9565b5b828201905092915050565b6000613abf82613b99565b9150613aca83613b99565b925082613ada57613ad9613cf8565b5b828204905092915050565b6000613af082613b99565b9150613afb83613b99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3457613b33613cc9565b5b828202905092915050565b6000613b4a82613b79565b9050919050565b60008115159050919050565b6000819050919050565b6000613b7282613b3f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015613be4578082015181840152602081019050613bc9565b83811115613bf3576000848401525b50505050565b60006002820490506001821680613c1157607f821691505b60208210811415613c2557613c24613d27565b5b50919050565b613c3482613d85565b810181811067ffffffffffffffff82111715613c5357613c52613d56565b5b80604052505050565b6000613c6782613b99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c9a57613c99613cc9565b5b600182019050919050565b6000613cb082613cb7565b9050919050565b6000613cc282613d96565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820746f6b656e73600082015250565b7f54686973206164647265737320616c726561647920686173206e616d65204f5260008201527f206e616d6520796f7520656e74657220697320656d7074790000000000000000602082015250565b7f726566526577617264207769746864726177206d757374206265207472756500600082015250565b7f526566206e616d652063616e206e6f7420696e636c7564652073706163650000600082015250565b7f4164647265737320646f6573206e6f7420657869737420696e206c6973740000600082015250565b7f507572636861736520776f756c6420657863656564206d61782077686974656c60008201527f69737420726f756e6420746f6b656e7300000000000000000000000000000000602082015250565b7f4e465420697320616c726561647920657863656564206d6178206d696e74206160008201527f6d6f756e7420627920746869732077616c6c6574000000000000000000000000602082015250565b7f7265665265776172645769746864726177206973206c6f636b65640000000000600082015250565b7f4f7574736964652077686974656c69737420726f756e6420686f757273000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6e6f742077697468647261774164647265737300000000000000000000000000600082015250565b7f54686973206e616d6520646f6573206e6f742065786973747300000000000000600082015250565b7f496e76616c696420526566204e616d6500000000000000000000000000000000600082015250565b7f54686973206e616d6520616c7265616479206578697374730000000000000000600082015250565b7f4f757473696465207075626c69632073616c6520686f75727300000000000000600082015250565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f526566206e616d6520646f6573206e6f74206578697374000000000000000000600082015250565b7f6e6f6e6500000000000000000000000000000000000000000000000000000000600082015250565b6141a181613b3f565b81146141ac57600080fd5b50565b6141b881613b51565b81146141c357600080fd5b50565b6141cf81613b5d565b81146141da57600080fd5b50565b6141e681613b67565b81146141f157600080fd5b50565b6141fd81613b99565b811461420857600080fd5b5056fea2646970667358221220a9c18a230991509bb564a0dc091476057f199c0297621af1eefc8e303ace425064736f6c63430008040033
Deployed Bytecode
0x60806040526004361061023b5760003560e01c8063819d383f1161012e578063ba1e8e21116100ab578063da757e7f1161006f578063da757e7f1461085f578063ebdfd7221461089c578063ecbaef10146108c7578063f2c298be14610904578063f2fde38b1461092d5761023b565b8063ba1e8e2114610778578063bd32fb66146107a3578063c0795ce1146107cc578063c117325014610809578063d0302051146108345761023b565b806398e59f40116100f257806398e59f40146106b25780639b6860c8146106ef5780639e48619a1461071a578063aa98e0c614610736578063b5d5fdb3146107615761023b565b8063819d383f146105b7578063870ee3f2146105f45780638da5cb5b1461061f5780639292caaf1461064a57806398a8cffe146106755761023b565b80634af56d93116101bc5780636bb7b1d9116101805780636bb7b1d9146104e4578063707cc3351461050f578063715018a614610538578063772463111461054f5780637a3cbc0f1461058c5761023b565b80634af56d93146103f85780634b543670146104145780634c958d901461043f5780636a1329e21461047c5780636b21fdda146104b95761023b565b806332cb6b0c1161020357806332cb6b0c14610339578063343365f6146103645780633ab1a4941461038f5780633ccfd60b146103b857806349df728c146103cf5761023b565b80630b1e854c146102405780630bedaa951461027d5780631015805b146102945780631e4d185f146102d1578063246f2336146102fc575b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190612f36565b610956565b6040516102749190613685565b60405180910390f35b34801561028957600080fd5b5061029261098b565b005b3480156102a057600080fd5b506102bb60048036038101906102b69190612e92565b610a33565b6040516102c8919061395d565b60405180910390f35b3480156102dd57600080fd5b506102e6610a4b565b6040516102f39190613978565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612e92565b610a6f565b60405161033091906136bb565b60405180910390f35b34801561034557600080fd5b5061034e610b40565b60405161035b919061395d565b60405180910390f35b34801561037057600080fd5b50610379610b46565b604051610386919061395d565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190612e92565b610b6a565b005b3480156103c457600080fd5b506103cd610c2a565b005b3480156103db57600080fd5b506103f660048036038101906103f19190612f0d565b610d5f565b005b610412600480360381019061040d919061308e565b610f0e565b005b34801561042057600080fd5b5061042961151b565b604051610436919061395d565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190612f36565b611521565b604051610473919061395d565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190612f36565b61154f565b6040516104b0919061395d565b60405180910390f35b3480156104c557600080fd5b506104ce61157d565b6040516104db919061395d565b60405180910390f35b3480156104f057600080fd5b506104f96115a1565b6040516105069190613978565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190612e92565b6115c5565b005b34801561054457600080fd5b5061054d611685565b005b34801561055b57600080fd5b5061057660048036038101906105719190612e92565b61170d565b604051610583919061395d565b60405180910390f35b34801561059857600080fd5b506105a16117c7565b6040516105ae919061395d565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190612e92565b6117cd565b6040516105eb919061395d565b60405180910390f35b34801561060057600080fd5b50610609611887565b6040516106169190613663565b60405180910390f35b34801561062b57600080fd5b506106346119cd565b60405161064191906135ef565b60405180910390f35b34801561065657600080fd5b5061065f6119f6565b60405161066c9190613978565b60405180910390f35b34801561068157600080fd5b5061069c60048036038101906106979190612e92565b611a1a565b6040516106a9919061395d565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d49190612f36565b611a32565b6040516106e69190613685565b60405180910390f35b3480156106fb57600080fd5b50610704611a68565b604051610711919061395d565b60405180910390f35b610734600480360381019061072f919061300a565b611a74565b005b34801561074257600080fd5b5061074b6120d0565b60405161075891906136a0565b60405180910390f35b34801561076d57600080fd5b506107766120d6565b005b34801561078457600080fd5b5061078d6123ad565b60405161079a919061395d565b60405180910390f35b3480156107af57600080fd5b506107ca60048036038101906107c59190612ee4565b6123d1565b005b3480156107d857600080fd5b506107f360048036038101906107ee9190612e92565b612457565b60405161080091906136bb565b60405180910390f35b34801561081557600080fd5b5061081e6124f7565b60405161082b919061395d565b60405180910390f35b34801561084057600080fd5b50610849612503565b604051610856919061395d565b60405180910390f35b34801561086b57600080fd5b5061088660048036038101906108819190612fb8565b612508565b60405161089391906135ef565b60405180910390f35b3480156108a857600080fd5b506108b1612545565b6040516108be9190613978565b60405180910390f35b3480156108d357600080fd5b506108ee60048036038101906108e99190612fb8565b612569565b6040516108fb91906135ef565b60405180910390f35b34801561091057600080fd5b5061092b60048036038101906109269190612f36565b61259c565b005b34801561093957600080fd5b50610954600480360381019061094f9190612e92565b61287f565b005b6000600a8260405161096891906135ac565b908152602001604051809103902060009054906101000a900460ff169050919050565b610993612977565b73ffffffffffffffffffffffffffffffffffffffff166109b16119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe9061383d565b60405180910390fd5b600760009054906101000a900460ff1615600760006101000a81548160ff021916908315150217905550565b60046020528060005260406000206000915090505481565b7f00000000000000000000000000000000000000000000000000000000625a505c81565b6060600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054610abb90613bf9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae790613bf9565b8015610b345780601f10610b0957610100808354040283529160200191610b34565b820191906000526020600020905b815481529060010190602001808311610b1757829003601f168201915b50505050509050919050565b61270f81565b7f0000000000000000000000000000000000000000000000000000000000000bb881565b610b72612977565b73ffffffffffffffffffffffffffffffffffffffff16610b906119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd9061383d565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60011515600760009054906101000a900460ff16151514610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c779061375d565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d079061385d565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d5b573d6000803e3d6000fd5b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de69061385d565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e2a91906135ef565b60206040518083038186803b158015610e4257600080fd5b505afa158015610e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7a9190612fe1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610eb792919061363a565b602060405180830381600087803b158015610ed157600080fd5b505af1158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f099190612ebb565b505050565b67013b7b21280e000082348183610f259190613ae5565b14610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c906138fd565b60405180910390fd5b836000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd557600080fd5b505afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d9190612fe1565b905061270f838261101e9190613a5e565b111561105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061371d565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000625115dc67ffffffffffffffff1642101580156110c357507f00000000000000000000000000000000000000000000000000000000625a505c67ffffffffffffffff164211155b611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f9906138dd565b60405180910390fd5b60026001541415611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113f9061391d565b60405180910390fd5b60026001819055507f000000000000000000000000000000000000000000000000000000000000001e87600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bc9190613a5e565b11156111fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f4906137dd565b60405180910390fd5b60405160200161120c906135da565b604051602081830303815290604052805190602001208660405160200161123391906135ac565b60405160208183030381529060405280519060200120141561125457611420565b60011515600a8760405161126891906135ac565b908152602001604051809103902060009054906101000a900460ff161515146112c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bd9061393d565b60405180910390fd5b856040516020016112d791906135ac565b60405160208183030381529060405280519060200120600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405160200161133c91906135c3565b604051602081830303815290604052805190602001201415611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a9061389d565b60405180910390fd5b600060646005346113a49190613ae5565b6113ae9190613ab4565b905080600b886040516113c191906135ac565b908152602001604051809103902060008282546113de9190613a5e565b925050819055507faba4d8c43ed396df25dff2494200e411e55b58799cb426bf74f13308c11f313c338860405161141692919061360a565b60405180910390a1505b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c349c93e338a6040518363ffffffff1660e01b815260040161148292919061363a565b600060405180830381600087803b15801561149c57600080fd5b505af11580156114b0573d6000803e3d6000fd5b5050505087600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115039190613a5e565b92505081905550506001808190555050505050505050565b60065481565b600c818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b600b818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b7f000000000000000000000000000000000000000000000000000000000000001e81565b7f00000000000000000000000000000000000000000000000000000000625115dc81565b6115cd612977565b73ffffffffffffffffffffffffffffffffffffffff166115eb6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116389061383d565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61168d612977565b73ffffffffffffffffffffffffffffffffffffffff166116ab6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061383d565b60405180910390fd5b61170b600061297f565b565b6000803073ffffffffffffffffffffffffffffffffffffffff1663246f2336846040518263ffffffff1660e01b815260040161174991906135ef565b60006040518083038186803b15801561176157600080fd5b505afa158015611775573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061179e9190612f77565b9050600c816040516117b091906135ac565b908152602001604051809103902054915050919050565b60055481565b6000803073ffffffffffffffffffffffffffffffffffffffff1663246f2336846040518263ffffffff1660e01b815260040161180991906135ef565b60006040518083038186803b15801561182157600080fd5b505afa158015611835573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061185e9190612f77565b9050600b8160405161187091906135ac565b908152602001604051809103902054915050919050565b6060600060065467ffffffffffffffff8111156118cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118fb5781602001602082028036833780820191505090505b50905060005b6006548110156119c5576009600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611978577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806119bd90613c5c565b915050611901565b508091505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f00000000000000000000000000000000000000000000000000000000624fc45c81565b60036020528060005260406000206000915090505481565b600a818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b67013b7b21280e000081565b8282600254611aeb838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508233604051602001611ad09190613591565b60405160208183030381529060405280519060200120612a43565b611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b219061379d565b60405180910390fd5b6701140bbd030c400087348183611b419190613ae5565b14611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906138fd565b60405180910390fd5b88600060055490507f0000000000000000000000000000000000000000000000000000000000000bb88282611bb69190613a5e565b1115611bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bee906137bd565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000624fc45c67ffffffffffffffff164210158015611c5b57507f00000000000000000000000000000000000000000000000000000000625115dc67ffffffffffffffff164211155b611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c919061381d565b60405180910390fd5b60026001541415611ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd79061391d565b60405180910390fd5b60026001819055507f00000000000000000000000000000000000000000000000000000000000000028b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d549190613a5e565b1115611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c906137dd565b60405180910390fd5b604051602001611da4906135da565b6040516020818303038152906040528051906020012088604051602001611dcb91906135ac565b604051602081830303815290604052805190602001201415611dec57611fb8565b60011515600a89604051611e0091906135ac565b908152602001604051809103902060009054906101000a900460ff16151514611e5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e559061393d565b60405180910390fd5b87604051602001611e6f91906135ac565b60405160208183030381529060405280519060200120600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051602001611ed491906135c3565b604051602081830303815290604052805190602001201415611f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f229061389d565b60405180910390fd5b60006064600534611f3c9190613ae5565b611f469190613ab4565b905080600b8a604051611f5991906135ac565b90815260200160405180910390206000828254611f769190613a5e565b925050819055507f2258bf1f233cf93c8742b43d66bcb4175b901e0582fc96236b6dd2d5d8210f00338a604051611fae92919061360a565b60405180910390a1505b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c349c93e338e6040518363ffffffff1660e01b815260040161201a92919061363a565b600060405180830381600087803b15801561203457600080fd5b505af1158015612048573d6000803e3d6000fd5b505050508b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461209b9190613a5e565b925050819055508b600560008282546120b49190613a5e565b9250508190555050600180819055505050505050505050505050565b60025481565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805461212290613bf9565b80601f016020809104026020016040519081016040528092919081815260200182805461214e90613bf9565b801561219b5780601f106121705761010080835404028352916020019161219b565b820191906000526020600020905b81548152906001019060200180831161217e57829003601f168201915b5050505050905060011515600a826040516121b691906135ac565b908152602001604051809103902060009054906101000a900460ff16151514612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b9061387d565b60405180910390fd5b60001515600760009054906101000a900460ff1615151461226a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612261906137fd565b60405180910390fd5b6000600b8260405161227c91906135ac565b9081526020016040518091039020549050600081116122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c7906136dd565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612316573d6000803e3d6000fd5b5080600c8360405161232891906135ac565b908152602001604051809103902060008282546123459190613a5e565b925050819055506000600b8360405161235e91906135ac565b9081526020016040518091039020819055507fbc84835063c693975166f00cffb19f01a94c2db55b1bf259238c5da3594e506633826040516123a192919061363a565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000281565b6123d9612977565b73ffffffffffffffffffffffffffffffffffffffff166123f76119cd565b73ffffffffffffffffffffffffffffffffffffffff161461244d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124449061383d565b60405180910390fd5b8060028190555050565b6008602052806000526040600020600091509050805461247690613bf9565b80601f01602080910402602001604051908101604052809291908181526020018280546124a290613bf9565b80156124ef5780601f106124c4576101008083540402835291602001916124ef565b820191906000526020600020905b8154815290600101906020018083116124d257829003601f168201915b505050505081565b6701140bbd030c400081565b600581565b60006009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b7f00000000000000000000000000000000000000000000000000000000625115dc81565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600a826040516125b091906135ac565b908152602001604051809103902060009054906101000a900460ff1615151461260e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612605906138bd565b60405180910390fd5b60008190506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805461265f90613bf9565b80601f016020809104026020016040519081016040528092919081815260200182805461268b90613bf9565b80156126d85780601f106126ad576101008083540402835291602001916126d8565b820191906000526020600020905b8154815290600101906020018083116126bb57829003601f168201915b5050505050905060006126ea84612a5a565b9050600083511180156126fe575060008251145b61273d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127349061373d565b60405180910390fd5b6000151581151514612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b9061377d565b60405180910390fd5b3360096000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020908051906020019061282b929190612c57565b506001600a8560405161283e91906135ac565b908152602001604051809103902060006101000a81548160ff02191690831515021790555060066000815461287290613c5c565b9190508190555050505050565b612887612977565b73ffffffffffffffffffffffffffffffffffffffff166128a56119cd565b73ffffffffffffffffffffffffffffffffffffffff16146128fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f29061383d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561296b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612962906136fd565b60405180910390fd5b6129748161297f565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600082612a508584612ba5565b1490509392505050565b60008082905060006040518060400160405280600181526020017f2000000000000000000000000000000000000000000000000000000000000000815250905060005b8251811015612b985781600081518110612ae0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916838281518110612b46577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415612b855760019350505050612ba0565b8080612b9090613c5c565b915050612a9d565b506000925050505b919050565b60008082905060005b8451811015612c35576000858281518110612bf2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311612c1457612c0d8382612c40565b9250612c21565b612c1e8184612c40565b92505b508080612c2d90613c5c565b915050612bae565b508091505092915050565b600082600052816020526040600020905092915050565b828054612c6390613bf9565b90600052602060002090601f016020900481019282612c855760008555612ccc565b82601f10612c9e57805160ff1916838001178555612ccc565b82800160010185558215612ccc579182015b82811115612ccb578251825591602001919060010190612cb0565b5b509050612cd99190612cdd565b5090565b5b80821115612cf6576000816000905550600101612cde565b5090565b6000612d0d612d08846139b8565b613993565b905082815260208101848484011115612d2557600080fd5b612d30848285613bb7565b509392505050565b6000612d4b612d46846139b8565b613993565b905082815260208101848484011115612d6357600080fd5b612d6e848285613bc6565b509392505050565b600081359050612d8581614198565b92915050565b60008083601f840112612d9d57600080fd5b8235905067ffffffffffffffff811115612db657600080fd5b602083019150836020820283011115612dce57600080fd5b9250929050565b600081519050612de4816141af565b92915050565b600081359050612df9816141c6565b92915050565b600081359050612e0e816141dd565b92915050565b600082601f830112612e2557600080fd5b8135612e35848260208601612cfa565b91505092915050565b600082601f830112612e4f57600080fd5b8151612e5f848260208601612d38565b91505092915050565b600081359050612e77816141f4565b92915050565b600081519050612e8c816141f4565b92915050565b600060208284031215612ea457600080fd5b6000612eb284828501612d76565b91505092915050565b600060208284031215612ecd57600080fd5b6000612edb84828501612dd5565b91505092915050565b600060208284031215612ef657600080fd5b6000612f0484828501612dea565b91505092915050565b600060208284031215612f1f57600080fd5b6000612f2d84828501612dff565b91505092915050565b600060208284031215612f4857600080fd5b600082013567ffffffffffffffff811115612f6257600080fd5b612f6e84828501612e14565b91505092915050565b600060208284031215612f8957600080fd5b600082015167ffffffffffffffff811115612fa357600080fd5b612faf84828501612e3e565b91505092915050565b600060208284031215612fca57600080fd5b6000612fd884828501612e68565b91505092915050565b600060208284031215612ff357600080fd5b600061300184828501612e7d565b91505092915050565b6000806000806060858703121561302057600080fd5b600061302e87828801612e68565b945050602085013567ffffffffffffffff81111561304b57600080fd5b61305787828801612d8b565b9350935050604085013567ffffffffffffffff81111561307657600080fd5b61308287828801612e14565b91505092959194509250565b600080604083850312156130a157600080fd5b60006130af85828601612e68565b925050602083013567ffffffffffffffff8111156130cc57600080fd5b6130d885828601612e14565b9150509250929050565b60006130ee83836130fa565b60208301905092915050565b61310381613b3f565b82525050565b61311281613b3f565b82525050565b61312961312482613b3f565b613ca5565b82525050565b600061313a82613a0e565b6131448185613a31565b935061314f836139e9565b8060005b8381101561318057815161316788826130e2565b975061317283613a24565b925050600181019050613153565b5085935050505092915050565b61319681613b51565b82525050565b6131a581613b5d565b82525050565b60006131b682613a19565b6131c08185613a42565b93506131d0818560208601613bc6565b6131d981613d85565b840191505092915050565b60006131ef82613a19565b6131f98185613a53565b9350613209818560208601613bc6565b80840191505092915050565b6000815461322281613bf9565b61322c8186613a53565b9450600182166000811461324757600181146132585761328b565b60ff1983168652818601935061328b565b613261856139f9565b60005b8381101561328357815481890152600182019150602081019050613264565b838801955050505b50505092915050565b60006132a1601083613a42565b91506132ac82613da3565b602082019050919050565b60006132c4602683613a42565b91506132cf82613dcc565b604082019050919050565b60006132e7602083613a42565b91506132f282613e1b565b602082019050919050565b600061330a603883613a42565b915061331582613e44565b604082019050919050565b600061332d601f83613a42565b915061333882613e93565b602082019050919050565b6000613350601e83613a42565b915061335b82613ebc565b602082019050919050565b6000613373601e83613a42565b915061337e82613ee5565b602082019050919050565b6000613396603083613a42565b91506133a182613f0e565b604082019050919050565b60006133b9603483613a42565b91506133c482613f5d565b604082019050919050565b60006133dc601b83613a42565b91506133e782613fac565b602082019050919050565b60006133ff601d83613a42565b915061340a82613fd5565b602082019050919050565b6000613422602083613a42565b915061342d82613ffe565b602082019050919050565b6000613445601383613a42565b915061345082614027565b602082019050919050565b6000613468601983613a42565b915061347382614050565b602082019050919050565b600061348b601083613a42565b915061349682614079565b602082019050919050565b60006134ae601883613a42565b91506134b9826140a2565b602082019050919050565b60006134d1601983613a42565b91506134dc826140cb565b602082019050919050565b60006134f4601883613a42565b91506134ff826140f4565b602082019050919050565b6000613517601f83613a42565b91506135228261411d565b602082019050919050565b600061353a601783613a42565b915061354582614146565b602082019050919050565b600061355d600483613a53565b91506135688261416f565b600482019050919050565b61357c81613b99565b82525050565b61358b81613ba3565b82525050565b600061359d8284613118565b60148201915081905092915050565b60006135b882846131e4565b915081905092915050565b60006135cf8284613215565b915081905092915050565b60006135e582613550565b9150819050919050565b60006020820190506136046000830184613109565b92915050565b600060408201905061361f6000830185613109565b818103602083015261363181846131ab565b90509392505050565b600060408201905061364f6000830185613109565b61365c6020830184613573565b9392505050565b6000602082019050818103600083015261367d818461312f565b905092915050565b600060208201905061369a600083018461318d565b92915050565b60006020820190506136b5600083018461319c565b92915050565b600060208201905081810360008301526136d581846131ab565b905092915050565b600060208201905081810360008301526136f681613294565b9050919050565b60006020820190508181036000830152613716816132b7565b9050919050565b60006020820190508181036000830152613736816132da565b9050919050565b60006020820190508181036000830152613756816132fd565b9050919050565b6000602082019050818103600083015261377681613320565b9050919050565b6000602082019050818103600083015261379681613343565b9050919050565b600060208201905081810360008301526137b681613366565b9050919050565b600060208201905081810360008301526137d681613389565b9050919050565b600060208201905081810360008301526137f6816133ac565b9050919050565b60006020820190508181036000830152613816816133cf565b9050919050565b60006020820190508181036000830152613836816133f2565b9050919050565b6000602082019050818103600083015261385681613415565b9050919050565b6000602082019050818103600083015261387681613438565b9050919050565b600060208201905081810360008301526138968161345b565b9050919050565b600060208201905081810360008301526138b68161347e565b9050919050565b600060208201905081810360008301526138d6816134a1565b9050919050565b600060208201905081810360008301526138f6816134c4565b9050919050565b60006020820190508181036000830152613916816134e7565b9050919050565b600060208201905081810360008301526139368161350a565b9050919050565b600060208201905081810360008301526139568161352d565b9050919050565b60006020820190506139726000830184613573565b92915050565b600060208201905061398d6000830184613582565b92915050565b600061399d6139ae565b90506139a98282613c2b565b919050565b6000604051905090565b600067ffffffffffffffff8211156139d3576139d2613d56565b5b6139dc82613d85565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a6982613b99565b9150613a7483613b99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aa957613aa8613cc9565b5b828201905092915050565b6000613abf82613b99565b9150613aca83613b99565b925082613ada57613ad9613cf8565b5b828204905092915050565b6000613af082613b99565b9150613afb83613b99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3457613b33613cc9565b5b828202905092915050565b6000613b4a82613b79565b9050919050565b60008115159050919050565b6000819050919050565b6000613b7282613b3f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015613be4578082015181840152602081019050613bc9565b83811115613bf3576000848401525b50505050565b60006002820490506001821680613c1157607f821691505b60208210811415613c2557613c24613d27565b5b50919050565b613c3482613d85565b810181811067ffffffffffffffff82111715613c5357613c52613d56565b5b80604052505050565b6000613c6782613b99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c9a57613c99613cc9565b5b600182019050919050565b6000613cb082613cb7565b9050919050565b6000613cc282613d96565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820746f6b656e73600082015250565b7f54686973206164647265737320616c726561647920686173206e616d65204f5260008201527f206e616d6520796f7520656e74657220697320656d7074790000000000000000602082015250565b7f726566526577617264207769746864726177206d757374206265207472756500600082015250565b7f526566206e616d652063616e206e6f7420696e636c7564652073706163650000600082015250565b7f4164647265737320646f6573206e6f7420657869737420696e206c6973740000600082015250565b7f507572636861736520776f756c6420657863656564206d61782077686974656c60008201527f69737420726f756e6420746f6b656e7300000000000000000000000000000000602082015250565b7f4e465420697320616c726561647920657863656564206d6178206d696e74206160008201527f6d6f756e7420627920746869732077616c6c6574000000000000000000000000602082015250565b7f7265665265776172645769746864726177206973206c6f636b65640000000000600082015250565b7f4f7574736964652077686974656c69737420726f756e6420686f757273000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6e6f742077697468647261774164647265737300000000000000000000000000600082015250565b7f54686973206e616d6520646f6573206e6f742065786973747300000000000000600082015250565b7f496e76616c696420526566204e616d6500000000000000000000000000000000600082015250565b7f54686973206e616d6520616c7265616479206578697374730000000000000000600082015250565b7f4f757473696465207075626c69632073616c6520686f75727300000000000000600082015250565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f526566206e616d6520646f6573206e6f74206578697374000000000000000000600082015250565b7f6e6f6e6500000000000000000000000000000000000000000000000000000000600082015250565b6141a181613b3f565b81146141ac57600080fd5b50565b6141b881613b51565b81146141c357600080fd5b50565b6141cf81613b5d565b81146141da57600080fd5b50565b6141e681613b67565b81146141f157600080fd5b50565b6141fd81613b99565b811461420857600080fd5b5056fea2646970667358221220a9c18a230991509bb564a0dc091476057f199c0297621af1eefc8e303ace425064736f6c63430008040033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.