Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x97e3b1d40e034a9d27021257d2c49d1a5671c462822c88970955fc0379fcd658 | 39812093 | 95 days 33 mins ago | 0xdc128de2547d2a255f59d8639a15736f0c4f9496 | Contract Creation | 0 MATIC |
[ Download CSV Export ]
Contract Name:
EARN
Compiler Version
v0.8.14+commit.80d49f37
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: MIT pragma solidity ^0.8.14; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol"; import "./DividendDistributor.sol"; contract EARN is IERC20, Ownable { address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; address public REWARD = 0xdAb529f40E671A1D4bF91361c21bf9f0C9712ab7; // BUSD string constant _name = "EverEarn POLY"; string constant _symbol = "$EARNPOLY"; uint8 constant _decimals = 18; uint256 _totalSupply = 100000000000 * (10**_decimals); // One hundred billions mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isDividendExempt; mapping(address => bool) public isBlacklisted; mapping(address => bool) public isMaxBuyLimitExcluded; mapping(address => bool) public isMaxSellLimitExcluded; mapping(address => bool) public isAuthorized; address public marketingWallet; address public buyBackWallet; address public lpReceiver; // Fees uint256 public rewardFee = 11; uint256 public buyLiquidityFee = 1; uint256 public buyBuyBackFee = 1; uint256 public buyMarketingFee = 2; uint256 public buyTotalFee = 15; uint256 public sellLiquidityFee = 1; uint256 public sellBuyBackFee = 1; uint256 public sellMarketingFee = 2; uint256 public sellTotalFee = 15; uint256 public swapLiquidityFee = 1; uint256 public swapBuyBackFee = 1; uint256 public swapMarketingFee = 2; uint256 public swapTotalFee = 15; IUniswapV2Router02 public router; address public pair; DividendDistributor public dividendTracker; uint256 distributorGas = 500000; uint256 public maxSellLimit = 0; uint256 public maxBuyLimit = 0; bool public getTransferFees = true; bool public isSellCoolDownEnabled = true; uint256 public sellCoolDownTime = 15 minutes; uint256 public lastSwapTime; uint256 public swapThreshold = (_totalSupply * 1) / 10000; // 0.001% of supply bool public contractSwapEnabled = true; bool public isTradeEnabled = false; bool inContractSwap; modifier swapping() { inContractSwap = true; _; inContractSwap = false; } event SetIsDividendExempt(address holder, bool status); event SetIsFeeExempt(address holder, bool status); event AddAuthorizedWallet(address holder, bool status); event SetDoContractSwap(bool status); event DoContractSwap(uint256 amount, uint256 time); event ChangeDistributionCriteria( uint256 minPeriod, uint256 minDistribution ); event AutoLiquify(uint256 amountBNB, uint256 amountBOG); constructor() { router = IUniswapV2Router02(0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff); pair = IUniswapV2Factory(router.factory()).createPair( router.WETH(), address(this) ); _allowances[address(this)][address(router)] = type(uint256).max; dividendTracker = new DividendDistributor(REWARD); marketingWallet = 0x7CB3B3B61a8BDd74ef2368fa1068A4D930808D9d; buyBackWallet = 0x7CB3B3B61a8BDd74ef2368fa1068A4D930808D9d; lpReceiver = 0x7CB3B3B61a8BDd74ef2368fa1068A4D930808D9d; address deployer = 0x7CB3B3B61a8BDd74ef2368fa1068A4D930808D9d; isFeeExempt[deployer] = true; isFeeExempt[address(this)] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[buyBackWallet] = true; isFeeExempt[lpReceiver] = true; isDividendExempt[deployer] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[ZERO] = true; isDividendExempt[DEAD] = true; isDividendExempt[lpReceiver] = true; isDividendExempt[buyBackWallet] = true; isDividendExempt[marketingWallet] = true; isAuthorized[deployer] = true; isAuthorized[pair] = true; isAuthorized[address(this)] = true; isAuthorized[ZERO] = true; isAuthorized[DEAD] = true; isAuthorized[lpReceiver] = true; isAuthorized[buyBackWallet] = true; isAuthorized[marketingWallet] = true; isMaxBuyLimitExcluded[deployer] = true; isMaxSellLimitExcluded[deployer] = true; _balances[deployer] = _totalSupply; emit Transfer(address(0), deployer, _totalSupply); } receive() external payable {} function totalSupply() external view override returns (uint256) { return _totalSupply; } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function getHolderDetails(address holder) public view returns ( uint256, uint256, uint256, uint256 ) { return dividendTracker.getHolderDetails(holder); } function getLastProcessedIndex() public view returns (uint256) { return dividendTracker.getLastProcessedIndex(); } function getNumberOfTokenHolders() public view returns (uint256) { return dividendTracker.getNumberOfTokenHolders(); } function totalDistributedRewards() public view returns (uint256) { return dividendTracker.totalDistributedRewards(); } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } 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); } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { require( _allowances[sender][msg.sender] >= amount, "Insufficient Allowance" ); _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require( !isBlacklisted[sender] && !isBlacklisted[recipient], "Blacklisted users" ); if (!isTradeEnabled) require(isAuthorized[sender], "Trading disabled"); if (inContractSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldDoContractSwap()) { doContractSwap(); } { if ( sender == pair && !isMaxBuyLimitExcluded[recipient] && maxBuyLimit != 0 ) require(amount <= maxBuyLimit, "Max buy limit exceeded"); if ( recipient == pair && !isMaxSellLimitExcluded[sender] && maxSellLimit != 0 ) require(amount <= maxSellLimit, "Max sell limit exceeded"); } require(_balances[sender] >= amount, "Insufficient Balance"); _balances[sender] = _balances[sender] - amount; uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient] + amountReceived; if (!isDividendExempt[sender]) { try dividendTracker.setShare(sender, _balances[sender]) {} catch {} } if (!isDividendExempt[recipient]) { try dividendTracker.setShare(recipient, _balances[recipient]) {} catch {} } try dividendTracker.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { uint256 feeToken; if (recipient == pair) feeToken = (amount * sellTotalFee) / 100; else feeToken = (amount * buyTotalFee) / 100; _balances[address(this)] = _balances[address(this)] + feeToken; emit Transfer(sender, address(this), feeToken); return (amount - feeToken); } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { require(_balances[sender] >= amount, "Insufficient Balance"); _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender, address to) internal view returns (bool) { if (!getTransferFees) { if (sender != pair || to != pair) return false; } if (isFeeExempt[sender] || isFeeExempt[to]) { return false; } else { return true; } } function shouldDoContractSwap() internal view returns (bool) { return (msg.sender != pair && !inContractSwap && contractSwapEnabled && (lastSwapTime + sellCoolDownTime) <= block.timestamp && _balances[address(this)] >= swapThreshold); } // Claim manually function ___claimRewards(bool tryAll) public { dividendTracker.claimDividend(); if (tryAll) { try dividendTracker.process(distributorGas) {} catch {} } } // Clear the queue manually function claimProcess() public { try dividendTracker.process(distributorGas) {} catch {} } function isRewardExcluded(address _wallet) public view returns (bool) { return isDividendExempt[_wallet]; } function isFeeExcluded(address _wallet) public view returns (bool) { return isFeeExempt[_wallet]; } function doContractSwap() internal swapping { uint256 contractTokenBalance = _balances[address(this)]; uint256 tokensToLp = (contractTokenBalance * swapLiquidityFee) / swapTotalFee; uint256 tokensToReward = (contractTokenBalance * rewardFee) / swapTotalFee; uint256 buyBackAndMarketingFee = swapBuyBackFee + swapMarketingFee; uint256 tokensToSwap = contractTokenBalance - tokensToLp - tokensToReward; if (tokensToReward > 0) { swapTokensForTokens(tokensToReward, REWARD); uint256 swappedRewardTokens = IERC20(REWARD).balanceOf( address(this) ); IERC20(REWARD).transfer( address(dividendTracker), swappedRewardTokens ); try dividendTracker.deposit(swappedRewardTokens) {} catch {} } if (tokensToSwap > 0 && buyBackAndMarketingFee > 0) { swapTokensForEth(tokensToSwap); uint256 swappedTokens = address(this).balance; uint256 tokensForMarketing = (swappedTokens * swapMarketingFee) / buyBackAndMarketingFee; uint256 tokensForBuyBack = swappedTokens - tokensForMarketing; if (tokensForMarketing > 0) payable(marketingWallet).transfer(tokensForMarketing); if (tokensForBuyBack > 0) payable(buyBackWallet).transfer(tokensForBuyBack); } if (tokensToLp > 0) swapAndLiquify(tokensToLp); lastSwapTime = block.timestamp; } // All tax wallets receive BUSD instead of BNB function swapTokensForTokens(uint256 tokenAmount, address tokenToSwap) private { address[] memory path = new address[](3); path[0] = address(this); path[1] = router.WETH(); path[2] = tokenToSwap; _approve(address(this), address(router), tokenAmount); router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of tokens path, address(this), block.timestamp ); } function swapAndLiquify(uint256 tokens) private { // split the contract balance into halves uint256 half = tokens / 2; uint256 otherHalf = tokens - half; // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance - initialBalance; // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit AutoLiquify(newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable lpReceiver, block.timestamp ); } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { require( holder != address(this) && holder != pair, "can not add pair and token address as share holder" ); isDividendExempt[holder] = exempt; if (exempt) { dividendTracker.setShare(holder, 0); } else { dividendTracker.setShare(holder, _balances[holder]); } emit SetIsDividendExempt(holder, exempt); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; emit SetIsFeeExempt(holder, exempt); } function setDoContractSwap(bool _enabled) external onlyOwner { contractSwapEnabled = _enabled; emit SetDoContractSwap(_enabled); } function blackListWallets(address _wallet, bool _status) external onlyOwner { isBlacklisted[_wallet] = _status; } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external onlyOwner { dividendTracker.setDistributionCriteria(_minPeriod, _minDistribution); emit ChangeDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external onlyOwner { require(gas < 750000); distributorGas = gas; } function changeMarketingWallet(address _wallet) external onlyOwner { marketingWallet = _wallet; } function changeBuyBackWallet(address _wallet) external onlyOwner { buyBackWallet = _wallet; } function changeLPWallet(address _wallet) external onlyOwner { lpReceiver = _wallet; } function changeBuyFees( uint256 _liquidityFee, uint256 _buyBackFee, uint256 _marketingFee ) external onlyOwner { buyLiquidityFee = _liquidityFee; buyBuyBackFee = _buyBackFee; buyMarketingFee = _marketingFee; buyTotalFee = rewardFee + _liquidityFee + _buyBackFee + _marketingFee; require(buyTotalFee <= 15, "Total fees can not greater than 15%"); } function changeSellFees( uint256 _liquidityFee, uint256 _buyBackFee, uint256 _marketingFee ) external onlyOwner { sellLiquidityFee = _liquidityFee; sellBuyBackFee = _buyBackFee; sellMarketingFee = _marketingFee; sellTotalFee = rewardFee + _liquidityFee + _buyBackFee + _marketingFee; require(sellTotalFee <= 15, "Total fees can not greater than 15%"); } function changeSwapFees( uint256 _liquidityFee, uint256 _buyBackFee, uint256 _marketingFee ) external onlyOwner { swapLiquidityFee = _liquidityFee; swapBuyBackFee = _buyBackFee; swapMarketingFee = _marketingFee; swapTotalFee = rewardFee + _liquidityFee + _buyBackFee + _marketingFee; require(swapTotalFee <= 15, "Total fees can not greater than 15%"); } function setSellCollDown(bool _status, uint256 _coolDownTime) external onlyOwner { isSellCoolDownEnabled = _status; sellCoolDownTime = _coolDownTime; } function changeSellLimit(uint256 _limit) external onlyOwner { if (_limit > 0) require( _limit >= 100 * 10**6 * 10**_decimals, "Limit can not less than 250 million" ); maxSellLimit = _limit; } function changeBuyLimit(uint256 _limit) external onlyOwner { if (_limit > 0) require( _limit >= 100 * 10**6 * 10**_decimals, "Limit can not less than 250 million" ); maxBuyLimit = _limit; } function excludeFromMaxSell(address _wallet, bool _status) external onlyOwner { isMaxSellLimitExcluded[_wallet] = _status; } function excludeFromMaxBuy(address _wallet, bool _status) external onlyOwner { isMaxBuyLimitExcluded[_wallet] = _status; } function enableTrading() external onlyOwner { isTradeEnabled = true; } function setAuthorizedWallets(address _wallet, bool _status) external onlyOwner { isAuthorized[_wallet] = _status; } function rescueEth() external onlyOwner { uint256 balance = address(this).balance; require(balance > 0, "No enough ETH to transfer"); payable(msg.sender).transfer(balance); } function purgeBeforeSwitch() public onlyOwner { dividendTracker.purge(msg.sender); } function depositRewards(uint256 _rewardAmount) external onlyOwner { IERC20(REWARD).transferFrom( msg.sender, address(dividendTracker), _rewardAmount ); try dividendTracker.deposit(_rewardAmount) {} catch {} } function changeGetFeesOnTransfer(bool _status) external onlyOwner { getTransferFees = _status; } function switchToken(address rewardToken) public onlyOwner { require( rewardToken != router.WETH(), "Can not reward Native token in this tracker" ); REWARD = rewardToken; // get current shareholders list dividendTracker = new DividendDistributor(rewardToken); } function changeRouter(address _router) external onlyOwner { router = IUniswapV2Router02(_router); } function changePair(address _pair) external onlyOwner { pair = _pair; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit(uint256 amount) external; function process(uint256 gas) external; function purge(address receiver) external; } contract DividendDistributor is IDividendDistributor { address public _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20 public REWARD; address[] shareholders; mapping(address => uint256) shareholderIndexes; mapping(address => uint256) shareholderClaims; mapping(address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10**36; uint256 public minPeriod = 1 * 60; uint256 public minDistribution = 1 * (10**3); uint256 currentIndex; bool initialized; modifier onlyToken() { require(msg.sender == _token); _; } constructor(address rewardToken) { _token = msg.sender; REWARD = IERC20(rewardToken); } receive() external payable {} function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function purge(address receiver) external override onlyToken { uint256 balance = REWARD.balanceOf(address(this)); REWARD.transfer(receiver, balance); } function setShare(address shareholder, uint256 amount) external override onlyToken { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = (totalShares - (shares[shareholder].amount)) + amount; shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit(uint256 amount) external override onlyToken { totalDividends = totalDividends + amount; dividendsPerShare = dividendsPerShare + ((dividendsPerShareAccuracyFactor * amount) / totalShares); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed + (gasLeft - gasleft()); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed + amount; REWARD.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder].totalRealised + amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends - shareholderTotalExcluded; } function getHolderDetails(address holder) public view returns ( uint256 lastClaim, uint256 unpaidEarning, uint256 totalReward, uint256 holderIndex ) { lastClaim = shareholderClaims[holder]; unpaidEarning = getUnpaidEarnings(holder); totalReward = shares[holder].totalRealised; holderIndex = shareholderIndexes[holder]; } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return (share * dividendsPerShare) / (dividendsPerShareAccuracyFactor); } function getLastProcessedIndex() external view returns (uint256) { return currentIndex; } function getNumberOfTokenHolders() external view returns (uint256) { return shareholders.length; } function getShareHoldersList() external view returns (address[] memory) { return shareholders; } function totalDistributedRewards() external view returns (uint256) { return totalDistributed; } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); delete shareholderIndexes[shareholder]; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// 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); }
// 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; } }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AddAuthorizedWallet","type":"event"},{"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":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minDistribution","type":"uint256"}],"name":"ChangeDistributionCriteria","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"DoContractSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetDoContractSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetIsDividendExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetIsFeeExempt","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":[],"name":"REWARD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"tryAll","type":"bool"}],"name":"___claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blackListWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeBuyBackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"changeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"changeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeGetFeesOnTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"changePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"changeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"changeSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"changeSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyBackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"changeSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardAmount","type":"uint256"}],"name":"depositRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"getHolderDetails","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":[],"name":"getLastProcessedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxBuyLimitExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxSellLimitExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"isRewardExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSellCoolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purgeBeforeSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCoolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAuthorizedWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setDoContractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_coolDownTime","type":"uint256"}],"name":"setSellCollDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBuyBackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"}],"name":"switchToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributedRewards","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b031990811661dead1790915560028054821690556003805490911673dab529f40e671a1d4bf91361c21bf9f0c9712ab7179055620000506012600a62000769565b620000619064174876e80062000781565b6004819055600b60105560016011819055601281905560026013819055600f601481905560158390556016839055601782905560188190556019839055601a839055601b91909155601c556207a120602055600060218190556022556023805461ffff191661010117905561038460245561271091620000e19162000781565b620000ed9190620007a3565b6026556027805461ffff191660011790553480156200010b57600080fd5b506200011733620005f6565b601d80546001600160a01b03191673a5e0829caced8ffdd4de3c43696c57f7d7a678ff9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200017c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a29190620007c6565b6001600160a01b031663c9c65396601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a9190620007c6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d9190620007c6565b601e80546001600160a01b0319166001600160a01b03928316179055306000908152600660209081526040808320601d54851684529091529081902060001990556003549051911690620002f19062000646565b6001600160a01b039091168152602001604051809103906000f0801580156200031e573d6000803e3d6000fd5b50601f80546001600160a01b03199081166001600160a01b0393841617909155600d8054737cb3b3b61a8bdd74ef2368fa1068a4d930808d9d90831681178255600e8054841682178155600f805490941682178455600760209081527f624aed3a357158959b4447dc40f27a1dde7c599aa1ad9b433df9d7c5fc558687805460ff1990811660019081179092553060008181526040808220805485168617905588548b168252808220805485168617905586548b168252808220805485168617905589548b1682528082208054851686179055600886527f3a0c92c9e1ef6a418f90c0c224ce977c47e2c2408f9241f024ca20e7d38583598054851686179055601e80548c16835281832080548616871790558383528183208054861687179055600280548d168452828420805487168817905586548d16845282842080548716881790558b548d168452828420805487168817905588548d16845282842080548716881790558a548d1684528284208054871688179055600c88527feff4957baae211b21d2622e909867b76cec1fd78b93a7980d0de8d3f34531dce805487168817905590548c1683528183208054861687179055928252808220805485168617905591548a168152818120805484168517905583548a1681528181208054841685179055975489168852808820805483168417905593548816875283872080548216831790559454909616855281852080548516871790558285527fa251dc48e8e322b167b975ac392d6338dae6c4aeb6f005515ee1c8bc3e8e451080548516871790557f573ea433893b16d26c35a9ecff0caafdb4b426f4bd94972f17d21b346c84d1398054909416909517909255600454600585527fd9c4f8d3feddb6aee47bcd10dcd5504ff6b76a970c91edd3ac86c2831925882a8190559151918252928392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620007f1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610eff8062004ec983390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006ab5781600019048211156200068f576200068f62000654565b808516156200069d57918102915b93841c93908002906200066f565b509250929050565b600082620006c45750600162000763565b81620006d35750600062000763565b8160018114620006ec5760028114620006f75762000717565b600191505062000763565b60ff8411156200070b576200070b62000654565b50506001821b62000763565b5060208310610133831016604e8410600b84101617156200073c575081810a62000763565b6200074883836200066a565b80600019048211156200075f576200075f62000654565b0290505b92915050565b60006200077a60ff841683620006b3565b9392505050565b60008160001904831182151516156200079e576200079e62000654565b500290565b600082620007c157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007d957600080fd5b81516001600160a01b03811681146200077a57600080fd5b6146c880620008016000396000f3fe608060405260043610620004ee5760003560e01c80638a8c523c1162000287578063ce31a06b116200015f578063e94668dc11620000d1578063f63743421162000090578063f63743421462000fa7578063f708a64f1462000fbf578063f887ea401462000fe4578063fdb78c0e1462001006578063fe575a871462001022578063fe9fbb80146200105657600080fd5b8063e94668dc1462000f15578063eaaa848b1462000f3a578063f0327afc1462000f52578063f11a24d31462000f6a578063f2fde38b1462000f8257600080fd5b8063d695bb27116200011e578063d695bb271462000e5e578063dd62ed3e1462000e76578063e04192ce1462000ec0578063e53c30b01462000ee5578063e7841ec01462000efd57600080fd5b8063ce31a06b1462000db2578063ce5414941462000dca578063d47b654d1462000def578063d4bc12b41462000e14578063d55923061462000e3957600080fd5b8063a741810611620001f9578063bb85c6d111620001b8578063bb85c6d11462000ce8578063bca238aa1462000d0d578063c1987bac1462000d4a578063cab34c081462000d6b578063cd7b33ab1462000d8d57600080fd5b8063a74181061462000c3f578063a7cfaa521462000c64578063a87df8321462000c89578063a8aa1b311462000ca1578063a9059cbb1462000cc357600080fd5b80638da5cb5b11620002465780638da5cb5b1462000b89578063921369131462000ba957806395d89b411462000bc15780639d1944f51462000bf5578063a3d14e721462000c1a57600080fd5b80638a8c523c1462000aee5780638b4242671462000b065780638bdf67f21462000b1e5780638c52c6c81462000b435780638d38a1271462000b6857600080fd5b80632c256f7d11620003c7578063571ac8b011620003395780636bc8af8411620002f85780636bc8af841462000a2557806370a082311462000a4a578063715018a61462000a8457806375f0a8741462000a9c5780637bce5a041462000abe5780637c9e770e1462000ad657600080fd5b8063571ac8b014620009935780635fe4bea814620009b8578063652e2f0414620009d0578063658d4b7f14620009e85780636aa5b37f1462000a0d57600080fd5b80633705b39211620003865780633705b39214620008ba578063399bec4514620008d25780633f4218e014620009065780634355855a146200093a57806351c7d047146200096e57600080fd5b80632c256f7d14620008085780632d48e896146200082d578063313ce5671462000852578063340ac20f14620008705780633683685a146200089557600080fd5b806318160ddd11620004615780631fe70a9811620004205780631fe70a98146200076c57806323b872dd146200078457806323f4f9f514620007a9578063276a063014620007ce5780632c1f521614620007e657600080fd5b806318160ddd14620006a35780631a221dbb14620006ba5780631cd348c014620006d25780631de5a11f146200070d5780631f0c57fc146200074a57600080fd5b806309bbedde11620004ae57806309bbedde14620005ea5780630a05cd0114620006025780630ce9060714620006485780630dd8715714620006645780630eda7275146200067c57600080fd5b8062afb32514620004fb5780630445b667146200052657806306fdde03146200053e578063072bc7db1462000580578063095ea7b314620005c557600080fd5b36620004f657005b600080fd5b3480156200050857600080fd5b506200051360185481565b6040519081526020015b60405180910390f35b3480156200053357600080fd5b506200051360265481565b3480156200054b57600080fd5b5060408051808201909152600d81526c457665724561726e20504f4c5960981b60208201525b6040516200051d9190620031f8565b3480156200058d57600080fd5b50620005b46200059f36600462003266565b600a6020526000908152604090205460ff1681565b60405190151581526020016200051d565b348015620005d257600080fd5b50620005b4620005e436600462003286565b6200108a565b348015620005f757600080fd5b5062000513620010f8565b3480156200060f57600080fd5b50620006276200062136600462003266565b6200116e565b6040805194855260208501939093529183015260608201526080016200051d565b3480156200065557600080fd5b50602354620005b49060ff1681565b3480156200067157600080fd5b506200051360255481565b3480156200068957600080fd5b50620006a16200069b366004620032b5565b620011f5565b005b348015620006b057600080fd5b5060045462000513565b348015620006c757600080fd5b506200051360165481565b348015620006df57600080fd5b50600e54620006f4906001600160a01b031681565b6040516001600160a01b0390911681526020016200051d565b3480156200071a57600080fd5b50620005b46200072c36600462003266565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156200075757600080fd5b50600f54620006f4906001600160a01b031681565b3480156200077957600080fd5b506200051360125481565b3480156200079157600080fd5b50620005b4620007a3366004620032cf565b62001254565b348015620007b657600080fd5b50620006a1620007c836600462003324565b6200135c565b348015620007db57600080fd5b506200051360195481565b348015620007f357600080fd5b50601f54620006f4906001600160a01b031681565b3480156200081557600080fd5b50620006a16200082736600462003344565b62001379565b3480156200083a57600080fd5b50620006a16200084c36600462003371565b620013eb565b3480156200085f57600080fd5b50604051601281526020016200051d565b3480156200087d57600080fd5b50620006a16200088f36600462003266565b6200149b565b348015620008a257600080fd5b50620006a1620008b436600462003394565b620014c7565b348015620008c757600080fd5b506200051360145481565b348015620008df57600080fd5b50620005b4620008f136600462003266565b600b6020526000908152604090205460ff1681565b3480156200091357600080fd5b50620005b46200092536600462003266565b60076020526000908152604090205460ff1681565b3480156200094757600080fd5b50620005b46200095936600462003266565b60086020526000908152604090205460ff1681565b3480156200097b57600080fd5b50620006a16200098d366004620033d2565b620014fc565b348015620009a057600080fd5b50620005b4620009b236600462003266565b62001524565b348015620009c557600080fd5b50620006a162001534565b348015620009dd57600080fd5b506200051360215481565b348015620009f557600080fd5b50620006a162000a0736600462003394565b6200159f565b34801562000a1a57600080fd5b506200051360225481565b34801562000a3257600080fd5b50620006a162000a4436600462003266565b62001606565b34801562000a5757600080fd5b506200051362000a6936600462003266565b6001600160a01b031660009081526005602052604090205490565b34801562000a9157600080fd5b50620006a162001632565b34801562000aa957600080fd5b50600d54620006f4906001600160a01b031681565b34801562000acb57600080fd5b506200051360135481565b34801562000ae357600080fd5b5062000513601b5481565b34801562000afb57600080fd5b50620006a16200164a565b34801562000b1357600080fd5b506200051360105481565b34801562000b2b57600080fd5b50620006a162000b3d366004620032b5565b62001665565b34801562000b5057600080fd5b50620006a162000b6236600462003394565b62001751565b34801562000b7557600080fd5b50602754620005b490610100900460ff1681565b34801562000b9657600080fd5b506000546001600160a01b0316620006f4565b34801562000bb657600080fd5b506200051360175481565b34801562000bce57600080fd5b50604080518082019091526009815268244541524e504f4c5960b81b602082015262000571565b34801562000c0257600080fd5b50620006a162000c14366004620032b5565b62001786565b34801562000c2757600080fd5b50620006a162000c3936600462003344565b620017a5565b34801562000c4c57600080fd5b50620006a162000c5e36600462003266565b62001812565b34801562000c7157600080fd5b50620006a162000c8336600462003324565b6200183e565b34801562000c9657600080fd5b5062000513620018e8565b34801562000cae57600080fd5b50601e54620006f4906001600160a01b031681565b34801562000cd057600080fd5b50620005b462000ce236600462003286565b62001933565b34801562000cf557600080fd5b50620006a162000d0736600462003266565b62001942565b34801562000d1a57600080fd5b50620005b462000d2c36600462003266565b6001600160a01b031660009081526007602052604090205460ff1690565b34801562000d5757600080fd5b50602354620005b490610100900460ff1681565b34801562000d7857600080fd5b50600354620006f4906001600160a01b031681565b34801562000d9a57600080fd5b50620006a162000dac36600462003344565b6200196e565b34801562000dbf57600080fd5b50620006a1620019db565b34801562000dd757600080fd5b50620006a162000de936600462003324565b62001a63565b34801562000dfc57600080fd5b50620006a162000e0e36600462003394565b62001ab4565b34801562000e2157600080fd5b50620006a162000e3336600462003266565b62001ae9565b34801562000e4657600080fd5b50620006a162000e5836600462003394565b62001c5f565b34801562000e6b57600080fd5b50620006a162001c94565b34801562000e8357600080fd5b506200051362000e95366004620033f3565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801562000ecd57600080fd5b50620006a162000edf36600462003266565b62001d02565b34801562000ef257600080fd5b5062000513601c5481565b34801562000f0a57600080fd5b506200051362001d2e565b34801562000f2257600080fd5b50620006a162000f34366004620032b5565b62001d79565b34801562000f4757600080fd5b5062000513601a5481565b34801562000f5f57600080fd5b506200051360245481565b34801562000f7757600080fd5b506200051360115481565b34801562000f8f57600080fd5b50620006a162000fa136600462003266565b62001dcf565b34801562000fb457600080fd5b506200051360155481565b34801562000fcc57600080fd5b50620006a162000fde36600462003394565b62001e4b565b34801562000ff157600080fd5b50601d54620006f4906001600160a01b031681565b3480156200101357600080fd5b50602754620005b49060ff1681565b3480156200102f57600080fd5b50620005b46200104136600462003266565b60096020526000908152604090205460ff1681565b3480156200106357600080fd5b50620005b46200107536600462003266565b600c6020526000908152604090205460ff1681565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620010e69086815260200190565b60405180910390a35060015b92915050565b601f54604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa15801562001143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001169919062003426565b905090565b601f54604051630a05cd0160e01b81526001600160a01b0383811660048301526000928392839283921690630a05cd0190602401608060405180830381865afa158015620011c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011e6919062003440565b93509350935093509193509193565b620011ff6200203c565b80156200124f57620012146012600a6200358a565b62001224906305f5e1006200359b565b8110156200124f5760405162461bcd60e51b81526004016200124690620035bd565b60405180910390fd5b602155565b6001600160a01b03831660009081526006602090815260408083203384529091528120546000191462001345576001600160a01b0384166000908152600660209081526040808320338452909152902054821115620012ef5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015260640162001246565b6001600160a01b03841660009081526006602090815260408083203384529091529020546200132090839062003600565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6200135284848462002098565b90505b9392505050565b620013666200203c565b6023805460ff1916911515919091179055565b620013836200203c565b6019839055601a829055601b81905560105481908390620013a69086906200361a565b620013b291906200361a565b620013be91906200361a565b601c819055600f1015620013e65760405162461bcd60e51b8152600401620012469062003635565b505050565b620013f56200203c565b601f546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e89690604401600060405180830381600087803b1580156200144357600080fd5b505af115801562001458573d6000803e3d6000fd5b505060408051858152602081018590527ff422aed0b19de56e7aa427c6fd0d5706c88ab222f9058aaa4ffaa0e279b46fc693500190505b60405180910390a15050565b620014a56200203c565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b620014d16200203c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b620015066200203c565b602380549215156101000261ff001990931692909217909155602455565b6000620010f2826000196200108a565b6200153e6200203c565b601f5460405163a6871bc360e01b81523360048201526001600160a01b039091169063a6871bc390602401600060405180830381600087803b1580156200158457600080fd5b505af115801562001599573d6000803e3d6000fd5b50505050565b620015a96200203c565b6001600160a01b038216600081815260076020908152604091829020805460ff19168515159081179091558251938452908301527f1b92447bfc74f86a82293c184341926a5888220bc498dde33efabf7c3d796d6991016200148f565b620016106200203c565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6200163c6200203c565b620016486000620025ee565b565b620016546200203c565b6027805461ff001916610100179055565b6200166f6200203c565b600354601f546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018490529116906323b872dd906064016020604051808303816000875af1158015620016cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016f1919062003678565b50601f5460405163b6b55f2560e01b8152600481018390526001600160a01b039091169063b6b55f25906024015b600060405180830381600087803b1580156200173a57600080fd5b505af19250505080156200174c575060015b505b50565b6200175b6200203c565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b620017906200203c565b620b71b08110620017a057600080fd5b602055565b620017af6200203c565b60158390556016829055601781905560105481908390620017d29086906200361a565b620017de91906200361a565b620017ea91906200361a565b6018819055600f1015620013e65760405162461bcd60e51b8152600401620012469062003635565b6200181c6200203c565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b601f60009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200188f57600080fd5b505af1158015620018a4573d6000803e3d6000fd5b5050505080156200174e57601f546020546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916200171f9160040190815260200190565b601f546040805163543efc1960e11b815290516000926001600160a01b03169163a87df8329160048083019260209291908290030181865afa15801562001143573d6000803e3d6000fd5b60006200135533848462002098565b6200194c6200203c565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b620019786200203c565b601183905560128290556013819055601054819083906200199b9086906200361a565b620019a791906200361a565b620019b391906200361a565b6014819055600f1015620013e65760405162461bcd60e51b8152600401620012469062003635565b620019e56200203c565b478062001a355760405162461bcd60e51b815260206004820152601960248201527f4e6f20656e6f7567682045544820746f207472616e7366657200000000000000604482015260640162001246565b604051339082156108fc029083906000818181858888f193505050501580156200174c573d6000803e3d6000fd5b62001a6d6200203c565b6027805460ff19168215159081179091556040519081527f0d537fcb73bb9654441eb9bd03c28d4b833e5a2da1f53bf422424cb01bc80fc79060200160405180910390a150565b62001abe6200203c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b62001af36200203c565b601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b6d919062003698565b6001600160a01b0316816001600160a01b03160362001be35760405162461bcd60e51b815260206004820152602b60248201527f43616e206e6f7420726577617264204e617469766520746f6b656e20696e207460448201526a3434b9903a3930b1b5b2b960a91b606482015260840162001246565b600380546001600160a01b0319166001600160a01b038316179055604051819062001c0e90620031ea565b6001600160a01b039091168152602001604051809103906000f08015801562001c3b573d6000803e3d6000fd5b50601f80546001600160a01b0319166001600160a01b039290921691909117905550565b62001c696200203c565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b601f546020546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799162001ccd9160040190815260200190565b600060405180830381600087803b15801562001ce857600080fd5b505af192505050801562001cfa575060015b156200164857565b62001d0c6200203c565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b601f546040805163039e107b60e61b815290516000926001600160a01b03169163e7841ec09160048083019260209291908290030181865afa15801562001143573d6000803e3d6000fd5b62001d836200203c565b801562001dca5762001d986012600a6200358a565b62001da8906305f5e1006200359b565b81101562001dca5760405162461bcd60e51b81526004016200124690620035bd565b602255565b62001dd96200203c565b6001600160a01b03811662001e405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162001246565b6200174e81620025ee565b62001e556200203c565b6001600160a01b038216301480159062001e7d5750601e546001600160a01b03838116911614155b62001ee65760405162461bcd60e51b815260206004820152603260248201527f63616e206e6f7420616464207061697220616e6420746f6b656e20616464726560448201527139b99030b99039b430b932903437b63232b960711b606482015260840162001246565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915562001f8257601f54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801562001f6357600080fd5b505af115801562001f78573d6000803e3d6000fd5b5050505062001ffb565b601f546001600160a01b0383811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801562001fe157600080fd5b505af115801562001ff6573d6000803e3d6000fd5b505050505b604080516001600160a01b038416815282151560208201527fad3666dd545175260bd4a82a50e0b189b968d227adfefd0df46a3e2fa2d5eafe91016200148f565b6000546001600160a01b03163314620016485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001246565b6001600160a01b03831660009081526009602052604081205460ff16158015620020db57506001600160a01b03831660009081526009602052604090205460ff16155b6200211d5760405162461bcd60e51b8152602060048201526011602482015270426c61636b6c697374656420757365727360781b604482015260640162001246565b602754610100900460ff166200218a576001600160a01b0384166000908152600c602052604090205460ff166200218a5760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b604482015260640162001246565b60275462010000900460ff1615620021b157620021a98484846200263e565b905062001355565b620021bb6200275e565b15620021cb57620021cb620027d4565b601e546001600160a01b0385811691161480156200220257506001600160a01b0383166000908152600a602052604090205460ff16155b801562002210575060225415155b156200226357602254821115620022635760405162461bcd60e51b815260206004820152601660248201527513585e08189d5e481b1a5b5a5d08195e18d95959195960521b604482015260640162001246565b601e546001600160a01b0384811691161480156200229a57506001600160a01b0384166000908152600b602052604090205460ff16155b8015620022a8575060215415155b156200230257602154821115620023025760405162461bcd60e51b815260206004820152601760248201527f4d61782073656c6c206c696d6974206578636565646564000000000000000000604482015260640162001246565b6001600160a01b038416600090815260056020526040902054821115620023635760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640162001246565b6001600160a01b0384166000908152600560205260409020546200238990839062003600565b6001600160a01b038516600090815260056020526040812091909155620023b1858562002ae4565b620023bd5782620023ca565b620023ca85858562002b85565b6001600160a01b038516600090815260056020526040902054909150620023f39082906200361a565b6001600160a01b0380861660009081526005602090815260408083209490945591881681526008909152205460ff166200249a57601f546001600160a01b0386811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200248657600080fd5b505af192505050801562002498575060015b505b6001600160a01b03841660009081526008602052604090205460ff166200252e57601f546001600160a01b0385811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156200251a57600080fd5b505af19250505080156200252c575060015b505b601f546020546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991620025679160040190815260200190565b600060405180830381600087803b1580156200258257600080fd5b505af192505050801562002594575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620025db91815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600560205260408120548211156200269f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640162001246565b6001600160a01b038416600090815260056020526040902054620026c590839062003600565b6001600160a01b038086166000908152600560205260408082209390935590851681522054620026f79083906200361a565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200274c9086815260200190565b60405180910390a35060019392505050565b601e546000906001600160a01b0316331480159062002786575060275462010000900460ff16155b801562002795575060275460ff165b8015620027b3575042602454602554620027b091906200361a565b11155b80156200116957505060265430600090815260056020526040902054101590565b6027805462ff000019166201000017905530600090815260056020526040812054601c546019549192916200280a90846200359b565b620028169190620036b8565b90506000601c54601054846200282d91906200359b565b620028399190620036b8565b90506000601b54601a546200284f91906200361a565b905060008262002860858762003600565b6200286c919062003600565b90508215620029d9576003546200288e9084906001600160a01b031662002c74565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015620028d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028fe919062003426565b600354601f5460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb906044016020604051808303816000875af115801562002956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200297c919062003678565b50601f5460405163b6b55f2560e01b8152600481018390526001600160a01b039091169063b6b55f2590602401600060405180830381600087803b158015620029c457600080fd5b505af1925050508015620029d6575060015b50505b600081118015620029ea5750600082115b1562002abb57620029fb8162002e17565b601b544790600090849062002a1190846200359b565b62002a1d9190620036b8565b9050600062002a2d828462003600565b9050811562002a7357600d546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801562002a71573d6000803e3d6000fd5b505b801562002ab757600e546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801562002ab5573d6000803e3d6000fd5b505b5050505b831562002acd5762002acd8462002f80565b50504260255550506027805462ff00001916905550565b60235460009060ff1662002b2d57601e546001600160a01b03848116911614158062002b1e5750601e546001600160a01b03838116911614155b1562002b2d57506000620010f2565b6001600160a01b03831660009081526007602052604090205460ff168062002b6d57506001600160a01b03821660009081526007602052604090205460ff165b1562002b7c57506000620010f2565b506001620010f2565b601e5460009081906001600160a01b039081169085160362002bc75760646018548462002bb391906200359b565b62002bbf9190620036b8565b905062002be8565b60646014548462002bd991906200359b565b62002be59190620036b8565b90505b3060009081526005602052604090205462002c059082906200361a565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9062002c579085815260200190565b60405180910390a362002c6b818462003600565b95945050505050565b6040805160038082526080820190925260009160208201606080368337019050509050308160008151811062002cae5762002cae620036db565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562002d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d2e919062003698565b8160018151811062002d445762002d44620036db565b60200260200101906001600160a01b031690816001600160a01b031681525050818160028151811062002d7b5762002d7b620036db565b6001600160a01b039283166020918202929092010152601d5462002da3913091168562003009565b601d54604051635c11d79560e01b81526001600160a01b0390911690635c11d7959062002dde908690600090869030904290600401620036f1565b600060405180830381600087803b15801562002df957600080fd5b505af115801562002e0e573d6000803e3d6000fd5b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062002e4f5762002e4f620036db565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562002ea9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ecf919062003698565b8160018151811062002ee55762002ee5620036db565b6001600160a01b039283166020918202929092010152601d5462002f0d913091168462003009565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479062002f48908590600090869030904290600401620036f1565b600060405180830381600087803b15801562002f6357600080fd5b505af115801562002f78573d6000803e3d6000fd5b505050505050565b600062002f8f600283620036b8565b9050600062002f9f828462003600565b90504762002fad8362002e17565b600062002fbb824762003600565b905062002fc9838262003131565b60408051828152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506910160405180910390a15050505050565b6001600160a01b0383166200306d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162001246565b6001600160a01b038216620030d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162001246565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601d546200314b9030906001600160a01b03168462003009565b601d54600f5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015620031bc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620031e3919062003764565b5050505050565b610eff806200379483390190565b600060208083528351808285015260005b81811015620032275785810183015185820160400152820162003209565b818111156200323a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146200174e57600080fd5b6000602082840312156200327957600080fd5b8135620013558162003250565b600080604083850312156200329a57600080fd5b8235620032a78162003250565b946020939093013593505050565b600060208284031215620032c857600080fd5b5035919050565b600080600060608486031215620032e557600080fd5b8335620032f28162003250565b92506020840135620033048162003250565b929592945050506040919091013590565b80151581146200174e57600080fd5b6000602082840312156200333757600080fd5b8135620013558162003315565b6000806000606084860312156200335a57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156200338557600080fd5b50508035926020909101359150565b60008060408385031215620033a857600080fd5b8235620033b58162003250565b91506020830135620033c78162003315565b809150509250929050565b60008060408385031215620033e657600080fd5b8235620032a78162003315565b600080604083850312156200340757600080fd5b8235620034148162003250565b91506020830135620033c78162003250565b6000602082840312156200343957600080fd5b5051919050565b600080600080608085870312156200345757600080fd5b505082516020840151604085015160609095015191969095509092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620034ce578160001904821115620034b257620034b262003477565b80851615620034c057918102915b93841c939080029062003492565b509250929050565b600082620034e757506001620010f2565b81620034f657506000620010f2565b81600181146200350f57600281146200351a576200353a565b6001915050620010f2565b60ff8411156200352e576200352e62003477565b50506001821b620010f2565b5060208310610133831016604e8410600b84101617156200355f575081810a620010f2565b6200356b83836200348d565b806000190482111562003582576200358262003477565b029392505050565b60006200135560ff841683620034d6565b6000816000190483118215151615620035b857620035b862003477565b500290565b60208082526023908201527f4c696d69742063616e206e6f74206c657373207468616e20323530206d696c6c60408201526234b7b760e91b606082015260800190565b60008282101562003615576200361562003477565b500390565b6000821982111562003630576200363062003477565b500190565b60208082526023908201527f546f74616c20666565732063616e206e6f742067726561746572207468616e2060408201526231352560e81b606082015260800190565b6000602082840312156200368b57600080fd5b8151620013558162003315565b600060208284031215620036ab57600080fd5b8151620013558162003250565b600082620036d657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620037435784516001600160a01b0316835293830193918301916001016200371c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156200377a57600080fd5b835192506020840151915060408401519050925092509256fe60806040526ec097ce7bc90715b34b9f1000000000600a55603c600b556103e8600c5534801561002e57600080fd5b50604051610eff380380610eff83398101604081905261004d91610080565b60008054336001600160a01b031991821617909155600180549091166001600160a01b03929092169190911790556100b0565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b610e40806100bf6000396000f3fe6080604052600436106101395760003560e01c8063a87df832116100ab578063e7841ec01161006f578063e7841ec01461037f578063ecd0c0c314610394578063efca2eed146103b4578063f0fc6bca146103ca578063ffb2c479146103df578063ffd49c84146103ff57600080fd5b8063a87df832146102a5578063b6b55f25146102ba578063cab34c08146102da578063ce7c2ac214610312578063e2d2e2191461036957600080fd5b80632d48e896116100fd5780632d48e896146102015780633a98ef39146102215780634fab0ae81461023757806360379e131461024d578063997664d71461026f578063a6871bc31461028557600080fd5b806309bbedde146101455780630a05cd011461016957806311ce023d146101a957806314b6ca96146101bf57806328fd3198146101e157600080fd5b3661014057005b600080fd5b34801561015157600080fd5b506002545b6040519081526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004610c30565b610415565b604080519485526020850193909352918301526060820152608001610160565b3480156101b557600080fd5b50610156600a5481565b3480156101cb57600080fd5b506101df6101da366004610c52565b61046e565b005b3480156101ed57600080fd5b506101566101fc366004610c30565b6105e6565b34801561020d57600080fd5b506101df61021c366004610c7c565b610671565b34801561022d57600080fd5b5061015660065481565b34801561024357600080fd5b50610156600c5481565b34801561025957600080fd5b50610262610693565b6040516101609190610c9e565b34801561027b57600080fd5b5061015660075481565b34801561029157600080fd5b506101df6102a0366004610c30565b6106f5565b3480156102b157600080fd5b50600854610156565b3480156102c657600080fd5b506101df6102d5366004610ceb565b6107f7565b3480156102e657600080fd5b506001546102fa906001600160a01b031681565b6040516001600160a01b039091168152602001610160565b34801561031e57600080fd5b5061034e61032d366004610c30565b60056020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610160565b34801561037557600080fd5b5061015660095481565b34801561038b57600080fd5b50600d54610156565b3480156103a057600080fd5b506000546102fa906001600160a01b031681565b3480156103c057600080fd5b5061015660085481565b3480156103d657600080fd5b506101df61084d565b3480156103eb57600080fd5b506101df6103fa366004610ceb565b610858565b34801561040b57600080fd5b50610156600b5481565b6001600160a01b03811660009081526004602052604081205490808061043a856105e6565b6001600160a01b03909516600090815260056020908152604080832060020154600390925290912054949690949350915050565b6000546001600160a01b0316331461048557600080fd5b6001600160a01b038216600090815260056020526040902054156104ac576104ac8261095c565b6000811180156104d257506001600160a01b038216600090815260056020526040902054155b1561053857600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916909117905561056b565b8015801561055d57506001600160a01b03821660009081526005602052604090205415155b1561056b5761056b82610a7c565b6001600160a01b038216600090815260056020526040902054600654829161059291610d1a565b61059c9190610d31565b6006556001600160a01b03821660009081526005602052604090208190556105c381610bac565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6001600160a01b038116600090815260056020526040812054810361060d57506000919050565b6001600160a01b03821660009081526005602052604081205461062f90610bac565b6001600160a01b03841660009081526005602052604090206001015490915080821161065f575060009392505050565b6106698183610d1a565b949350505050565b6000546001600160a01b0316331461068857600080fd5b600b91909155600c55565b606060028054806020026020016040519081016040528092919081815260200182805480156106eb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106cd575b5050505050905090565b6000546001600160a01b0316331461070c57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190610d49565b60015460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af11580156107ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f29190610d62565b505050565b6000546001600160a01b0316331461080e57600080fd5b8060075461081c9190610d31565b600755600654600a54610830908390610d84565b61083a9190610da3565b6009546108479190610d31565b60095550565b6108563361095c565b565b6000546001600160a01b0316331461086f57600080fd5b600254600081900361087f575050565b6000805a905060005b848310801561089657508381105b156109555783600d54106108aa576000600d555b6108dc6002600d54815481106108c2576108c2610dc5565b6000918252602090912001546001600160a01b0316610bcf565b15610913576109136002600d54815481106108f9576108f9610dc5565b6000918252602090912001546001600160a01b031661095c565b5a61091e9083610d1a565b6109289084610d31565b92505a600d8054919350600061093d83610ddb565b9190505550808061094d90610ddb565b915050610888565b5050505050565b6001600160a01b038116600090815260056020526040812054900361097e5750565b6000610989826105e6565b90508015610a78578060085461099f9190610d31565b60085560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190610d62565b506001600160a01b03821660009081526004602090815260408083204290556005909152902060020154610a4e908290610d31565b6001600160a01b03831660009081526005602052604090206002810191909155546105c390610bac565b5050565b60028054610a8c90600190610d1a565b81548110610a9c57610a9c610dc5565b60009182526020808320909101546001600160a01b0384811684526003909252604090922054600280549290931692918110610ada57610ada610dc5565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260039182905260408120546002805491939291610b2690600190610d1a565b81548110610b3657610b36610dc5565b60009182526020808320909101546001600160a01b031683528201929092526040019020556002805480610b6c57610b6c610df4565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0392909216815260039091526040812055565b6000600a5460095483610bbf9190610d84565b610bc99190610da3565b92915050565b600b546001600160a01b03821660009081526004602052604081205490914291610bf99190610d31565b108015610bc95750600c54610c0d836105e6565b1192915050565b80356001600160a01b0381168114610c2b57600080fd5b919050565b600060208284031215610c4257600080fd5b610c4b82610c14565b9392505050565b60008060408385031215610c6557600080fd5b610c6e83610c14565b946020939093013593505050565b60008060408385031215610c8f57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015610cdf5783516001600160a01b031683529284019291840191600101610cba565b50909695505050505050565b600060208284031215610cfd57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610d2c57610d2c610d04565b500390565b60008219821115610d4457610d44610d04565b500190565b600060208284031215610d5b57600080fd5b5051919050565b600060208284031215610d7457600080fd5b81518015158114610c4b57600080fd5b6000816000190483118215151615610d9e57610d9e610d04565b500290565b600082610dc057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201610ded57610ded610d04565b5060010190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b1277c073340b4469d17c445913f407ae9ff28e04aece609c70fb325ca5fb32364736f6c634300080e0033a264697066735822122034729ccc6e3a71c9137b2884d40a2f54731ce724ee354041084360f2b413e1eb64736f6c634300080e003360806040526ec097ce7bc90715b34b9f1000000000600a55603c600b556103e8600c5534801561002e57600080fd5b50604051610eff380380610eff83398101604081905261004d91610080565b60008054336001600160a01b031991821617909155600180549091166001600160a01b03929092169190911790556100b0565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b610e40806100bf6000396000f3fe6080604052600436106101395760003560e01c8063a87df832116100ab578063e7841ec01161006f578063e7841ec01461037f578063ecd0c0c314610394578063efca2eed146103b4578063f0fc6bca146103ca578063ffb2c479146103df578063ffd49c84146103ff57600080fd5b8063a87df832146102a5578063b6b55f25146102ba578063cab34c08146102da578063ce7c2ac214610312578063e2d2e2191461036957600080fd5b80632d48e896116100fd5780632d48e896146102015780633a98ef39146102215780634fab0ae81461023757806360379e131461024d578063997664d71461026f578063a6871bc31461028557600080fd5b806309bbedde146101455780630a05cd011461016957806311ce023d146101a957806314b6ca96146101bf57806328fd3198146101e157600080fd5b3661014057005b600080fd5b34801561015157600080fd5b506002545b6040519081526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004610c30565b610415565b604080519485526020850193909352918301526060820152608001610160565b3480156101b557600080fd5b50610156600a5481565b3480156101cb57600080fd5b506101df6101da366004610c52565b61046e565b005b3480156101ed57600080fd5b506101566101fc366004610c30565b6105e6565b34801561020d57600080fd5b506101df61021c366004610c7c565b610671565b34801561022d57600080fd5b5061015660065481565b34801561024357600080fd5b50610156600c5481565b34801561025957600080fd5b50610262610693565b6040516101609190610c9e565b34801561027b57600080fd5b5061015660075481565b34801561029157600080fd5b506101df6102a0366004610c30565b6106f5565b3480156102b157600080fd5b50600854610156565b3480156102c657600080fd5b506101df6102d5366004610ceb565b6107f7565b3480156102e657600080fd5b506001546102fa906001600160a01b031681565b6040516001600160a01b039091168152602001610160565b34801561031e57600080fd5b5061034e61032d366004610c30565b60056020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610160565b34801561037557600080fd5b5061015660095481565b34801561038b57600080fd5b50600d54610156565b3480156103a057600080fd5b506000546102fa906001600160a01b031681565b3480156103c057600080fd5b5061015660085481565b3480156103d657600080fd5b506101df61084d565b3480156103eb57600080fd5b506101df6103fa366004610ceb565b610858565b34801561040b57600080fd5b50610156600b5481565b6001600160a01b03811660009081526004602052604081205490808061043a856105e6565b6001600160a01b03909516600090815260056020908152604080832060020154600390925290912054949690949350915050565b6000546001600160a01b0316331461048557600080fd5b6001600160a01b038216600090815260056020526040902054156104ac576104ac8261095c565b6000811180156104d257506001600160a01b038216600090815260056020526040902054155b1561053857600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916909117905561056b565b8015801561055d57506001600160a01b03821660009081526005602052604090205415155b1561056b5761056b82610a7c565b6001600160a01b038216600090815260056020526040902054600654829161059291610d1a565b61059c9190610d31565b6006556001600160a01b03821660009081526005602052604090208190556105c381610bac565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6001600160a01b038116600090815260056020526040812054810361060d57506000919050565b6001600160a01b03821660009081526005602052604081205461062f90610bac565b6001600160a01b03841660009081526005602052604090206001015490915080821161065f575060009392505050565b6106698183610d1a565b949350505050565b6000546001600160a01b0316331461068857600080fd5b600b91909155600c55565b606060028054806020026020016040519081016040528092919081815260200182805480156106eb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106cd575b5050505050905090565b6000546001600160a01b0316331461070c57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107799190610d49565b60015460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af11580156107ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f29190610d62565b505050565b6000546001600160a01b0316331461080e57600080fd5b8060075461081c9190610d31565b600755600654600a54610830908390610d84565b61083a9190610da3565b6009546108479190610d31565b60095550565b6108563361095c565b565b6000546001600160a01b0316331461086f57600080fd5b600254600081900361087f575050565b6000805a905060005b848310801561089657508381105b156109555783600d54106108aa576000600d555b6108dc6002600d54815481106108c2576108c2610dc5565b6000918252602090912001546001600160a01b0316610bcf565b15610913576109136002600d54815481106108f9576108f9610dc5565b6000918252602090912001546001600160a01b031661095c565b5a61091e9083610d1a565b6109289084610d31565b92505a600d8054919350600061093d83610ddb565b9190505550808061094d90610ddb565b915050610888565b5050505050565b6001600160a01b038116600090815260056020526040812054900361097e5750565b6000610989826105e6565b90508015610a78578060085461099f9190610d31565b60085560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a199190610d62565b506001600160a01b03821660009081526004602090815260408083204290556005909152902060020154610a4e908290610d31565b6001600160a01b03831660009081526005602052604090206002810191909155546105c390610bac565b5050565b60028054610a8c90600190610d1a565b81548110610a9c57610a9c610dc5565b60009182526020808320909101546001600160a01b0384811684526003909252604090922054600280549290931692918110610ada57610ada610dc5565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260039182905260408120546002805491939291610b2690600190610d1a565b81548110610b3657610b36610dc5565b60009182526020808320909101546001600160a01b031683528201929092526040019020556002805480610b6c57610b6c610df4565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0392909216815260039091526040812055565b6000600a5460095483610bbf9190610d84565b610bc99190610da3565b92915050565b600b546001600160a01b03821660009081526004602052604081205490914291610bf99190610d31565b108015610bc95750600c54610c0d836105e6565b1192915050565b80356001600160a01b0381168114610c2b57600080fd5b919050565b600060208284031215610c4257600080fd5b610c4b82610c14565b9392505050565b60008060408385031215610c6557600080fd5b610c6e83610c14565b946020939093013593505050565b60008060408385031215610c8f57600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015610cdf5783516001600160a01b031683529284019291840191600101610cba565b50909695505050505050565b600060208284031215610cfd57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610d2c57610d2c610d04565b500390565b60008219821115610d4457610d44610d04565b500190565b600060208284031215610d5b57600080fd5b5051919050565b600060208284031215610d7457600080fd5b81518015158114610c4b57600080fd5b6000816000190483118215151615610d9e57610d9e610d04565b500290565b600082610dc057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201610ded57610ded610d04565b5060010190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b1277c073340b4469d17c445913f407ae9ff28e04aece609c70fb325ca5fb32364736f6c634300080e0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.