Token
Rain (RAIN)
ERC-20
Overview
Max Total Supply
100,000,000 RAIN
Holders
1
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0 RAINLoading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RainToken
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; // Interface definitions interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } interface IUniswapRouter { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @title Rain Token * @dev Implementation of the ERC20 Token Standard with reflection rewards */ contract RainToken { // Define REWARD_TOKEN constant with correct checksum address constant private REWARD_TOKEN = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; // WRAPPED_SONIC // Define ROUTER constant with correct checksum address constant private ROUTER = 0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3; // METROPOLIS_ROUTER // Use SONIC_LP_PAIR consistently address public SONIC_LP_PAIR; function setLPPair(address newPair) public onlyOwner { require(newPair != address(0), "LP pair cannot be zero address"); SONIC_LP_PAIR = newPair; } // Add owner() function for the deploy script function owner() public view returns (address) { return _owner; } function setExempt(address account, bool status) public onlyOwner { exempt[account] = status; } // Events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event TradingEnabled(address indexed by); event MaxWalletDisabled(address indexed by); event SurplusWithdrawn(address indexed to, uint256 amount); event Claimed(address indexed user, uint256 amount); event RainAutoLPTriggered(uint256 ethSwapped, uint256 tokensReceived); event RainPrinted(address indexed to, uint256 amount); event RainBurned(address indexed from, uint256 amount); event RewardsUpdated(uint256 intervalSeconds, uint256 batchSize, uint256 gasLimit); // State variables string private _name = "Rain"; string private _symbol = "RAIN"; uint8 private constant _decimals = 18; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; address private _owner; bool public maxWalletDisabled; bool public tradingEnabled; mapping(address => bool) public whitelisted; mapping(address => bool) public excluded; mapping(address => bool) public exempt; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; uint256 public maxTxAmount; uint256 public maxWalletSize; uint256 public swapThreshold; uint256 public totalFees; uint256 public liquidityFee; uint256 public buybackFee; uint256 public reflectionFee; uint256 public marketingFee; uint256 public burnFee; uint256 public gasForProcessing; uint256 public batchSize; uint256 public processingInterval; uint256 public lastProcessedTime; // Change pendingAmount from uint256 to bool bool public pendingAmount; address[] private holders; mapping(address => uint256) public holderIndexes; struct HolderInfo { uint256 amount; uint256 pendingRewards; uint256 totalExcluded; } mapping(address => HolderInfo) public holderInfo; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public currentIndex; bool private inSwap; uint256 public swappedTokens; modifier lockTheSwap { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(msg.sender == _owner, "Ownable: caller is not the owner"); _; } // Constructor constructor() { _owner = msg.sender; // Initial supply and tokenomics setup _totalSupply = 100000000 * 10**_decimals; _balances[msg.sender] = _totalSupply; maxTxAmount = _totalSupply * 2 / 100; // 2% maxWalletSize = _totalSupply * 2 / 100; // 2% swapThreshold = _totalSupply * 5 / 10000; // 0.05% // Initialize fee structure totalFees = 5; // 5% total fee for reflection reflectionFee = 5; // 5% for reflections (to match your requirement) liquidityFee = 0; buybackFee = 0; marketingFee = 0; burnFee = 0; processingInterval = 300; // 5 minutes batchSize = 20; gasForProcessing = 300000; // Initialize LP pair address with a placeholder - will be updated later SONIC_LP_PAIR = 0x663DC15D3C1aC63ff12E45Ab68FeA3F0a883C251; // Add owner to holders array holders.push(msg.sender); holderIndexes[msg.sender] = 0; totalShares = _totalSupply; // Approve router for future swaps _approve(address(this), ROUTER, _totalSupply); emit Transfer(address(0), msg.sender, _totalSupply); } // Basic ERC20 Functions function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } // Fix parameter shadowing by renaming function allowance(address tokenOwner, address spender) public view returns (uint256) { return _allowances[tokenOwner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, msg.sender, currentAllowance - amount); } _transfer(sender, recipient, amount); return true; } // Fix parameter shadowing by renaming function _approve(address tokenOwner, address spender, uint256 amount) internal { require(tokenOwner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[tokenOwner][spender] = amount; emit Approval(tokenOwner, spender, amount); } // Token specific functions function _transfer(address from, address to, uint256 amount) internal { require(amount > 0, "Transfer amount must be greater than zero"); // Check if trading is enabled for non-whitelisted addresses if (!tradingEnabled && (from == SONIC_LP_PAIR || to == SONIC_LP_PAIR)) { require(whitelisted[from] || whitelisted[to], "Trading not enabled yet"); } // Max wallet size limit if (maxWalletDisabled && to != address(0) && to != DEAD && to != SONIC_LP_PAIR && !exempt[to]) { require(_balances[to] + amount <= maxWalletSize, "Max wallet limit exceeded"); } // Manage holders for distribution if (excluded[from] && from != SONIC_LP_PAIR) { _removeHolder(from); } if (excluded[to] && to != SONIC_LP_PAIR) { _removeHolder(to); } // Auto liquidity system bool canSwap = balanceOf(address(this)) >= swapThreshold; if (canSwap && !inSwap && from != SONIC_LP_PAIR && !whitelisted[from] && !whitelisted[to]) { pendingAmount = true; uint256 swapAmount = amount > swapThreshold ? swapThreshold : amount; _swapAndLiquify(swapAmount); pendingAmount = false; } // Fee system or direct transfer bool takeFee = true; if (whitelisted[from] || whitelisted[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (from == SONIC_LP_PAIR || to == SONIC_LP_PAIR) { fees = amount * totalFees / 100; // Use the totalFees variable } if (fees > 0) { _takeFee(from, address(this), fees); amount -= fees; } } // Standard transfer _basicTransfer(from, to, amount); // Update rewards for holder if (excluded[from]) { _setShare(from, _balances[from]); } if (excluded[to]) { _setShare(to, _balances[to]); } // Process rewards if it's time if (!inSwap && isRewardsReady()) { processRewards(); lastProcessedTime = block.timestamp; } } function _basicTransfer(address sender, address recipient, uint256 amount) internal { if (recipient == address(0)) { _totalSupply -= amount; } else if (recipient != address(0)) { _balances[recipient] += amount; } if (sender != address(0)) { require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] -= amount; } emit Transfer(sender, recipient, amount); } function _takeFee(address from, address to, uint256 amount) internal { _balances[to] += amount; emit Transfer(from, to, amount); } // Reward system functions function getUnpaidEarnings(address account) public view returns (uint256) { if (holderInfo[account].amount == 0) return 0; uint256 earnedDividends = getSharesPercentage(account); uint256 alreadyPaid = holderInfo[account].totalExcluded; if (earnedDividends <= alreadyPaid) return 0; return earnedDividends - alreadyPaid; } // Fix getSharesPercentage to accept address parameter function getSharesPercentage(address account) internal view returns (uint256) { if (totalShares == 0) return 0; return dividendsPerShare * holderInfo[account].amount / 10000; } // Add an overload for uint256 parameter function getSharesPercentage(uint256 amount) internal view returns (uint256) { if (totalShares == 0) return 0; return dividendsPerShare * amount / 10000; } function getHolderDetails(address account) public view returns (uint256 shares, uint256 pending, uint256 withdrawn) { if (totalShares == 0) return (0, 0, 0); HolderInfo storage holder = holderInfo[account]; return (holder.amount, getUnpaidEarnings(account), holder.totalExcluded); } function getLatestMetrics() public view returns ( uint256 holdersCount, uint256 swappedTotal, uint256 contractBalance, uint256 sharesTotal, uint256 dividendsTotal, uint256 distributedTotal, uint256 nextProcessingTime, uint256 timeUntilProcessing ) { uint256 contractETH = 0; for (uint256 i = 0; i < holders.length; i++) { contractETH += balanceOf(holders[i]); } contractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); uint256 timeRemaining = 0; if (block.timestamp < lastProcessedTime + processingInterval) { timeRemaining = lastProcessedTime + processingInterval - block.timestamp; } return ( holders.length, swappedTokens, contractBalance, totalShares, totalDividends, totalDistributed, lastProcessedTime + processingInterval, timeRemaining ); } function getRewardsInfo() public view returns ( uint256 totalHolders, uint256 pendingRewards, bool isProcessingAvailable, uint256 nextProcessing ) { uint256 ethBalance = 0; for (uint256 i = 0; i < holders.length; i++) { ethBalance += balanceOf(holders[i]); } uint256 contractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); return ( holders.length, contractBalance, isRewardsReady(), lastProcessedTime + processingInterval ); } function isRewardsReady() public view returns (bool) { return block.timestamp >= lastProcessedTime + processingInterval; } function getTimeUntilProcessing() public view returns (uint256) { if (isRewardsReady()) return 0; return lastProcessedTime + processingInterval - block.timestamp; } function claimRewards() public { require(!excluded[msg.sender], "Excluded from printing Sonic"); uint256 amount = getUnpaidEarnings(msg.sender); require(amount > 0, "No Sonic to claim"); uint256 contractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); if (contractBalance < amount) { require(false, "Insufficient contract balance"); } holderInfo[msg.sender].totalExcluded = getSharesPercentage(msg.sender); holderInfo[msg.sender].pendingRewards = 0; swappedTokens += amount; bool success = IERC20(REWARD_TOKEN).transfer(msg.sender, amount); require(success, "Failed to claim rewards"); emit Claimed(msg.sender, amount); } function processRewards() public { uint256 gas = gasForProcessing; uint256 iterations = 0; while (gas > 0 && iterations < batchSize && currentIndex < holders.length) { uint256 gasUsed = gasleft(); _distributeRewards(holders[currentIndex]); gas -= (gasUsed - gasleft()); currentIndex++; iterations++; } if (currentIndex >= holders.length) { currentIndex = 0; } } function _distributeRewards(address holder) internal { if (holderInfo[holder].amount == 0) return; uint256 amount = getUnpaidEarnings(holder); if (amount > 0) { uint256 contractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); if (amount <= contractBalance) { holderInfo[holder].totalExcluded = getSharesPercentage(holder); holderInfo[holder].pendingRewards = 0; swappedTokens += amount; bool success = IERC20(REWARD_TOKEN).transfer(holder, amount); if (success) { emit RainPrinted(holder, amount); } else { holderInfo[holder].pendingRewards += amount; holderInfo[holder].totalExcluded -= getSharesPercentage(holder); swappedTokens -= amount; } } } } function _setShare(address holder, uint256 amount) internal { if (amount < processingInterval) { if (amount == 0 && holderInfo[holder].amount > 0) { _removeHolder(holder); } return; } if (holderInfo[holder].amount > 0) { if (amount == 0) { _removeHolder(holder); } else { totalShares = totalShares - holderInfo[holder].amount + amount; holderInfo[holder].amount = amount; holderInfo[holder].pendingRewards = getSharesPercentage(holder); } } else { _addHolder(holder, amount); holderInfo[holder].amount = amount; holderInfo[holder].pendingRewards = getSharesPercentage(holder); totalShares += amount; } } function _addHolder(address holder, uint256 amount) internal { holders.push(holder); holderIndexes[holder] = holders.length - 1; emit RainBurned(holder, amount); } function _removeHolder(address holder) internal { address lastHolder = holders[holders.length - 1]; uint256 holderIndex = holderIndexes[holder]; // Replace the removed holder with the last one holders[holderIndex] = lastHolder; holderIndexes[lastHolder] = holderIndex; // Remove the last element holders.pop(); delete holderIndexes[holder]; // Update totals totalShares -= holderInfo[holder].amount; delete holderInfo[holder]; emit RainBurned(holder, 0); } function _swapAndLiquify(uint256 amount) internal lockTheSwap { // Setup swap path address[] memory path = new address[](2); path[0] = address(this); path[1] = REWARD_TOKEN; // Approve router _approve(address(this), ROUTER, amount); // Get initial balance uint256 initialBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); // Swap tokens for ETH IUniswapRouter(ROUTER).swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, path, address(this), block.timestamp ); // Calculate received ETH uint256 receivedETH = address(this).balance; // Get new contract balance after swap uint256 newContractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); if (receivedETH > 0 && totalShares > 0) { // No need to call _addETHToRewards as we're using Wrapped Sonic tokens // Calculate added tokens uint256 swappedTokenAmount = newContractBalance - initialBalance; // Update dividends per share totalDividends += reflectionFee * swappedTokenAmount / 10000; emit RainAutoLPTriggered(amount, swappedTokenAmount); if (isRewardsReady()) { processRewards(); lastProcessedTime = block.timestamp; } } } function _addETHToRewards(uint256 amount) internal { // No need to send ETH to the WRAPPED_SONIC token // This function is called after ETH is received from swapping // The contract will accumulate Wrapped Sonic tokens automatically after the swap } // Owner functions function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Invalid new owner address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled"); tradingEnabled = true; emit TradingEnabled(msg.sender); } function disableMaxWallet() public onlyOwner { require(!maxWalletDisabled, "Max wallet already disabled"); maxWalletDisabled = true; emit MaxWalletDisabled(msg.sender); } function setSwapSettings(uint256 minSwap, uint256 maxSwap) public onlyOwner { require(minSwap <= maxSwap, "Min swap must be <= max swap"); require(minSwap >= 10000 * 10**_decimals, "Min swap too small"); require(maxSwap <= 2 * 10**_decimals * _totalSupply / 100, "Max swap too large"); swapThreshold = minSwap; maxTxAmount = maxSwap; } function setRewardsSettings(uint256 interval, uint256 batch, uint256 gas) public onlyOwner { require(interval >= 60, "Interval must be at least 1 minute"); require(batch >= 5 && batch <= 100, "Batch size must be between 5 and 100"); require(gas >= 200000 && gas <= 500000, "Gas must be between 200,000 and 500,000"); processingInterval = interval; batchSize = batch; gasForProcessing = gas; emit RewardsUpdated(interval, batch, gas); } function setWhitelisted(address account, bool status) public onlyOwner { whitelisted[account] = status; } function setExcluded(address account, bool status) public onlyOwner { if (excluded[account] != status) { excluded[account] = status; if (status) { if (holderInfo[account].amount > 0) { _removeHolder(account); } } else { _setShare(account, balanceOf(account)); } } } function setFeeStructure( uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _burnFee ) public onlyOwner { uint256 newTotalFee = _liquidityFee + _buybackFee + _reflectionFee + _marketingFee + _burnFee; liquidityFee = _liquidityFee; buybackFee = _buybackFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; burnFee = _burnFee; totalFees = newTotalFee; } function withdrawSurplus() public onlyOwner { uint256 contractETH = 0; for (uint256 i = 0; i < holders.length; i++) { contractETH += balanceOf(holders[i]); } uint256 contractBalance = IERC20(REWARD_TOKEN).balanceOf(address(this)); if (contractBalance <= contractETH) { revert("No surplus available"); } uint256 surplus = contractBalance - contractETH; if (surplus <= 0) { revert("No surplus to withdraw"); } bool success = IERC20(REWARD_TOKEN).transfer(_owner, surplus); require(success, "Surplus withdrawal failed"); emit SurplusWithdrawn(_owner, surplus); } function rescueToken(address token, uint256 amount) public onlyOwner { require(token != REWARD_TOKEN, "Cannot rescue dividend token"); IERC20(token).transfer(_owner, amount); } function withdrawETH() public onlyOwner { (bool success,) = _owner.call{value: address(this).balance}(""); require(success, "ETH withdrawal failed"); } function resetRewards() public onlyOwner { for (uint256 i = 0; i < holders.length; i++) { _removeHolder(holders[i]); } totalShares = 0; lastProcessedTime = block.timestamp; } // Receive function to accept ETH receive() external payable {} }
{ "optimizer": { "enabled": true, "runs": 1000 }, "viaIR": true, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"}],"name":"MaxWalletDisabled","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":"uint256","name":"ethSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensReceived","type":"uint256"}],"name":"RainAutoLPTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RainBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RainPrinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"intervalSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"batchSize","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasLimit","type":"uint256"}],"name":"RewardsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SurplusWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"by","type":"address"}],"name":"TradingEnabled","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SONIC_LP_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batchSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getHolderDetails","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"pending","type":"uint256"},{"internalType":"uint256","name":"withdrawn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestMetrics","outputs":[{"internalType":"uint256","name":"holdersCount","type":"uint256"},{"internalType":"uint256","name":"swappedTotal","type":"uint256"},{"internalType":"uint256","name":"contractBalance","type":"uint256"},{"internalType":"uint256","name":"sharesTotal","type":"uint256"},{"internalType":"uint256","name":"dividendsTotal","type":"uint256"},{"internalType":"uint256","name":"distributedTotal","type":"uint256"},{"internalType":"uint256","name":"nextProcessingTime","type":"uint256"},{"internalType":"uint256","name":"timeUntilProcessing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardsInfo","outputs":[{"internalType":"uint256","name":"totalHolders","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"bool","name":"isProcessingAvailable","type":"bool"},{"internalType":"uint256","name":"nextProcessing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeUntilProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"pendingRewards","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRewardsReady","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastProcessedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"processingInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFeeStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"setLPPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"interval","type":"uint256"},{"internalType":"uint256","name":"batch","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setRewardsSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minSwap","type":"uint256"},{"internalType":"uint256","name":"maxSwap","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swappedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523461030d57610014600154610312565b601f81116102c3575b506008632930b4b760e11b0160015560025461003890610312565b601f8111610279575b506008632920a4a760e11b01600255600680546001600160a01b0319908116339081179092556a52b7d2dcc80cd2e400000060038190556000928352600460205260408320556a01a784379d99db42000000600a819055600b55690a968163f0a57b400000600c556005600d819055601055600e829055600f8290556011829055601282905561012c60155560148055620493e060135581541673663dc15d3c1ac63ff12e45ab68fea3f0a883c25117815560185468010000000000000000811015610265576001810180601855811015610251577fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b031916339081179091558152601960205260408120819055600354601b8190553015610200577395a7e403d7cf20f675ff9273d66e94d35ba49fa3903083526005602052604083208284526020528060408420556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a3600354906040519182527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a36040516130db908161034d8239f35b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b634e487b7160e01b82526032600452602482fd5b634e487b7160e01b82526041600452602482fd5b6002600052601f0160051c7f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace908101905b8181106102b75750610041565b600081556001016102aa565b6001600052601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101905b818110610301575061001d565b600081556001016102f4565b600080fd5b90600182811c92168015610342575b602083101461032c57565b634e487b7160e01b600052602260045260246000fd5b91607f169161032156fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816303fd2a4514611df2575080630445b66714611dd457806306fdde0314611d15578063095ea7b314611cef5780630a05cd0114611cae57806313114a9d14611c9057806318160ddd14611c7257806323b872dd14611b7e57806326987b6014611b605780632836be2414611ab457806328fd319814611a91578063313ce56714611a7557806333f3d6281461198a578063372500ab146116f1578063395924dc146115bf5780633a98ef39146115a15780633b2d081c146115835780633c590e7614611565578063429cead1146115265780634ada218b1461150057806363c98ffa146114e25780636b67c4df146114c45780636d1d59a81461146957806370a0823114611431578063715018a6146113c657806383ad7994146113a85780638731b2e9146111a55780638a24c17514610f2c5780638a8c523c14610e505780638c0b5e2214610e325780638da5cb5b14610e0b5780638f3fa86014610ded5780638f4590d214610c725780639281aa0b14610c295780639302db3e14610bbe57806395d89b4114610ab657806398118cb414610a98578063997664d714610a7a5780639c1b8af514610a5c5780639f27f00b14610a395780639fde54f5146109f0578063a9059cbb146109bf578063a98a934a146108e4578063ad29f5da1461087b578063ad523fe11461075f578063ba1066ed1461073c578063c07fbb8c14610702578063c20ab228146106dc578063d936547e1461069d578063dd62ed3e14610645578063de1c24d0146105a7578063e086e5ec146104d7578063e2d2e219146104b9578063ea05c02714610492578063efca2eed14610474578063f0425fe114610456578063f1320af214610417578063f2fde38b14610353578063f4daaba114610335578063f74fe6be14610310578063f9fc0d07146102f75763fce589d8146102d4573861000f565b346102f25760003660031901126102f2576020601254604051908152f35b600080fd5b346102f25760003660031901126102f25761001b612079565b346102f25760003660031901126102f257602061032b612055565b6040519015158152f35b346102f25760003660031901126102f2576020601454604051908152f35b346102f25760203660031901126102f25761036c611e56565b600654906001600160a01b0380831691610387833314611f22565b169182156103d3578273ffffffffffffffffffffffffffffffffffffffff19927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31617600655005b606460405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206e6577206f776e65722061646472657373000000000000006044820152fd5b346102f25760203660031901126102f2576001600160a01b03610438611e56565b166000526009602052602060ff604060002054166040519015158152f35b346102f25760003660031901126102f2576020602154604051908152f35b346102f25760003660031901126102f2576020601d54604051908152f35b346102f25760003660031901126102f25760206001600160a01b0360005416604051908152f35b346102f25760003660031901126102f2576020601e54604051908152f35b346102f25760003660031901126102f25760008080806001600160a01b0360065416610504813314611f22565b47905af13d156105a2573d67ffffffffffffffff811161058c5760405190610536601f8201601f191660200183611eb1565b8152600060203d92013e5b1561054857005b606460405162461bcd60e51b815260206004820152601560248201527f455448207769746864726177616c206661696c656400000000000000000000006044820152fd5b634e487b7160e01b600052604160045260246000fd5b610541565b346102f25760203660031901126102f2576001600160a01b036105c8611e56565b6105d782600654163314611f22565b1680156106015773ffffffffffffffffffffffffffffffffffffffff196000541617600055600080f35b606460405162461bcd60e51b815260206004820152601e60248201527f4c5020706169722063616e6e6f74206265207a65726f206164647265737300006044820152fd5b346102f25760403660031901126102f25761065e611e56565b6001600160a01b0361066e611e6c565b911660005260056020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b346102f25760203660031901126102f2576001600160a01b036106be611e56565b166000526007602052602060ff604060002054166040519015158152f35b346102f25760003660031901126102f257602060ff60065460a01c166040519015158152f35b346102f25760203660031901126102f2576001600160a01b03610723611e56565b1660005260196020526020604060002054604051908152f35b346102f25760003660031901126102f257602060ff601754166040519015158152f35b346102f25760003660031901126102f2576018546000805b828210610831576040516370a0823160e01b81523060048201528360208260248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa8015610825576000906107f2575b608092506107c9612055565b6107d860165460155490611fda565b916040519384526020840152151560408301526060820152f35b506020823d60201161081d575b8161080c60209383611eb1565b810103126102f257608091516107bd565b3d91506107ff565b6040513d6000823e3d90fd5b61087360019161086d6001600160a01b0361084b86611fe7565b90549060031b1c166001600160a01b0316600052600460205260406000205490565b90611fda565b910190610777565b346102f25760003660031901126102f2576108a26001600160a01b03600654163314611f22565b60005b6018548110156108d957806108d36001600160a01b036108c6600194611fe7565b90549060031b1c16612d77565b016108a5565b6000601b5542601655005b346102f25760003660031901126102f25760065461090c6001600160a01b0382163314611f22565b60ff8160a01c1661097b577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017600655337fadf394848f4a4640c44200e2408200a65398b3cda533d9db87526013e20c8d27600080a2005b606460405162461bcd60e51b815260206004820152601b60248201527f4d61782077616c6c657420616c72656164792064697361626c656400000000006044820152fd5b346102f25760403660031901126102f2576109e56109db611e56565b6024359033612254565b602060405160018152f35b346102f25761001b6001600160a01b03610a0936611e82565b9190610a1a82600654163314611f22565b16600052600960205260406000209060ff801983541691151516179055565b346102f25760003660031901126102f2576020610a5461202b565b604051908152f35b346102f25760003660031901126102f2576020601354604051908152f35b346102f25760003660031901126102f2576020601c54604051908152f35b346102f25760003660031901126102f2576020600e54604051908152f35b346102f25760003660031901126102f25760405160006002548060011c90600181168015610bb4575b602083108114610ba057828552908115610b7c5750600114610b1c575b610b1883610b0c81850382611eb1565b60405191829182611e0d565b0390f35b91905060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace916000905b808210610b6257509091508101602001610b0c610afc565b919260018160209254838588010152019101909291610b4a565b60ff191660208086019190915291151560051b84019091019150610b0c9050610afc565b602484634e487b7160e01b81526022600452fd5b91607f1691610adf565b346102f25760a03660031901126102f2576004356024356044356064359060843592610bf66001600160a01b03600654163314611f22565b610c1184610c0c85610c0c86610c0c878c611fda565b611fda565b94600e55600f55601055601155601255600d55600080f35b346102f25761001b6001600160a01b03610c4236611e82565b9190610c5382600654163314611f22565b16600052600760205260406000209060ff801983541691151516179055565b346102f25760403660031901126102f25760043560243590610ca06001600160a01b03600654163314611f22565b818111610da957670de0b6b3a764000069021e19e0c9bab24000008210610d65577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168103610d4f57610cfc6064916003549060011b612018565b048211610d0b57600c55600a55005b606460405162461bcd60e51b815260206004820152601260248201527f4d6178207377617020746f6f206c6172676500000000000000000000000000006044820152fd5b634e487b7160e01b600052601160045260246000fd5b606460405162461bcd60e51b815260206004820152601260248201527f4d696e207377617020746f6f20736d616c6c00000000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601c60248201527f4d696e2073776170206d757374206265203c3d206d61782073776170000000006044820152fd5b346102f25760003660031901126102f2576020600b54604051908152f35b346102f25760003660031901126102f25760206001600160a01b0360065416604051908152f35b346102f25760003660031901126102f2576020600a54604051908152f35b346102f25760003660031901126102f257600654610e786001600160a01b0382163314611f22565b60ff8160a81c16610ee8577fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017600655337f32acebb207383f6d09c833a8b6ff8e83246f4cf11637e76f9b94ef945c704a30600080a2005b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152fd5b346102f25760003660031901126102f2576001600160a01b0360065416610f54813314611f22565b6000806018545b808210611181575050604051906370a0823160e01b825230600483015260208260248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9182156108255760009261114a575b508082111561110657610fb691611f15565b9081156110c25760405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101829052602081604481600073039e2fb66102314ce7b64ce5ce3e5183bc94ad385af190811561082557600091611093575b501561104f577fb94528ab6dc2c15743a47b933115b331b7beae78712677f1e345a9f1ae84bbd160206001600160a01b036006541692604051908152a2005b606460405162461bcd60e51b815260206004820152601960248201527f537572706c7573207769746864726177616c206661696c6564000000000000006044820152fd5b6110b5915060203d6020116110bb575b6110ad8183611eb1565b810190611fc2565b82611010565b503d6110a3565b606460405162461bcd60e51b815260206004820152601660248201527f4e6f20737572706c757320746f207769746864726177000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601460248201527f4e6f20737572706c757320617661696c61626c650000000000000000000000006044820152fd5b90916020823d602011611179575b8161116560209383611eb1565b810103126111765750519083610fa4565b80fd5b3d9150611158565b909161119d60019161086d6001600160a01b0361084b87611fe7565b920190610f5b565b346102f25760603660031901126102f257600435602435604435916111d66001600160a01b03600654163314611f22565b603c811061133e57600582101580611333575b156112ca5762030d40831015806112bd575b156112535761124e7f4b4e9b2b02700f36dc5c043149dbb42bc2bf2211b35cd776181b8a9880891be293826015558360145580601355604051938493846040919493926060820195825260208201520152565b0390a1005b608460405162461bcd60e51b815260206004820152602760248201527f476173206d757374206265206265747765656e203230302c30303020616e642060448201527f3530302c303030000000000000000000000000000000000000000000000000006064820152fd5b506207a1208311156111fb565b608460405162461bcd60e51b8152602060048201526024808201527f42617463682073697a65206d757374206265206265747765656e203520616e6460448201527f20313030000000000000000000000000000000000000000000000000000000006064820152fd5b5060648211156111e9565b608460405162461bcd60e51b815260206004820152602260248201527f496e74657276616c206d757374206265206174206c656173742031206d696e7560448201527f74650000000000000000000000000000000000000000000000000000000000006064820152fd5b346102f25760003660031901126102f2576020601054604051908152f35b346102f25760003660031901126102f25773ffffffffffffffffffffffffffffffffffffffff1960065460006001600160a01b038216611407813314611f22565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a316600655005b346102f25760203660031901126102f2576020610a5461144f611e56565b6001600160a01b0316600052600460205260406000205490565b346102f25760203660031901126102f2576001600160a01b0361148a611e56565b16600052601a60205260406000208054610b1860026001840154930154604051938493846040919493926060820195825260208201520152565b346102f25760003660031901126102f2576020601154604051908152f35b346102f25760003660031901126102f2576020601654604051908152f35b346102f25760003660031901126102f257602060ff60065460a81c166040519015158152f35b346102f25760203660031901126102f2576001600160a01b03611547611e56565b166000526008602052602060ff604060002054166040519015158152f35b346102f25760003660031901126102f2576020601554604051908152f35b346102f25760003660031901126102f2576020600f54604051908152f35b346102f25760003660031901126102f2576020601b54604051908152f35b346102f25760003660031901126102f2576018546000805b8282106116cf576040516370a0823160e01b81523060048201528360208260248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa80156108255760009061169b575b61010092506000906016546015546116358183611fda565b4210611680575b60215492601b5490611654601c5493601d5495611fda565b94604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b9250611695426116908584611fda565b611f15565b9261163c565b506020823d6020116116c7575b816116b560209383611eb1565b810103126102f257610100915161161d565b3d91506116a8565b6116e960019161086d6001600160a01b0361084b86611fe7565b9101906115d7565b346102f25760003660031901126102f25733600052600860205260ff604060002054166119465761172133611f6d565b8015611902576040516370a0823160e01b815230600482015260208160248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa80156108255782916000916118cd575b50106118895761177633612e86565b33600052601a60205260026040600020015533600052601a602052600060016040822001556117a781602154611fda565b60215560405163a9059cbb60e01b815233600482015260248101829052602081604481600073039e2fb66102314ce7b64ce5ce3e5183bc94ad385af19081156108255760009161186a575b5015611826576040519081527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a60203392a2005b606460405162461bcd60e51b815260206004820152601760248201527f4661696c656420746f20636c61696d20726577617264730000000000000000006044820152fd5b611883915060203d6020116110bb576110ad8183611eb1565b826117f2565b606460405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152fd5b9150506020813d6020116118fa575b816118e960209383611eb1565b810103126102f25781905183611767565b3d91506118dc565b606460405162461bcd60e51b815260206004820152601160248201527f4e6f20536f6e696320746f20636c61696d0000000000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601c60248201527f4578636c756465642066726f6d207072696e74696e6720536f6e6963000000006044820152fd5b346102f25760403660031901126102f2576119a3611e56565b6001600160a01b038060065416916119bc833314611f22565b1673039e2fb66102314ce7b64ce5ce3e5183bc94ad388114611a315760405163a9059cbb60e01b81526001600160a01b039290921660048301526024803590830152602090829060449082906000905af1801561082557611a1957005b61001b9060203d6020116110bb576110ad8183611eb1565b606460405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420726573637565206469766964656e6420746f6b656e000000006044820152fd5b346102f25760003660031901126102f257602060405160128152f35b346102f25760203660031901126102f2576020610a54611aaf611e56565b611f6d565b346102f257611ac236611e82565b611ad86001600160a01b03600654163314611f22565b6001600160a01b0382169081600052600860205260ff6040600020541681151590151503611b0257005b816000526008602052611b258160406000209060ff801983541691151516179055565b15611b4757600052601a602052604060002054611b3e57005b61001b90612d77565b9061001b91600052600460205260406000205490612be4565b346102f25760003660031901126102f2576020601f54604051908152f35b346102f25760603660031901126102f257611b97611e56565b611b9f611e6c565b604435906001600160a01b038316600052600560205260406000206001600160a01b033316600052602052604060002054926000198403611be5575b6109e59350612254565b828410611c0857611c03611bfc846109e596611f15565b338361211a565b611bdb565b608460405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b346102f25760003660031901126102f2576020600354604051908152f35b346102f25760003660031901126102f2576020600d54604051908152f35b346102f25760203660031901126102f257610b18611cd2611ccd611e56565b611ed3565b604080519384526020840192909252908201529081906060820190565b346102f25760403660031901126102f2576109e5611d0b611e56565b602435903361211a565b346102f25760003660031901126102f25760405160006001548060011c90600181168015611dca575b602083108114610ba057828552908115610b7c5750600114611d6a57610b1883610b0c81850382611eb1565b91905060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6916000905b808210611db057509091508101602001610b0c610afc565b919260018160209254838588010152019101909291611d98565b91607f1691611d3e565b346102f25760003660031901126102f2576020600c54604051908152f35b346102f25760003660031901126102f2578061dead60209252f35b91909160208152825180602083015260005b818110611e40575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611e1f565b600435906001600160a01b03821682036102f257565b602435906001600160a01b03821682036102f257565b60409060031901126102f2576004356001600160a01b03811681036102f2579060243580151581036102f25790565b90601f8019910116810190811067ffffffffffffffff82111761058c57604052565b601b5415611f09576001600160a01b038116600052601a6020526040600020916002611f00845493611f6d565b93015491929190565b50600090600090600090565b91908203918211610d4f57565b15611f2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381169081600052601a60205260406000205415611fbb57611f9590612e86565b90600052601a60205260026040600020015480821115611fbb57611fb891611f15565b90565b5050600090565b908160209103126102f2575180151581036102f25790565b91908201809211610d4f57565b60185481101561200257601860005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b81810292918115918404141715610d4f57565b612033612055565b61205057611fb861204960165460155490611fda565b4290611f15565b600090565b61206460165460155490611fda565b42101590565b6000198114610d4f5760010190565b601354906000915b8015158061210f575b80612102575b156120ea576120d06120e4916120ca5a6120c36001600160a01b036120b6601f54611fe7565b90549060031b1c16612ec0565b5a90611f15565b90611f15565b926120dc601f5461206a565b601f5561206a565b91612081565b509050601f5460185411156120fb57565b6000601f55565b50601f5460185411612090565b50601454831061208a565b6001600160a01b03169081156121eb576001600160a01b03169182156121815760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260058252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6000928015612b7a5760065460ff8160a81c161580612b41575b612aba575b60a01c60ff1680612aa8575b80612a93575b80612a76575b80612a56575b6129ea575b6001600160a01b038216918291828652600860205260ff604087205416806129d6575b6129c8575b6001600160a01b038516938491828852600860205260ff604089205416806129b4575b6129a6575b30885260046020526040882054600c548091101580612999575b80612985575b8061296e575b80612957575b6125b2575b506001828952600760205260ff60408a205416801561259c575b612595575b88906124ff575b50826124e15761234f81600354611f15565b6003555b8161241d575b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91604051908152a3818552600860205260ff604086205416612400575b5050808352600860205260ff6040842054166123e2575b50505060ff6020541615806123d4575b6123c657565b6123ce612079565b42601655565b506123dd612055565b6123c0565b826040916123f894526004602052205490612be4565b3880806123b0565b6124169185526004602052604085205490612be4565b3880612399565b9150865260046020528060408720541061247757827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208693838a526004825260408a2061246d828254611f15565b9055915050612359565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b8288526004602052604088206124f8828254611fda565b9055612353565b6001600160a01b0389541680841490811561258b575b50612576575b801561233d5761257091308a52600460205260408a2061253c838254611fda565b9055604051828152847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203093a3611f15565b3861233d565b506064612585600d5483612018565b0461251b565b9050841438612515565b5087612336565b50838952600760205260ff60408a205416612331565b91509150600160ff196017541617601755808211600014612950575b600160ff1960205416176020556040516125e9606082611eb1565b600281526020810190604036833780511561293c5730825280516001101561293c5773039e2fb66102314ce7b64ce5ce3e5183bc94ad38604082015230156121eb573089526005602052604089207395a7e403d7cf20f675ff9273d66e94d35ba49fa38a526020528260408a20557395a7e403d7cf20f675ff9273d66e94d35ba49fa36040518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a3604051916370a0823160e01b835230600484015260208360248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9283156128b5578a93612908575b507395a7e403d7cf20f675ff9273d66e94d35ba49fa33b1561290457908960405180937f791ac94700000000000000000000000000000000000000000000000000000000825260a482019387600484015283602484015260a060448401525180945260c482019093835b8181106128df575050819293503060648301524260848301520381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af180156128d4576128c0575b506040516370a0823160e01b8152306004820152914760208460248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9384156128b55791889593918895938c9461287a575b5015158061286f575b6127f3575b50505060ff196020541660205560ff196017541660175538612317565b6128206040927fadf739c7c63bfd0af65151b852543ec098cc578a7fe24359c56c64735ed2bc3f94611f15565b61283b61271061283283601054612018565b04601c54611fda565b601c5582519182526020820152a1612851612055565b61285e575b3880806127d6565b612866612079565b42601655612856565b50601b5415156127d1565b9550925094506020843d6020116128ad575b8161289960209383611eb1565b810103126102f257879487945192386127c8565b3d915061288c565b6040513d8c823e3d90fd5b886128cd91999299611eb1565b963861277f565b6040513d8b823e3d90fd5b85516001600160a01b031683526020958601958f955087945090920191600101612741565b8980fd5b9092506020813d602011612934575b8161292460209383611eb1565b81010312612904575191386126d7565b3d9150612917565b602489634e487b7160e01b81526032600452fd5b50806125ce565b50838952600760205260ff60408a20541615612312565b50828952600760205260ff60408a2054161561230c565b506001600160a01b03895416831415612306565b5060ff6020541615612300565b6129af87612d77565b6122e6565b506001600160a01b038854168314156122e1565b6129d182612d77565b6122be565b506001600160a01b038654168314156122b9565b6001600160a01b03831684526004602052612a09816040862054611fda565b600b54101561229657606460405162461bcd60e51b815260206004820152601960248201527f4d61782077616c6c6574206c696d6974206578636565646564000000000000006044820152fd5b506001600160a01b0383168452600960205260ff60408520541615612291565b506001600160a01b038454166001600160a01b038416141561228b565b5061dead6001600160a01b0384161415612285565b506001600160a01b038316151561227f565b6001600160a01b0383168552600760205260ff6040862054168015612b22575b61227357606460405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152fd5b506001600160a01b0384168552600760205260ff604086205416612ada565b506001600160a01b03855416806001600160a01b03851614908115612b67575b5061226e565b90506001600160a01b0385161438612b61565b608460405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152fd5b6015548210612d3f576001600160a01b0381169182600052601a6020526040600020541515600014612c715780612c225750612c209150612d77565b565b9081612c46612c5d93610c0c601b5487600052601a60205260406000205490611f15565b601b5583600052601a602052604060002055612e86565b90600052601a602052600160406000200155565b90916018546801000000000000000081101561058c5783612c9b826001612cba9401601855611fe7565b9091906001600160a01b038084549260031b9316831b921b1916179055565b6018546000198101908111610d4f57612d3a93612d2091836000526019602052604060002055827f1e9d3ca67b1c89bb3673dec779c8d92fdb5f8cef5624f779c18bfdb6946845ce6020604051878152a282600052601a60205283604060002055612e86565b90600052601a602052600160406000200155601b54611fda565b601b55565b901580612d57575b612d4e5750565b612c2090612d77565b506001600160a01b038116600052601a6020526040600020541515612d47565b6018546000198101908111610d4f576001600160a01b03612d988192611fe7565b90549060031b1c1691169081600052601960205260406000205490612dc081612c9b84611fe7565b60005260196020526040600020556018548015612e705760001901612de481611fe7565b6001600160a01b0382549160031b1b191690556018558060005260196020526000604081205580600052601a602052612e24604060002054601b54611f15565b601b5580600052601a602052600060026040822082815582600182015501557f1e9d3ca67b1c89bb3673dec779c8d92fdb5f8cef5624f779c18bfdb6946845ce602060405160008152a2565b634e487b7160e01b600052603160045260246000fd5b601b5415612eba57612eb6612710916001600160a01b03601e549116600052601a60205260406000205490612018565b0490565b50600090565b6001600160a01b0381169081600052601a602052604060002054156130a157612ee881611f6d565b9081612ef357505050565b6040516370a0823160e01b815230600482015260208160248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9081156108255760009161306f575b50821115612f3f57505050565b612f4881612e86565b6000848152601a602052604081206002810192909255600190910155602154612f72908390611fda565b60215560405163a9059cbb60e01b81526001600160a01b038216600482015260248101839052602081604481600073039e2fb66102314ce7b64ce5ce3e5183bc94ad385af190811561082557600091613050575b5015612ffa575060207f07ccd18e485bb053d9974066929ac474d597f10bafa07dee4d52719a29d4bf4991604051908152a2565b9161302561304b9382600052601a602052600160406000200161301e858254611fda565b9055612e86565b90600052601a6020526130416002604060002001918254611f15565b9055602154611f15565b602155565b613069915060203d6020116110bb576110ad8183611eb1565b38612fc6565b90506020813d602011613099575b8161308a60209383611eb1565b810103126102f2575138612f32565b3d915061307d565b505056fea2646970667358221220cc47d850a5a4cd24a3b6ad31fd186c4364b796157a72cf16fc66d1f1d34fdaee64736f6c634300081c0033
Deployed Bytecode
0x608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c90816303fd2a4514611df2575080630445b66714611dd457806306fdde0314611d15578063095ea7b314611cef5780630a05cd0114611cae57806313114a9d14611c9057806318160ddd14611c7257806323b872dd14611b7e57806326987b6014611b605780632836be2414611ab457806328fd319814611a91578063313ce56714611a7557806333f3d6281461198a578063372500ab146116f1578063395924dc146115bf5780633a98ef39146115a15780633b2d081c146115835780633c590e7614611565578063429cead1146115265780634ada218b1461150057806363c98ffa146114e25780636b67c4df146114c45780636d1d59a81461146957806370a0823114611431578063715018a6146113c657806383ad7994146113a85780638731b2e9146111a55780638a24c17514610f2c5780638a8c523c14610e505780638c0b5e2214610e325780638da5cb5b14610e0b5780638f3fa86014610ded5780638f4590d214610c725780639281aa0b14610c295780639302db3e14610bbe57806395d89b4114610ab657806398118cb414610a98578063997664d714610a7a5780639c1b8af514610a5c5780639f27f00b14610a395780639fde54f5146109f0578063a9059cbb146109bf578063a98a934a146108e4578063ad29f5da1461087b578063ad523fe11461075f578063ba1066ed1461073c578063c07fbb8c14610702578063c20ab228146106dc578063d936547e1461069d578063dd62ed3e14610645578063de1c24d0146105a7578063e086e5ec146104d7578063e2d2e219146104b9578063ea05c02714610492578063efca2eed14610474578063f0425fe114610456578063f1320af214610417578063f2fde38b14610353578063f4daaba114610335578063f74fe6be14610310578063f9fc0d07146102f75763fce589d8146102d4573861000f565b346102f25760003660031901126102f2576020601254604051908152f35b600080fd5b346102f25760003660031901126102f25761001b612079565b346102f25760003660031901126102f257602061032b612055565b6040519015158152f35b346102f25760003660031901126102f2576020601454604051908152f35b346102f25760203660031901126102f25761036c611e56565b600654906001600160a01b0380831691610387833314611f22565b169182156103d3578273ffffffffffffffffffffffffffffffffffffffff19927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a31617600655005b606460405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206e6577206f776e65722061646472657373000000000000006044820152fd5b346102f25760203660031901126102f2576001600160a01b03610438611e56565b166000526009602052602060ff604060002054166040519015158152f35b346102f25760003660031901126102f2576020602154604051908152f35b346102f25760003660031901126102f2576020601d54604051908152f35b346102f25760003660031901126102f25760206001600160a01b0360005416604051908152f35b346102f25760003660031901126102f2576020601e54604051908152f35b346102f25760003660031901126102f25760008080806001600160a01b0360065416610504813314611f22565b47905af13d156105a2573d67ffffffffffffffff811161058c5760405190610536601f8201601f191660200183611eb1565b8152600060203d92013e5b1561054857005b606460405162461bcd60e51b815260206004820152601560248201527f455448207769746864726177616c206661696c656400000000000000000000006044820152fd5b634e487b7160e01b600052604160045260246000fd5b610541565b346102f25760203660031901126102f2576001600160a01b036105c8611e56565b6105d782600654163314611f22565b1680156106015773ffffffffffffffffffffffffffffffffffffffff196000541617600055600080f35b606460405162461bcd60e51b815260206004820152601e60248201527f4c5020706169722063616e6e6f74206265207a65726f206164647265737300006044820152fd5b346102f25760403660031901126102f25761065e611e56565b6001600160a01b0361066e611e6c565b911660005260056020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b346102f25760203660031901126102f2576001600160a01b036106be611e56565b166000526007602052602060ff604060002054166040519015158152f35b346102f25760003660031901126102f257602060ff60065460a01c166040519015158152f35b346102f25760203660031901126102f2576001600160a01b03610723611e56565b1660005260196020526020604060002054604051908152f35b346102f25760003660031901126102f257602060ff601754166040519015158152f35b346102f25760003660031901126102f2576018546000805b828210610831576040516370a0823160e01b81523060048201528360208260248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa8015610825576000906107f2575b608092506107c9612055565b6107d860165460155490611fda565b916040519384526020840152151560408301526060820152f35b506020823d60201161081d575b8161080c60209383611eb1565b810103126102f257608091516107bd565b3d91506107ff565b6040513d6000823e3d90fd5b61087360019161086d6001600160a01b0361084b86611fe7565b90549060031b1c166001600160a01b0316600052600460205260406000205490565b90611fda565b910190610777565b346102f25760003660031901126102f2576108a26001600160a01b03600654163314611f22565b60005b6018548110156108d957806108d36001600160a01b036108c6600194611fe7565b90549060031b1c16612d77565b016108a5565b6000601b5542601655005b346102f25760003660031901126102f25760065461090c6001600160a01b0382163314611f22565b60ff8160a01c1661097b577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017600655337fadf394848f4a4640c44200e2408200a65398b3cda533d9db87526013e20c8d27600080a2005b606460405162461bcd60e51b815260206004820152601b60248201527f4d61782077616c6c657420616c72656164792064697361626c656400000000006044820152fd5b346102f25760403660031901126102f2576109e56109db611e56565b6024359033612254565b602060405160018152f35b346102f25761001b6001600160a01b03610a0936611e82565b9190610a1a82600654163314611f22565b16600052600960205260406000209060ff801983541691151516179055565b346102f25760003660031901126102f2576020610a5461202b565b604051908152f35b346102f25760003660031901126102f2576020601354604051908152f35b346102f25760003660031901126102f2576020601c54604051908152f35b346102f25760003660031901126102f2576020600e54604051908152f35b346102f25760003660031901126102f25760405160006002548060011c90600181168015610bb4575b602083108114610ba057828552908115610b7c5750600114610b1c575b610b1883610b0c81850382611eb1565b60405191829182611e0d565b0390f35b91905060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace916000905b808210610b6257509091508101602001610b0c610afc565b919260018160209254838588010152019101909291610b4a565b60ff191660208086019190915291151560051b84019091019150610b0c9050610afc565b602484634e487b7160e01b81526022600452fd5b91607f1691610adf565b346102f25760a03660031901126102f2576004356024356044356064359060843592610bf66001600160a01b03600654163314611f22565b610c1184610c0c85610c0c86610c0c878c611fda565b611fda565b94600e55600f55601055601155601255600d55600080f35b346102f25761001b6001600160a01b03610c4236611e82565b9190610c5382600654163314611f22565b16600052600760205260406000209060ff801983541691151516179055565b346102f25760403660031901126102f25760043560243590610ca06001600160a01b03600654163314611f22565b818111610da957670de0b6b3a764000069021e19e0c9bab24000008210610d65577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168103610d4f57610cfc6064916003549060011b612018565b048211610d0b57600c55600a55005b606460405162461bcd60e51b815260206004820152601260248201527f4d6178207377617020746f6f206c6172676500000000000000000000000000006044820152fd5b634e487b7160e01b600052601160045260246000fd5b606460405162461bcd60e51b815260206004820152601260248201527f4d696e207377617020746f6f20736d616c6c00000000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601c60248201527f4d696e2073776170206d757374206265203c3d206d61782073776170000000006044820152fd5b346102f25760003660031901126102f2576020600b54604051908152f35b346102f25760003660031901126102f25760206001600160a01b0360065416604051908152f35b346102f25760003660031901126102f2576020600a54604051908152f35b346102f25760003660031901126102f257600654610e786001600160a01b0382163314611f22565b60ff8160a81c16610ee8577fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017600655337f32acebb207383f6d09c833a8b6ff8e83246f4cf11637e76f9b94ef945c704a30600080a2005b606460405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152fd5b346102f25760003660031901126102f2576001600160a01b0360065416610f54813314611f22565b6000806018545b808210611181575050604051906370a0823160e01b825230600483015260208260248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9182156108255760009261114a575b508082111561110657610fb691611f15565b9081156110c25760405163a9059cbb60e01b81526001600160a01b0391909116600482015260248101829052602081604481600073039e2fb66102314ce7b64ce5ce3e5183bc94ad385af190811561082557600091611093575b501561104f577fb94528ab6dc2c15743a47b933115b331b7beae78712677f1e345a9f1ae84bbd160206001600160a01b036006541692604051908152a2005b606460405162461bcd60e51b815260206004820152601960248201527f537572706c7573207769746864726177616c206661696c6564000000000000006044820152fd5b6110b5915060203d6020116110bb575b6110ad8183611eb1565b810190611fc2565b82611010565b503d6110a3565b606460405162461bcd60e51b815260206004820152601660248201527f4e6f20737572706c757320746f207769746864726177000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601460248201527f4e6f20737572706c757320617661696c61626c650000000000000000000000006044820152fd5b90916020823d602011611179575b8161116560209383611eb1565b810103126111765750519083610fa4565b80fd5b3d9150611158565b909161119d60019161086d6001600160a01b0361084b87611fe7565b920190610f5b565b346102f25760603660031901126102f257600435602435604435916111d66001600160a01b03600654163314611f22565b603c811061133e57600582101580611333575b156112ca5762030d40831015806112bd575b156112535761124e7f4b4e9b2b02700f36dc5c043149dbb42bc2bf2211b35cd776181b8a9880891be293826015558360145580601355604051938493846040919493926060820195825260208201520152565b0390a1005b608460405162461bcd60e51b815260206004820152602760248201527f476173206d757374206265206265747765656e203230302c30303020616e642060448201527f3530302c303030000000000000000000000000000000000000000000000000006064820152fd5b506207a1208311156111fb565b608460405162461bcd60e51b8152602060048201526024808201527f42617463682073697a65206d757374206265206265747765656e203520616e6460448201527f20313030000000000000000000000000000000000000000000000000000000006064820152fd5b5060648211156111e9565b608460405162461bcd60e51b815260206004820152602260248201527f496e74657276616c206d757374206265206174206c656173742031206d696e7560448201527f74650000000000000000000000000000000000000000000000000000000000006064820152fd5b346102f25760003660031901126102f2576020601054604051908152f35b346102f25760003660031901126102f25773ffffffffffffffffffffffffffffffffffffffff1960065460006001600160a01b038216611407813314611f22565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a316600655005b346102f25760203660031901126102f2576020610a5461144f611e56565b6001600160a01b0316600052600460205260406000205490565b346102f25760203660031901126102f2576001600160a01b0361148a611e56565b16600052601a60205260406000208054610b1860026001840154930154604051938493846040919493926060820195825260208201520152565b346102f25760003660031901126102f2576020601154604051908152f35b346102f25760003660031901126102f2576020601654604051908152f35b346102f25760003660031901126102f257602060ff60065460a81c166040519015158152f35b346102f25760203660031901126102f2576001600160a01b03611547611e56565b166000526008602052602060ff604060002054166040519015158152f35b346102f25760003660031901126102f2576020601554604051908152f35b346102f25760003660031901126102f2576020600f54604051908152f35b346102f25760003660031901126102f2576020601b54604051908152f35b346102f25760003660031901126102f2576018546000805b8282106116cf576040516370a0823160e01b81523060048201528360208260248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa80156108255760009061169b575b61010092506000906016546015546116358183611fda565b4210611680575b60215492601b5490611654601c5493601d5495611fda565b94604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b9250611695426116908584611fda565b611f15565b9261163c565b506020823d6020116116c7575b816116b560209383611eb1565b810103126102f257610100915161161d565b3d91506116a8565b6116e960019161086d6001600160a01b0361084b86611fe7565b9101906115d7565b346102f25760003660031901126102f25733600052600860205260ff604060002054166119465761172133611f6d565b8015611902576040516370a0823160e01b815230600482015260208160248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa80156108255782916000916118cd575b50106118895761177633612e86565b33600052601a60205260026040600020015533600052601a602052600060016040822001556117a781602154611fda565b60215560405163a9059cbb60e01b815233600482015260248101829052602081604481600073039e2fb66102314ce7b64ce5ce3e5183bc94ad385af19081156108255760009161186a575b5015611826576040519081527fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a60203392a2005b606460405162461bcd60e51b815260206004820152601760248201527f4661696c656420746f20636c61696d20726577617264730000000000000000006044820152fd5b611883915060203d6020116110bb576110ad8183611eb1565b826117f2565b606460405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e63650000006044820152fd5b9150506020813d6020116118fa575b816118e960209383611eb1565b810103126102f25781905183611767565b3d91506118dc565b606460405162461bcd60e51b815260206004820152601160248201527f4e6f20536f6e696320746f20636c61696d0000000000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152601c60248201527f4578636c756465642066726f6d207072696e74696e6720536f6e6963000000006044820152fd5b346102f25760403660031901126102f2576119a3611e56565b6001600160a01b038060065416916119bc833314611f22565b1673039e2fb66102314ce7b64ce5ce3e5183bc94ad388114611a315760405163a9059cbb60e01b81526001600160a01b039290921660048301526024803590830152602090829060449082906000905af1801561082557611a1957005b61001b9060203d6020116110bb576110ad8183611eb1565b606460405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420726573637565206469766964656e6420746f6b656e000000006044820152fd5b346102f25760003660031901126102f257602060405160128152f35b346102f25760203660031901126102f2576020610a54611aaf611e56565b611f6d565b346102f257611ac236611e82565b611ad86001600160a01b03600654163314611f22565b6001600160a01b0382169081600052600860205260ff6040600020541681151590151503611b0257005b816000526008602052611b258160406000209060ff801983541691151516179055565b15611b4757600052601a602052604060002054611b3e57005b61001b90612d77565b9061001b91600052600460205260406000205490612be4565b346102f25760003660031901126102f2576020601f54604051908152f35b346102f25760603660031901126102f257611b97611e56565b611b9f611e6c565b604435906001600160a01b038316600052600560205260406000206001600160a01b033316600052602052604060002054926000198403611be5575b6109e59350612254565b828410611c0857611c03611bfc846109e596611f15565b338361211a565b611bdb565b608460405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152fd5b346102f25760003660031901126102f2576020600354604051908152f35b346102f25760003660031901126102f2576020600d54604051908152f35b346102f25760203660031901126102f257610b18611cd2611ccd611e56565b611ed3565b604080519384526020840192909252908201529081906060820190565b346102f25760403660031901126102f2576109e5611d0b611e56565b602435903361211a565b346102f25760003660031901126102f25760405160006001548060011c90600181168015611dca575b602083108114610ba057828552908115610b7c5750600114611d6a57610b1883610b0c81850382611eb1565b91905060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6916000905b808210611db057509091508101602001610b0c610afc565b919260018160209254838588010152019101909291611d98565b91607f1691611d3e565b346102f25760003660031901126102f2576020600c54604051908152f35b346102f25760003660031901126102f2578061dead60209252f35b91909160208152825180602083015260005b818110611e40575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611e1f565b600435906001600160a01b03821682036102f257565b602435906001600160a01b03821682036102f257565b60409060031901126102f2576004356001600160a01b03811681036102f2579060243580151581036102f25790565b90601f8019910116810190811067ffffffffffffffff82111761058c57604052565b601b5415611f09576001600160a01b038116600052601a6020526040600020916002611f00845493611f6d565b93015491929190565b50600090600090600090565b91908203918211610d4f57565b15611f2957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6001600160a01b0381169081600052601a60205260406000205415611fbb57611f9590612e86565b90600052601a60205260026040600020015480821115611fbb57611fb891611f15565b90565b5050600090565b908160209103126102f2575180151581036102f25790565b91908201809211610d4f57565b60185481101561200257601860005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b81810292918115918404141715610d4f57565b612033612055565b61205057611fb861204960165460155490611fda565b4290611f15565b600090565b61206460165460155490611fda565b42101590565b6000198114610d4f5760010190565b601354906000915b8015158061210f575b80612102575b156120ea576120d06120e4916120ca5a6120c36001600160a01b036120b6601f54611fe7565b90549060031b1c16612ec0565b5a90611f15565b90611f15565b926120dc601f5461206a565b601f5561206a565b91612081565b509050601f5460185411156120fb57565b6000601f55565b50601f5460185411612090565b50601454831061208a565b6001600160a01b03169081156121eb576001600160a01b03169182156121815760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260058252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6000928015612b7a5760065460ff8160a81c161580612b41575b612aba575b60a01c60ff1680612aa8575b80612a93575b80612a76575b80612a56575b6129ea575b6001600160a01b038216918291828652600860205260ff604087205416806129d6575b6129c8575b6001600160a01b038516938491828852600860205260ff604089205416806129b4575b6129a6575b30885260046020526040882054600c548091101580612999575b80612985575b8061296e575b80612957575b6125b2575b506001828952600760205260ff60408a205416801561259c575b612595575b88906124ff575b50826124e15761234f81600354611f15565b6003555b8161241d575b60207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91604051908152a3818552600860205260ff604086205416612400575b5050808352600860205260ff6040842054166123e2575b50505060ff6020541615806123d4575b6123c657565b6123ce612079565b42601655565b506123dd612055565b6123c0565b826040916123f894526004602052205490612be4565b3880806123b0565b6124169185526004602052604085205490612be4565b3880612399565b9150865260046020528060408720541061247757827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208693838a526004825260408a2061246d828254611f15565b9055915050612359565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b8288526004602052604088206124f8828254611fda565b9055612353565b6001600160a01b0389541680841490811561258b575b50612576575b801561233d5761257091308a52600460205260408a2061253c838254611fda565b9055604051828152847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203093a3611f15565b3861233d565b506064612585600d5483612018565b0461251b565b9050841438612515565b5087612336565b50838952600760205260ff60408a205416612331565b91509150600160ff196017541617601755808211600014612950575b600160ff1960205416176020556040516125e9606082611eb1565b600281526020810190604036833780511561293c5730825280516001101561293c5773039e2fb66102314ce7b64ce5ce3e5183bc94ad38604082015230156121eb573089526005602052604089207395a7e403d7cf20f675ff9273d66e94d35ba49fa38a526020528260408a20557395a7e403d7cf20f675ff9273d66e94d35ba49fa36040518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a3604051916370a0823160e01b835230600484015260208360248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9283156128b5578a93612908575b507395a7e403d7cf20f675ff9273d66e94d35ba49fa33b1561290457908960405180937f791ac94700000000000000000000000000000000000000000000000000000000825260a482019387600484015283602484015260a060448401525180945260c482019093835b8181106128df575050819293503060648301524260848301520381837395a7e403d7cf20f675ff9273d66e94d35ba49fa35af180156128d4576128c0575b506040516370a0823160e01b8152306004820152914760208460248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9384156128b55791889593918895938c9461287a575b5015158061286f575b6127f3575b50505060ff196020541660205560ff196017541660175538612317565b6128206040927fadf739c7c63bfd0af65151b852543ec098cc578a7fe24359c56c64735ed2bc3f94611f15565b61283b61271061283283601054612018565b04601c54611fda565b601c5582519182526020820152a1612851612055565b61285e575b3880806127d6565b612866612079565b42601655612856565b50601b5415156127d1565b9550925094506020843d6020116128ad575b8161289960209383611eb1565b810103126102f257879487945192386127c8565b3d915061288c565b6040513d8c823e3d90fd5b886128cd91999299611eb1565b963861277f565b6040513d8b823e3d90fd5b85516001600160a01b031683526020958601958f955087945090920191600101612741565b8980fd5b9092506020813d602011612934575b8161292460209383611eb1565b81010312612904575191386126d7565b3d9150612917565b602489634e487b7160e01b81526032600452fd5b50806125ce565b50838952600760205260ff60408a20541615612312565b50828952600760205260ff60408a2054161561230c565b506001600160a01b03895416831415612306565b5060ff6020541615612300565b6129af87612d77565b6122e6565b506001600160a01b038854168314156122e1565b6129d182612d77565b6122be565b506001600160a01b038654168314156122b9565b6001600160a01b03831684526004602052612a09816040862054611fda565b600b54101561229657606460405162461bcd60e51b815260206004820152601960248201527f4d61782077616c6c6574206c696d6974206578636565646564000000000000006044820152fd5b506001600160a01b0383168452600960205260ff60408520541615612291565b506001600160a01b038454166001600160a01b038416141561228b565b5061dead6001600160a01b0384161415612285565b506001600160a01b038316151561227f565b6001600160a01b0383168552600760205260ff6040862054168015612b22575b61227357606460405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c6564207965740000000000000000006044820152fd5b506001600160a01b0384168552600760205260ff604086205416612ada565b506001600160a01b03855416806001600160a01b03851614908115612b67575b5061226e565b90506001600160a01b0385161438612b61565b608460405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152fd5b6015548210612d3f576001600160a01b0381169182600052601a6020526040600020541515600014612c715780612c225750612c209150612d77565b565b9081612c46612c5d93610c0c601b5487600052601a60205260406000205490611f15565b601b5583600052601a602052604060002055612e86565b90600052601a602052600160406000200155565b90916018546801000000000000000081101561058c5783612c9b826001612cba9401601855611fe7565b9091906001600160a01b038084549260031b9316831b921b1916179055565b6018546000198101908111610d4f57612d3a93612d2091836000526019602052604060002055827f1e9d3ca67b1c89bb3673dec779c8d92fdb5f8cef5624f779c18bfdb6946845ce6020604051878152a282600052601a60205283604060002055612e86565b90600052601a602052600160406000200155601b54611fda565b601b55565b901580612d57575b612d4e5750565b612c2090612d77565b506001600160a01b038116600052601a6020526040600020541515612d47565b6018546000198101908111610d4f576001600160a01b03612d988192611fe7565b90549060031b1c1691169081600052601960205260406000205490612dc081612c9b84611fe7565b60005260196020526040600020556018548015612e705760001901612de481611fe7565b6001600160a01b0382549160031b1b191690556018558060005260196020526000604081205580600052601a602052612e24604060002054601b54611f15565b601b5580600052601a602052600060026040822082815582600182015501557f1e9d3ca67b1c89bb3673dec779c8d92fdb5f8cef5624f779c18bfdb6946845ce602060405160008152a2565b634e487b7160e01b600052603160045260246000fd5b601b5415612eba57612eb6612710916001600160a01b03601e549116600052601a60205260406000205490612018565b0490565b50600090565b6001600160a01b0381169081600052601a602052604060002054156130a157612ee881611f6d565b9081612ef357505050565b6040516370a0823160e01b815230600482015260208160248173039e2fb66102314ce7b64ce5ce3e5183bc94ad385afa9081156108255760009161306f575b50821115612f3f57505050565b612f4881612e86565b6000848152601a602052604081206002810192909255600190910155602154612f72908390611fda565b60215560405163a9059cbb60e01b81526001600160a01b038216600482015260248101839052602081604481600073039e2fb66102314ce7b64ce5ce3e5183bc94ad385af190811561082557600091613050575b5015612ffa575060207f07ccd18e485bb053d9974066929ac474d597f10bafa07dee4d52719a29d4bf4991604051908152a2565b9161302561304b9382600052601a602052600160406000200161301e858254611fda565b9055612e86565b90600052601a6020526130416002604060002001918254611f15565b9055602154611f15565b602155565b613069915060203d6020116110bb576110ad8183611eb1565b38612fc6565b90506020813d602011613099575b8161308a60209383611eb1565b810103126102f2575138612f32565b3d915061307d565b505056fea2646970667358221220cc47d850a5a4cd24a3b6ad31fd186c4364b796157a72cf16fc66d1f1d34fdaee64736f6c634300081c0033
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.