Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 29 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint By Pass NFT | 17079077 | 564 days ago | IN | 0 ETH | 0.0041864 | ||||
Mint By Pass NFT | 15778615 | 746 days ago | IN | 0 ETH | 0.00127264 | ||||
Mint By Pass NFT | 15628774 | 767 days ago | IN | 0 ETH | 0.00115743 | ||||
Mint By Pass NFT | 15305797 | 817 days ago | IN | 0 ETH | 0.00076669 | ||||
Mint By Pass NFT | 15266262 | 823 days ago | IN | 0 ETH | 0.00116867 | ||||
Mint By Pass NFT | 15238535 | 827 days ago | IN | 0 ETH | 0.00347541 | ||||
Mint By Pass NFT | 15122038 | 845 days ago | IN | 0 ETH | 0.00172592 | ||||
Mint By Pass NFT | 15122031 | 845 days ago | IN | 0 ETH | 0.00165209 | ||||
Mint By Pass NFT | 15122022 | 845 days ago | IN | 0 ETH | 0.00249019 | ||||
Mint By Pass NFT | 15122013 | 845 days ago | IN | 0 ETH | 0.00211974 | ||||
Mint By Pass NFT | 15121993 | 845 days ago | IN | 0 ETH | 0.00184987 | ||||
Mint By Pass NFT | 15121983 | 845 days ago | IN | 0 ETH | 0.0019813 | ||||
Mint By Pass NFT | 15121980 | 845 days ago | IN | 0 ETH | 0.00194082 | ||||
Mint By Pass NFT | 15121974 | 845 days ago | IN | 0 ETH | 0.00173292 | ||||
Mint By Pass NFT | 15120965 | 846 days ago | IN | 0 ETH | 0.00177387 | ||||
Mint By Pass NFT | 15120962 | 846 days ago | IN | 0 ETH | 0.001518 | ||||
Mint By Pass NFT | 15120958 | 846 days ago | IN | 0 ETH | 0.00115592 | ||||
Mint By Pass NFT | 15120954 | 846 days ago | IN | 0 ETH | 0.0007929 | ||||
Mint By Pass NFT | 15109350 | 847 days ago | IN | 0 ETH | 0.00130632 | ||||
Mint By Pass NFT | 15109340 | 847 days ago | IN | 0 ETH | 0.00156356 | ||||
Mint By Pass NFT | 15109332 | 847 days ago | IN | 0 ETH | 0.00109862 | ||||
Mint By Pass NFT | 15109315 | 847 days ago | IN | 0 ETH | 0.00245083 | ||||
Mint By Pass NFT | 15015805 | 863 days ago | IN | 0 ETH | 0.00341898 | ||||
Mint By Pass NFT | 15006306 | 865 days ago | IN | 0 ETH | 0.00275283 | ||||
Mint By Pass NFT | 15006304 | 865 days ago | IN | 0 ETH | 0.00277118 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ForTube3Token
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // ForTube2.0 Contracts v1.2 pragma solidity ^0.8.1; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "./access/Ownable.sol"; import "./IForTube3Token.sol"; contract ForTube3Token is ERC20, IForTube3Token, Ownable { address private _promoterPass; uint256 private _maxSupply; uint256 private _passSupplyPerBlock; uint256 private _padSupply; uint256 private _teamSupply; uint256 private _allocatedToTeam; uint256 private _allocatedToPromoterPass; uint256 private _allocatedToPad; mapping(uint256 => uint256) private _minedAmounts; mapping(uint256 => uint256) private _miningAmounts; mapping(uint256 => uint256) private _miningStartBlocks; uint256 private _miningAmountForNormal; uint256 private _miningAmountForLimited; uint256 private _maxLimitedTokenId; uint256 private _stakingStartBlock; uint256 private _stakingBreakBlock; constructor() ERC20("ForTube3.0 Token","FOT") { _miningAmountForNormal = 0.002 ether; _miningAmountForLimited = _miningAmountForNormal * 2; _maxSupply = 1000000000 ether; _allocatedToTeam = _maxSupply / 10; _allocatedToPromoterPass = _maxSupply * 3 / 10; _allocatedToPad = _maxSupply - _allocatedToTeam - _allocatedToPromoterPass; _maxLimitedTokenId = 1000; } function mintByPassNFT(uint256 tokenId) public { require(IERC721(_promoterPass).ownerOf(tokenId) == msg.sender, "FOT : caller is not owner"); require(_stakingStartBlock != 0 && _stakingStartBlock <= block.number, "FOT : staking is paused"); require(_stakingBreakBlock != 0 && _miningStartBlocks[tokenId] <= _stakingBreakBlock , "FOT : staking was finished"); _mintByPromoterPass(msg.sender, tokenId); } function mintByTransferring(uint256 tokenId) public override onlyPromoterPass { if( _stakingBreakBlock != 0 && _miningStartBlocks[tokenId] <= _stakingBreakBlock ){ address owner = IERC721(_promoterPass).ownerOf(tokenId); require(owner != address(0), "FOT : owner is invalid"); _mintByPromoterPass(owner, tokenId); } } function _mintByPromoterPass(address to, uint256 tokenId) private { require( _miningStartBlocks[tokenId] != 0 && _miningStartBlocks[tokenId] < block.number, "FOT : invalid blocknumber"); require( _miningAmounts[tokenId] == _miningAmountForNormal || _miningAmounts[tokenId] == _miningAmountForLimited, "FOT : invalid amount"); uint256 minedAmount = _calMiningAmounts(tokenId); if(minedAmount != 0){ _mint(to, minedAmount ); _miningStartBlocks[tokenId] = block.number + 1; _minedAmounts[tokenId] += minedAmount; emit MiningLog( tokenId, to, _miningAmounts[tokenId], _minedAmounts[tokenId], _miningStartBlocks[tokenId]); } } function addMining(uint256 tokenId, address owner) public override onlyPromoterPass { if(tokenId == 1){ _stakingBreakBlock = block.number + _allocatedToPromoterPass / (_miningAmountForNormal * _maxLimitedTokenId * 9 + _miningAmountForLimited * _maxLimitedTokenId) + 1; } if(_stakingBreakBlock >= block.number){ if(tokenId <= _maxLimitedTokenId){ _miningAmounts[tokenId] = _miningAmountForLimited; }else{ _miningAmounts[tokenId] = _miningAmountForNormal; } _passSupplyPerBlock += _miningAmounts[tokenId]; } _miningStartBlocks[tokenId] = block.number; emit MiningLog( tokenId, owner, _miningAmounts[tokenId], 0, _miningStartBlocks[tokenId]); } function mintByTeam(uint256 value) public onlyOwners { require( _allocatedToTeam >= _teamSupply + value, "FOT : exceeded max supply for TEAM" ); _mint(owners(0), value ); _teamSupply += value; } function mintByPad(address[] memory owners, uint256[] memory amounts) public override onlyOwners { require( owners.length == amounts.length, "FOT : array size mismatch" ); for (uint256 i = 0; i < owners.length; i++) { require( _allocatedToPad >= _padSupply + amounts[i], "FOT : exceeded max supply for PAD" ); _padSupply += amounts[i]; _mint(owners[i], amounts[i]); } } function setStakingStartBlockNumber(uint256 blockNumber) public onlyOwners { _stakingStartBlock = blockNumber; } function setStakingBreakBlockNumber(uint256 blockNumber) public onlyOwners { _stakingBreakBlock = blockNumber; } function setPromoterPass(address newContract) public onlyOwner { _promoterPass = newContract; } function passSupplyPerBlock() public view returns (uint256) { return _passSupplyPerBlock; } function padSupply() public view returns (uint256) { return _padSupply; } function teamSupply() public view returns (uint256) { return _teamSupply; } function _calMiningAmounts(uint256 tokenId) private view returns (uint256) { if( _miningStartBlocks[tokenId] > _stakingBreakBlock ){ return 0; } if( _stakingBreakBlock <= block.number ){ return _miningAmounts[tokenId] * (_stakingBreakBlock - _miningStartBlocks[tokenId] + 1); } return _miningAmounts[tokenId] * (block.number - _miningStartBlocks[tokenId] + 1); } function miningInfo(uint256 tokenId) public view returns (uint256, uint256, uint256, uint256) { return (_miningAmounts[tokenId], _miningStartBlocks[tokenId], _calMiningAmounts(tokenId), _minedAmounts[tokenId]); } function stakingStartBlockNumber() public view returns (uint256){ return _stakingStartBlock; } function stakingBreakBlock() public view returns (uint256){ return _stakingBreakBlock; } function promoterPass() public view returns (address){ return _promoterPass; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); if(from == address(0)){ require( _maxSupply >= totalSupply() + amount , "FOT : exceeded max supply" ); } } modifier onlyPromoterPass() { require(_promoterPass == msg.sender, "FOT : caller is not offical contract"); _; } }
// SPDX-License-Identifier: MIT // ForTube2.0 Contracts v1.2 pragma solidity ^0.8.1; interface IForTube3Token { event MiningLog(uint256 indexed tokenId, address to, uint256 miningAmount, uint256 minedAmount, uint256 updatedBlock); function mintByTransferring(uint256 tokenId) external; function addMining(uint256 tokenId, address from) external; function mintByPad(address[] memory owners, uint256[] memory amounts) external; }
// SPDX-License-Identifier: MIT // ForTube2.0 Contracts v1.2 pragma solidity ^0.8.1; abstract contract Ownable { uint256 private _maxOwner; uint256 private _numOfOwners; mapping(uint256 => address) private _owners; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(0, msg.sender); _maxOwner = 4; } function owners(uint256 index) public view virtual returns (address) { require(_owners[index] != address(0) && index < _maxOwner, "Ownable: invaild index"); return _owners[index]; } function transferOwnership(uint256 index, address newOwner) public virtual onlyOwner { require( index < _maxOwner, "Ownable: invaild index" ); _transferOwnership(index, newOwner); } function _transferOwnership(uint256 index, address newOwner) internal virtual { address oldOwner = _owners[index]; _owners[index] = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function _transferToOfficalWallet(uint256 value) internal virtual { require(payable(_owners[0]).send(value)); } modifier onlyOwner() { require(_owners[0] == msg.sender, "Ownable: caller is not the owner"); _; } modifier onlyOwners() { require( msg.sender != address(0) && ( _owners[0] == msg.sender || _owners[1] == msg.sender || _owners[2] == msg.sender || _owners[3] == msg.sender ) , "Ownable: caller is not the owner"); _; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT // 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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"miningAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedBlock","type":"uint256"}],"name":"MiningLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"addMining","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"miningInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"mintByPad","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mintByPassNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mintByTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mintByTransferring","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"padSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"passSupplyPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"promoterPass","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"setPromoterPass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"setStakingBreakBlockNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"setStakingStartBlockNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingBreakBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingStartBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280601081526020017f466f7254756265332e3020546f6b656e000000000000000000000000000000008152506040518060400160405280600381526020017f464f54000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000260565b508060049080519060200190620000af92919062000260565b505050620000c56000336200017760201b60201c565b600460058190555066071afd498d00006013819055506002601354620000ec919062000348565b6014819055506b033b2e3c9fd0803ce8000000600981905550600a60095462000116919062000310565b600d81905550600a60036009546200012f919062000348565b6200013b919062000310565b600e81905550600e54600d54600954620001569190620003a9565b620001629190620003a9565b600f819055506103e8601581905550620004b1565b60006007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816007600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b8280546200026e90620003ee565b90600052602060002090601f016020900481019282620002925760008555620002de565b82601f10620002ad57805160ff1916838001178555620002de565b82800160010185558215620002de579182015b82811115620002dd578251825591602001919060010190620002c0565b5b509050620002ed9190620002f1565b5090565b5b808211156200030c576000816000905550600101620002f2565b5090565b60006200031d82620003e4565b91506200032a83620003e4565b9250826200033d576200033c62000453565b5b828204905092915050565b60006200035582620003e4565b91506200036283620003e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200039e576200039d62000424565b5b828202905092915050565b6000620003b682620003e4565b9150620003c383620003e4565b925082821015620003d957620003d862000424565b5b828203905092915050565b6000819050919050565b600060028204905060018216806200040757607f821691505b602082108114156200041e576200041d62000482565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613ac180620004c16000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806376707413116100f9578063beaf5eb611610097578063dd62ed3e11610071578063dd62ed3e1461051e578063dd89c3851461054e578063f5f791761461056c578063f6f169f214610588576101c4565b8063beaf5eb6146104af578063ca1da21b146104cd578063dbbb3cdd14610500576101c4565b806395d89b41116100d357806395d89b41146104135780639d133b4e14610431578063a457c2d71461044f578063a9059cbb1461047f576101c4565b806376707413146103bd578063897c5747146103d9578063949d3578146103f5576101c4565b80632cfac6ec116101665780635012c47f116101405780635012c47f14610339578063582bb26a146103555780636095c7be1461037157806370a082311461038d576101c4565b80632cfac6ec146102cd578063313ce567146102eb5780633950935114610309576101c4565b806318160ddd116101a257806318160ddd146102475780631c822bf31461026557806323b872dd1461028157806329507f73146102b1576101c4565b8063025e7c27146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de91906129d9565b6105a4565b6040516101f09190612da9565b60405180910390f35b610201610690565b60405161020e9190612e69565b60405180910390f35b610231600480360381019061022c9190612921565b610722565b60405161023e9190612e4e565b60405180910390f35b61024f610745565b60405161025c919061312b565b60405180910390f35b61027f600480360381019061027a9190612834565b61074f565b005b61029b600480360381019061029691906128ce565b610834565b6040516102a89190612e4e565b60405180910390f35b6102cb60048036038101906102c69190612a06565b610863565b005b6102d5610956565b6040516102e2919061312b565b60405180910390f35b6102f3610960565b604051610300919061318b565b60405180910390f35b610323600480360381019061031e9190612921565b610969565b6040516103309190612e4e565b60405180910390f35b610353600480360381019061034e91906129d9565b6109a0565b005b61036f600480360381019061036a9190612961565b610bc2565b005b61038b600480360381019061038691906129d9565b610f1f565b005b6103a760048036038101906103a29190612834565b611141565b6040516103b4919061312b565b60405180910390f35b6103d760048036038101906103d291906129d9565b611189565b005b6103f360048036038101906103ee91906129d9565b611369565b005b6103fd611602565b60405161040a919061312b565b60405180910390f35b61041b61160c565b6040516104289190612e69565b60405180910390f35b61043961169e565b604051610446919061312b565b60405180910390f35b61046960048036038101906104649190612921565b6116a8565b6040516104769190612e4e565b60405180910390f35b61049960048036038101906104949190612921565b61171f565b6040516104a69190612e4e565b60405180910390f35b6104b7611742565b6040516104c4919061312b565b60405180910390f35b6104e760048036038101906104e291906129d9565b61174c565b6040516104f79493929190613146565b60405180910390f35b6105086117a6565b604051610515919061312b565b60405180910390f35b6105386004803603810190610533919061288e565b6117b0565b604051610545919061312b565b60405180910390f35b610556611837565b6040516105639190612da9565b60405180910390f35b61058660048036038101906105819190612a06565b611861565b005b6105a2600480360381019061059d91906129d9565b611a55565b005b60008073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610616575060055482105b610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064c9061310b565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60606003805461069f906133ee565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb906133ee565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b5050505050905090565b60008061072d611c40565b905061073a818585611c48565b600191505092915050565b6000600254905090565b3373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e79061300b565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061083f611c40565b905061084c858285611e13565b610857858585611e9f565b60019150509392505050565b3373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb9061300b565b60405180910390fd5b6005548210610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f9061310b565b60405180910390fd5b6109528282612120565b5050565b6000600c54905090565b60006012905090565b600080610974611c40565b905061099581858561098685896117b0565b610990919061323f565b611c48565b600191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b7957503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610aa457503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b0e57503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b7857503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf9061300b565b60405180910390fd5b8060178190555050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d9b57503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610cc657503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610d3057503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610d9a57503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd19061300b565b60405180910390fd5b8051825114610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590612f6b565b60405180910390fd5b60005b8251811015610f1a57818181518110610e3d57610e3c613527565b5b6020026020010151600b54610e52919061323f565b600f541015610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612eeb565b60405180910390fd5b818181518110610ea957610ea8613527565b5b6020026020010151600b6000828254610ec2919061323f565b92505081905550610f07838281518110610edf57610ede613527565b5b6020026020010151838381518110610efa57610ef9613527565b5b6020026020010151612209565b8080610f1290613451565b915050610e21565b505050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156110f857503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061102357503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061108d57503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806110f757503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e9061300b565b60405180910390fd5b8060168190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016111fb919061312b565b60206040518083038186803b15801561121357600080fd5b505afa158015611227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124b9190612861565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061302b565b60405180910390fd5b6000601654141580156112b657504360165411155b6112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90612fab565b60405180910390fd5b60006017541415801561131d5750601754601260008381526020019081526020016000205411155b61135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390612fcb565b60405180910390fd5b6113663382612369565b50565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561154257503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061146d57503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806114d757503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061154157503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789061300b565b60405180910390fd5b80600c5461158f919061323f565b600d5410156115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca9061306b565b60405180910390fd5b6115e66115e060006105a4565b82612209565b80600c60008282546115f8919061323f565b9250508190555050565b6000600b54905090565b60606004805461161b906133ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611647906133ee565b80156116945780601f1061166957610100808354040283529160200191611694565b820191906000526020600020905b81548152906001019060200180831161167757829003601f168201915b5050505050905090565b6000601654905090565b6000806116b3611c40565b905060006116c182866117b0565b905083811015611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd906130ab565b60405180910390fd5b6117138286868403611c48565b60019250505092915050565b60008061172a611c40565b9050611737818585611e9f565b600191505092915050565b6000601754905090565b600080600080601160008681526020019081526020016000205460126000878152602001908152602001600020546117838761253e565b601060008981526020019081526020016000205493509350935093509193509193565b6000600a54905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612feb565b60405180910390fd5b600182141561195b57600160155460145461190c91906132c6565b600960155460135461191e91906132c6565b61192891906132c6565b611932919061323f565b600e5461193f9190613295565b4361194a919061323f565b611954919061323f565b6017819055505b43601754106119d457601554821161198c5760145460116000848152602001908152602001600020819055506119a7565b60135460116000848152602001908152602001600020819055505b6011600083815260200190815260200160002054600a60008282546119cc919061323f565b925050819055505b436012600084815260200190815260200160002081905550817f50d4d22ce1cd26bc75c440d4aa9699528db57bdd457d5258fc24d5422f4efa6d82601160008681526020019081526020016000205460006012600088815260200190815260200160002054604051611a499493929190612dc4565b60405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc90612feb565b60405180910390fd5b600060175414158015611b0d5750601754601260008381526020019081526020016000205411155b15611c3d576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611b6f919061312b565b60206040518083038186803b158015611b8757600080fd5b505afa158015611b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbf9190612861565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2890612f0b565b60405180910390fd5b611c3b8183612369565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf9061308b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90612eab565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e06919061312b565b60405180910390a3505050565b6000611e1f84846117b0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e995781811015611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290612f2b565b60405180910390fd5b611e988484848403611c48565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f069061304b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690612e8b565b60405180910390fd5b611f8a838383612612565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790612f4b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120a3919061323f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612107919061312b565b60405180910390a361211a8484846126af565b50505050565b60006007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816007600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612270906130cb565b60405180910390fd5b61228560008383612612565b8060026000828254612297919061323f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ec919061323f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612351919061312b565b60405180910390a3612365600083836126af565b5050565b600060126000838152602001908152602001600020541415801561239f5750436012600083815260200190815260200160002054105b6123de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d590612f8b565b60405180910390fd5b6013546011600083815260200190815260200160002054148061241557506014546011600083815260200190815260200160002054145b612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b90612ecb565b60405180910390fd5b600061245f8261253e565b905060008114612539576124738382612209565b600143612480919061323f565b6012600084815260200190815260200160002081905550806010600084815260200190815260200160002060008282546124ba919061323f565b92505081905550817f50d4d22ce1cd26bc75c440d4aa9699528db57bdd457d5258fc24d5422f4efa6d846011600086815260200190815260200160002054601060008781526020019081526020016000205460126000888152602001908152602001600020546040516125309493929190612e09565b60405180910390a25b505050565b600060175460126000848152602001908152602001600020541115612566576000905061260d565b43601754116125c157600160126000848152602001908152602001600020546017546125929190613320565b61259c919061323f565b60116000848152602001908152602001600020546125ba91906132c6565b905061260d565b60016012600084815260200190815260200160002054436125e29190613320565b6125ec919061323f565b601160008481526020019081526020016000205461260a91906132c6565b90505b919050565b61261d8383836126b4565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126aa578061265b610745565b612665919061323f565b60095410156126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a0906130eb565b60405180910390fd5b5b505050565b505050565b505050565b60006126cc6126c7846131cb565b6131a6565b905080838252602082019050828560208602820111156126ef576126ee61358a565b5b60005b8581101561271f57816127058882612799565b8452602084019350602083019250506001810190506126f2565b5050509392505050565b600061273c612737846131f7565b6131a6565b9050808382526020820190508285602086028201111561275f5761275e61358a565b5b60005b8581101561278f5781612775888261281f565b845260208401935060208301925050600181019050612762565b5050509392505050565b6000813590506127a881613a5d565b92915050565b6000815190506127bd81613a5d565b92915050565b600082601f8301126127d8576127d7613585565b5b81356127e88482602086016126b9565b91505092915050565b600082601f83011261280657612805613585565b5b8135612816848260208601612729565b91505092915050565b60008135905061282e81613a74565b92915050565b60006020828403121561284a57612849613594565b5b600061285884828501612799565b91505092915050565b60006020828403121561287757612876613594565b5b6000612885848285016127ae565b91505092915050565b600080604083850312156128a5576128a4613594565b5b60006128b385828601612799565b92505060206128c485828601612799565b9150509250929050565b6000806000606084860312156128e7576128e6613594565b5b60006128f586828701612799565b935050602061290686828701612799565b92505060406129178682870161281f565b9150509250925092565b6000806040838503121561293857612937613594565b5b600061294685828601612799565b92505060206129578582860161281f565b9150509250929050565b6000806040838503121561297857612977613594565b5b600083013567ffffffffffffffff8111156129965761299561358f565b5b6129a2858286016127c3565b925050602083013567ffffffffffffffff8111156129c3576129c261358f565b5b6129cf858286016127f1565b9150509250929050565b6000602082840312156129ef576129ee613594565b5b60006129fd8482850161281f565b91505092915050565b60008060408385031215612a1d57612a1c613594565b5b6000612a2b8582860161281f565b9250506020612a3c85828601612799565b9150509250929050565b612a4f81613354565b82525050565b612a5e81613366565b82525050565b612a6d816133a9565b82525050565b6000612a7e82613223565b612a88818561322e565b9350612a988185602086016133bb565b612aa181613599565b840191505092915050565b6000612ab960238361322e565b9150612ac4826135aa565b604082019050919050565b6000612adc60228361322e565b9150612ae7826135f9565b604082019050919050565b6000612aff60148361322e565b9150612b0a82613648565b602082019050919050565b6000612b2260218361322e565b9150612b2d82613671565b604082019050919050565b6000612b4560168361322e565b9150612b50826136c0565b602082019050919050565b6000612b68601d8361322e565b9150612b73826136e9565b602082019050919050565b6000612b8b60268361322e565b9150612b9682613712565b604082019050919050565b6000612bae60198361322e565b9150612bb982613761565b602082019050919050565b6000612bd160198361322e565b9150612bdc8261378a565b602082019050919050565b6000612bf460178361322e565b9150612bff826137b3565b602082019050919050565b6000612c17601a8361322e565b9150612c22826137dc565b602082019050919050565b6000612c3a60248361322e565b9150612c4582613805565b604082019050919050565b6000612c5d60208361322e565b9150612c6882613854565b602082019050919050565b6000612c8060198361322e565b9150612c8b8261387d565b602082019050919050565b6000612ca360258361322e565b9150612cae826138a6565b604082019050919050565b6000612cc660228361322e565b9150612cd1826138f5565b604082019050919050565b6000612ce960248361322e565b9150612cf482613944565b604082019050919050565b6000612d0c60258361322e565b9150612d1782613993565b604082019050919050565b6000612d2f601f8361322e565b9150612d3a826139e2565b602082019050919050565b6000612d5260198361322e565b9150612d5d82613a0b565b602082019050919050565b6000612d7560168361322e565b9150612d8082613a34565b602082019050919050565b612d9481613392565b82525050565b612da38161339c565b82525050565b6000602082019050612dbe6000830184612a46565b92915050565b6000608082019050612dd96000830187612a46565b612de66020830186612d8b565b612df36040830185612a64565b612e006060830184612d8b565b95945050505050565b6000608082019050612e1e6000830187612a46565b612e2b6020830186612d8b565b612e386040830185612d8b565b612e456060830184612d8b565b95945050505050565b6000602082019050612e636000830184612a55565b92915050565b60006020820190508181036000830152612e838184612a73565b905092915050565b60006020820190508181036000830152612ea481612aac565b9050919050565b60006020820190508181036000830152612ec481612acf565b9050919050565b60006020820190508181036000830152612ee481612af2565b9050919050565b60006020820190508181036000830152612f0481612b15565b9050919050565b60006020820190508181036000830152612f2481612b38565b9050919050565b60006020820190508181036000830152612f4481612b5b565b9050919050565b60006020820190508181036000830152612f6481612b7e565b9050919050565b60006020820190508181036000830152612f8481612ba1565b9050919050565b60006020820190508181036000830152612fa481612bc4565b9050919050565b60006020820190508181036000830152612fc481612be7565b9050919050565b60006020820190508181036000830152612fe481612c0a565b9050919050565b6000602082019050818103600083015261300481612c2d565b9050919050565b6000602082019050818103600083015261302481612c50565b9050919050565b6000602082019050818103600083015261304481612c73565b9050919050565b6000602082019050818103600083015261306481612c96565b9050919050565b6000602082019050818103600083015261308481612cb9565b9050919050565b600060208201905081810360008301526130a481612cdc565b9050919050565b600060208201905081810360008301526130c481612cff565b9050919050565b600060208201905081810360008301526130e481612d22565b9050919050565b6000602082019050818103600083015261310481612d45565b9050919050565b6000602082019050818103600083015261312481612d68565b9050919050565b60006020820190506131406000830184612d8b565b92915050565b600060808201905061315b6000830187612d8b565b6131686020830186612d8b565b6131756040830185612d8b565b6131826060830184612d8b565b95945050505050565b60006020820190506131a06000830184612d9a565b92915050565b60006131b06131c1565b90506131bc8282613420565b919050565b6000604051905090565b600067ffffffffffffffff8211156131e6576131e5613556565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561321257613211613556565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061324a82613392565b915061325583613392565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561328a5761328961349a565b5b828201905092915050565b60006132a082613392565b91506132ab83613392565b9250826132bb576132ba6134c9565b5b828204905092915050565b60006132d182613392565b91506132dc83613392565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133155761331461349a565b5b828202905092915050565b600061332b82613392565b915061333683613392565b9250828210156133495761334861349a565b5b828203905092915050565b600061335f82613372565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133b482613392565b9050919050565b60005b838110156133d95780820151818401526020810190506133be565b838111156133e8576000848401525b50505050565b6000600282049050600182168061340657607f821691505b6020821081141561341a576134196134f8565b5b50919050565b61342982613599565b810181811067ffffffffffffffff8211171561344857613447613556565b5b80604052505050565b600061345c82613392565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561348f5761348e61349a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a20696e76616c696420616d6f756e74000000000000000000000000600082015250565b7f464f54203a206578636565646564206d617820737570706c7920666f7220504160008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a206f776e657220697320696e76616c696400000000000000000000600082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a2061727261792073697a65206d69736d6174636800000000000000600082015250565b7f464f54203a20696e76616c696420626c6f636b6e756d62657200000000000000600082015250565b7f464f54203a207374616b696e6720697320706175736564000000000000000000600082015250565b7f464f54203a207374616b696e67207761732066696e6973686564000000000000600082015250565b7f464f54203a2063616c6c6572206973206e6f74206f66666963616c20636f6e7460008201527f7261637400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f464f54203a2063616c6c6572206973206e6f74206f776e657200000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a206578636565646564206d617820737570706c7920666f7220544560008201527f414d000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f464f54203a206578636565646564206d617820737570706c7900000000000000600082015250565b7f4f776e61626c653a20696e7661696c6420696e64657800000000000000000000600082015250565b613a6681613354565b8114613a7157600080fd5b50565b613a7d81613392565b8114613a8857600080fd5b5056fea26469706673582212207fa52bf8b799a1bbc7a21ab93c767b357afd1be530c86bba79d4d4df6238f77464736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806376707413116100f9578063beaf5eb611610097578063dd62ed3e11610071578063dd62ed3e1461051e578063dd89c3851461054e578063f5f791761461056c578063f6f169f214610588576101c4565b8063beaf5eb6146104af578063ca1da21b146104cd578063dbbb3cdd14610500576101c4565b806395d89b41116100d357806395d89b41146104135780639d133b4e14610431578063a457c2d71461044f578063a9059cbb1461047f576101c4565b806376707413146103bd578063897c5747146103d9578063949d3578146103f5576101c4565b80632cfac6ec116101665780635012c47f116101405780635012c47f14610339578063582bb26a146103555780636095c7be1461037157806370a082311461038d576101c4565b80632cfac6ec146102cd578063313ce567146102eb5780633950935114610309576101c4565b806318160ddd116101a257806318160ddd146102475780631c822bf31461026557806323b872dd1461028157806329507f73146102b1576101c4565b8063025e7c27146101c957806306fdde03146101f9578063095ea7b314610217575b600080fd5b6101e360048036038101906101de91906129d9565b6105a4565b6040516101f09190612da9565b60405180910390f35b610201610690565b60405161020e9190612e69565b60405180910390f35b610231600480360381019061022c9190612921565b610722565b60405161023e9190612e4e565b60405180910390f35b61024f610745565b60405161025c919061312b565b60405180910390f35b61027f600480360381019061027a9190612834565b61074f565b005b61029b600480360381019061029691906128ce565b610834565b6040516102a89190612e4e565b60405180910390f35b6102cb60048036038101906102c69190612a06565b610863565b005b6102d5610956565b6040516102e2919061312b565b60405180910390f35b6102f3610960565b604051610300919061318b565b60405180910390f35b610323600480360381019061031e9190612921565b610969565b6040516103309190612e4e565b60405180910390f35b610353600480360381019061034e91906129d9565b6109a0565b005b61036f600480360381019061036a9190612961565b610bc2565b005b61038b600480360381019061038691906129d9565b610f1f565b005b6103a760048036038101906103a29190612834565b611141565b6040516103b4919061312b565b60405180910390f35b6103d760048036038101906103d291906129d9565b611189565b005b6103f360048036038101906103ee91906129d9565b611369565b005b6103fd611602565b60405161040a919061312b565b60405180910390f35b61041b61160c565b6040516104289190612e69565b60405180910390f35b61043961169e565b604051610446919061312b565b60405180910390f35b61046960048036038101906104649190612921565b6116a8565b6040516104769190612e4e565b60405180910390f35b61049960048036038101906104949190612921565b61171f565b6040516104a69190612e4e565b60405180910390f35b6104b7611742565b6040516104c4919061312b565b60405180910390f35b6104e760048036038101906104e291906129d9565b61174c565b6040516104f79493929190613146565b60405180910390f35b6105086117a6565b604051610515919061312b565b60405180910390f35b6105386004803603810190610533919061288e565b6117b0565b604051610545919061312b565b60405180910390f35b610556611837565b6040516105639190612da9565b60405180910390f35b61058660048036038101906105819190612a06565b611861565b005b6105a2600480360381019061059d91906129d9565b611a55565b005b60008073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610616575060055482105b610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064c9061310b565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60606003805461069f906133ee565b80601f01602080910402602001604051908101604052809291908181526020018280546106cb906133ee565b80156107185780601f106106ed57610100808354040283529160200191610718565b820191906000526020600020905b8154815290600101906020018083116106fb57829003601f168201915b5050505050905090565b60008061072d611c40565b905061073a818585611c48565b600191505092915050565b6000600254905090565b3373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e79061300b565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008061083f611c40565b905061084c858285611e13565b610857858585611e9f565b60019150509392505050565b3373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb9061300b565b60405180910390fd5b6005548210610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f9061310b565b60405180910390fd5b6109528282612120565b5050565b6000600c54905090565b60006012905090565b600080610974611c40565b905061099581858561098685896117b0565b610990919061323f565b611c48565b600191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b7957503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610aa457503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b0e57503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b7857503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf9061300b565b60405180910390fd5b8060178190555050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d9b57503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610cc657503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610d3057503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610d9a57503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd19061300b565b60405180910390fd5b8051825114610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590612f6b565b60405180910390fd5b60005b8251811015610f1a57818181518110610e3d57610e3c613527565b5b6020026020010151600b54610e52919061323f565b600f541015610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612eeb565b60405180910390fd5b818181518110610ea957610ea8613527565b5b6020026020010151600b6000828254610ec2919061323f565b92505081905550610f07838281518110610edf57610ede613527565b5b6020026020010151838381518110610efa57610ef9613527565b5b6020026020010151612209565b8080610f1290613451565b915050610e21565b505050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156110f857503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061102357503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061108d57503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806110f757503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e9061300b565b60405180910390fd5b8060168190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016111fb919061312b565b60206040518083038186803b15801561121357600080fd5b505afa158015611227573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124b9190612861565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061302b565b60405180910390fd5b6000601654141580156112b657504360165411155b6112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90612fab565b60405180910390fd5b60006017541415801561131d5750601754601260008381526020019081526020016000205411155b61135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135390612fcb565b60405180910390fd5b6113663382612369565b50565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561154257503373ffffffffffffffffffffffffffffffffffffffff166007600080815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061146d57503373ffffffffffffffffffffffffffffffffffffffff16600760006001815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b806114d757503373ffffffffffffffffffffffffffffffffffffffff16600760006002815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b8061154157503373ffffffffffffffffffffffffffffffffffffffff16600760006003815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b611581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115789061300b565b60405180910390fd5b80600c5461158f919061323f565b600d5410156115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca9061306b565b60405180910390fd5b6115e66115e060006105a4565b82612209565b80600c60008282546115f8919061323f565b9250508190555050565b6000600b54905090565b60606004805461161b906133ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611647906133ee565b80156116945780601f1061166957610100808354040283529160200191611694565b820191906000526020600020905b81548152906001019060200180831161167757829003601f168201915b5050505050905090565b6000601654905090565b6000806116b3611c40565b905060006116c182866117b0565b905083811015611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd906130ab565b60405180910390fd5b6117138286868403611c48565b60019250505092915050565b60008061172a611c40565b9050611737818585611e9f565b600191505092915050565b6000601754905090565b600080600080601160008681526020019081526020016000205460126000878152602001908152602001600020546117838761253e565b601060008981526020019081526020016000205493509350935093509193509193565b6000600a54905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612feb565b60405180910390fd5b600182141561195b57600160155460145461190c91906132c6565b600960155460135461191e91906132c6565b61192891906132c6565b611932919061323f565b600e5461193f9190613295565b4361194a919061323f565b611954919061323f565b6017819055505b43601754106119d457601554821161198c5760145460116000848152602001908152602001600020819055506119a7565b60135460116000848152602001908152602001600020819055505b6011600083815260200190815260200160002054600a60008282546119cc919061323f565b925050819055505b436012600084815260200190815260200160002081905550817f50d4d22ce1cd26bc75c440d4aa9699528db57bdd457d5258fc24d5422f4efa6d82601160008681526020019081526020016000205460006012600088815260200190815260200160002054604051611a499493929190612dc4565b60405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc90612feb565b60405180910390fd5b600060175414158015611b0d5750601754601260008381526020019081526020016000205411155b15611c3d576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611b6f919061312b565b60206040518083038186803b158015611b8757600080fd5b505afa158015611b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbf9190612861565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2890612f0b565b60405180910390fd5b611c3b8183612369565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf9061308b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90612eab565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e06919061312b565b60405180910390a3505050565b6000611e1f84846117b0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e995781811015611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290612f2b565b60405180910390fd5b611e988484848403611c48565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f069061304b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690612e8b565b60405180910390fd5b611f8a838383612612565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790612f4b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120a3919061323f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612107919061312b565b60405180910390a361211a8484846126af565b50505050565b60006007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816007600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612270906130cb565b60405180910390fd5b61228560008383612612565b8060026000828254612297919061323f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ec919061323f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612351919061312b565b60405180910390a3612365600083836126af565b5050565b600060126000838152602001908152602001600020541415801561239f5750436012600083815260200190815260200160002054105b6123de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d590612f8b565b60405180910390fd5b6013546011600083815260200190815260200160002054148061241557506014546011600083815260200190815260200160002054145b612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b90612ecb565b60405180910390fd5b600061245f8261253e565b905060008114612539576124738382612209565b600143612480919061323f565b6012600084815260200190815260200160002081905550806010600084815260200190815260200160002060008282546124ba919061323f565b92505081905550817f50d4d22ce1cd26bc75c440d4aa9699528db57bdd457d5258fc24d5422f4efa6d846011600086815260200190815260200160002054601060008781526020019081526020016000205460126000888152602001908152602001600020546040516125309493929190612e09565b60405180910390a25b505050565b600060175460126000848152602001908152602001600020541115612566576000905061260d565b43601754116125c157600160126000848152602001908152602001600020546017546125929190613320565b61259c919061323f565b60116000848152602001908152602001600020546125ba91906132c6565b905061260d565b60016012600084815260200190815260200160002054436125e29190613320565b6125ec919061323f565b601160008481526020019081526020016000205461260a91906132c6565b90505b919050565b61261d8383836126b4565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126aa578061265b610745565b612665919061323f565b60095410156126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a0906130eb565b60405180910390fd5b5b505050565b505050565b505050565b60006126cc6126c7846131cb565b6131a6565b905080838252602082019050828560208602820111156126ef576126ee61358a565b5b60005b8581101561271f57816127058882612799565b8452602084019350602083019250506001810190506126f2565b5050509392505050565b600061273c612737846131f7565b6131a6565b9050808382526020820190508285602086028201111561275f5761275e61358a565b5b60005b8581101561278f5781612775888261281f565b845260208401935060208301925050600181019050612762565b5050509392505050565b6000813590506127a881613a5d565b92915050565b6000815190506127bd81613a5d565b92915050565b600082601f8301126127d8576127d7613585565b5b81356127e88482602086016126b9565b91505092915050565b600082601f83011261280657612805613585565b5b8135612816848260208601612729565b91505092915050565b60008135905061282e81613a74565b92915050565b60006020828403121561284a57612849613594565b5b600061285884828501612799565b91505092915050565b60006020828403121561287757612876613594565b5b6000612885848285016127ae565b91505092915050565b600080604083850312156128a5576128a4613594565b5b60006128b385828601612799565b92505060206128c485828601612799565b9150509250929050565b6000806000606084860312156128e7576128e6613594565b5b60006128f586828701612799565b935050602061290686828701612799565b92505060406129178682870161281f565b9150509250925092565b6000806040838503121561293857612937613594565b5b600061294685828601612799565b92505060206129578582860161281f565b9150509250929050565b6000806040838503121561297857612977613594565b5b600083013567ffffffffffffffff8111156129965761299561358f565b5b6129a2858286016127c3565b925050602083013567ffffffffffffffff8111156129c3576129c261358f565b5b6129cf858286016127f1565b9150509250929050565b6000602082840312156129ef576129ee613594565b5b60006129fd8482850161281f565b91505092915050565b60008060408385031215612a1d57612a1c613594565b5b6000612a2b8582860161281f565b9250506020612a3c85828601612799565b9150509250929050565b612a4f81613354565b82525050565b612a5e81613366565b82525050565b612a6d816133a9565b82525050565b6000612a7e82613223565b612a88818561322e565b9350612a988185602086016133bb565b612aa181613599565b840191505092915050565b6000612ab960238361322e565b9150612ac4826135aa565b604082019050919050565b6000612adc60228361322e565b9150612ae7826135f9565b604082019050919050565b6000612aff60148361322e565b9150612b0a82613648565b602082019050919050565b6000612b2260218361322e565b9150612b2d82613671565b604082019050919050565b6000612b4560168361322e565b9150612b50826136c0565b602082019050919050565b6000612b68601d8361322e565b9150612b73826136e9565b602082019050919050565b6000612b8b60268361322e565b9150612b9682613712565b604082019050919050565b6000612bae60198361322e565b9150612bb982613761565b602082019050919050565b6000612bd160198361322e565b9150612bdc8261378a565b602082019050919050565b6000612bf460178361322e565b9150612bff826137b3565b602082019050919050565b6000612c17601a8361322e565b9150612c22826137dc565b602082019050919050565b6000612c3a60248361322e565b9150612c4582613805565b604082019050919050565b6000612c5d60208361322e565b9150612c6882613854565b602082019050919050565b6000612c8060198361322e565b9150612c8b8261387d565b602082019050919050565b6000612ca360258361322e565b9150612cae826138a6565b604082019050919050565b6000612cc660228361322e565b9150612cd1826138f5565b604082019050919050565b6000612ce960248361322e565b9150612cf482613944565b604082019050919050565b6000612d0c60258361322e565b9150612d1782613993565b604082019050919050565b6000612d2f601f8361322e565b9150612d3a826139e2565b602082019050919050565b6000612d5260198361322e565b9150612d5d82613a0b565b602082019050919050565b6000612d7560168361322e565b9150612d8082613a34565b602082019050919050565b612d9481613392565b82525050565b612da38161339c565b82525050565b6000602082019050612dbe6000830184612a46565b92915050565b6000608082019050612dd96000830187612a46565b612de66020830186612d8b565b612df36040830185612a64565b612e006060830184612d8b565b95945050505050565b6000608082019050612e1e6000830187612a46565b612e2b6020830186612d8b565b612e386040830185612d8b565b612e456060830184612d8b565b95945050505050565b6000602082019050612e636000830184612a55565b92915050565b60006020820190508181036000830152612e838184612a73565b905092915050565b60006020820190508181036000830152612ea481612aac565b9050919050565b60006020820190508181036000830152612ec481612acf565b9050919050565b60006020820190508181036000830152612ee481612af2565b9050919050565b60006020820190508181036000830152612f0481612b15565b9050919050565b60006020820190508181036000830152612f2481612b38565b9050919050565b60006020820190508181036000830152612f4481612b5b565b9050919050565b60006020820190508181036000830152612f6481612b7e565b9050919050565b60006020820190508181036000830152612f8481612ba1565b9050919050565b60006020820190508181036000830152612fa481612bc4565b9050919050565b60006020820190508181036000830152612fc481612be7565b9050919050565b60006020820190508181036000830152612fe481612c0a565b9050919050565b6000602082019050818103600083015261300481612c2d565b9050919050565b6000602082019050818103600083015261302481612c50565b9050919050565b6000602082019050818103600083015261304481612c73565b9050919050565b6000602082019050818103600083015261306481612c96565b9050919050565b6000602082019050818103600083015261308481612cb9565b9050919050565b600060208201905081810360008301526130a481612cdc565b9050919050565b600060208201905081810360008301526130c481612cff565b9050919050565b600060208201905081810360008301526130e481612d22565b9050919050565b6000602082019050818103600083015261310481612d45565b9050919050565b6000602082019050818103600083015261312481612d68565b9050919050565b60006020820190506131406000830184612d8b565b92915050565b600060808201905061315b6000830187612d8b565b6131686020830186612d8b565b6131756040830185612d8b565b6131826060830184612d8b565b95945050505050565b60006020820190506131a06000830184612d9a565b92915050565b60006131b06131c1565b90506131bc8282613420565b919050565b6000604051905090565b600067ffffffffffffffff8211156131e6576131e5613556565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561321257613211613556565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061324a82613392565b915061325583613392565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561328a5761328961349a565b5b828201905092915050565b60006132a082613392565b91506132ab83613392565b9250826132bb576132ba6134c9565b5b828204905092915050565b60006132d182613392565b91506132dc83613392565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133155761331461349a565b5b828202905092915050565b600061332b82613392565b915061333683613392565b9250828210156133495761334861349a565b5b828203905092915050565b600061335f82613372565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133b482613392565b9050919050565b60005b838110156133d95780820151818401526020810190506133be565b838111156133e8576000848401525b50505050565b6000600282049050600182168061340657607f821691505b6020821081141561341a576134196134f8565b5b50919050565b61342982613599565b810181811067ffffffffffffffff8211171561344857613447613556565b5b80604052505050565b600061345c82613392565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561348f5761348e61349a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a20696e76616c696420616d6f756e74000000000000000000000000600082015250565b7f464f54203a206578636565646564206d617820737570706c7920666f7220504160008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a206f776e657220697320696e76616c696400000000000000000000600082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a2061727261792073697a65206d69736d6174636800000000000000600082015250565b7f464f54203a20696e76616c696420626c6f636b6e756d62657200000000000000600082015250565b7f464f54203a207374616b696e6720697320706175736564000000000000000000600082015250565b7f464f54203a207374616b696e67207761732066696e6973686564000000000000600082015250565b7f464f54203a2063616c6c6572206973206e6f74206f66666963616c20636f6e7460008201527f7261637400000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f464f54203a2063616c6c6572206973206e6f74206f776e657200000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f464f54203a206578636565646564206d617820737570706c7920666f7220544560008201527f414d000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f464f54203a206578636565646564206d617820737570706c7900000000000000600082015250565b7f4f776e61626c653a20696e7661696c6420696e64657800000000000000000000600082015250565b613a6681613354565b8114613a7157600080fd5b50565b613a7d81613392565b8114613a8857600080fd5b5056fea26469706673582212207fa52bf8b799a1bbc7a21ab93c767b357afd1be530c86bba79d4d4df6238f77464736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.