ERC-20
Overview
Max Total Supply
100,000,000,000 LunaT
Holders
398
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
13,287,031.85787227 LunaTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
LUNATICS
Compiler Version
v0.8.15+commit.e14f2714
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.15; // SAFEMATH LIBRARY // This version of SafeMath should only be used with Solidity 0.8 or later library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Auth { address internal owner; mapping(address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } /** * Function modifier to require caller to be contract owner */ modifier onlyOwner() { require(isOwner(msg.sender), "Not owner"); _; } /** * Function modifier to require caller to be authorized */ modifier authorized() { require(isAuthorized(msg.sender), "Not authorized"); _; } /** * Authorize address. Owner only */ function authorize(address adr) public onlyOwner { authorizations[adr] = true; } /** * Remove address' authorization. Owner only */ function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Return address' authorization status */ function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } /** * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20 REWARD_TOKEN = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599); //mainnet address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //mainnet IDEXRouter router; 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 hours; uint256 public minDistribution = 100000; uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor(address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _token = msg.sender; } function setRewardToken(address _rewardToken) external onlyToken { REWARD_TOKEN = IERC20(_rewardToken); } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } 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.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit() external payable override onlyToken { uint256 balanceBefore = REWARD_TOKEN.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(REWARD_TOKEN); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: msg.value }(0, path, address(this), block.timestamp); uint256 amount = REWARD_TOKEN.balanceOf(address(this)).sub( balanceBefore ); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(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.add(gasLeft.sub(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.add(amount); REWARD_TOKEN.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(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.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } 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(); } } contract LUNATICS is IERC20, Auth { using SafeMath for uint256; uint256 public constant MASK = type(uint128).max; address REWARD_TOKEN = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; //mainnet address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //mainnet address constant DEAD = 0x000000000000000000000000000000000000dEaD; address constant ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "Lunatics"; string constant _symbol = "LunaT"; uint8 constant _decimals = 9; uint256 _totalSupply = 1_00_000_000_000 * (10**_decimals); mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isDividendExempt; uint256 liquidityFee = 100; uint256 reflectionFee = 300; uint256 marketingFee = 300; uint256 burnFee = 100; uint256 totalFee = 800; uint256 feeDenominator = 10000; address public marketingFeeReceiver; IDEXRouter public router; address public pair; bool public tradingEnabled = false; DividendDistributor distributor; address public distributorAddress; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 2000; // 0.005% bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor() Auth(msg.sender) { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = _totalSupply; WETH = router.WETH(); distributor = new DividendDistributor( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); distributorAddress = address(distributor); isFeeExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isFeeExempt[DEAD] = true; isFeeExempt[ZERO] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isFeeExempt[ZERO] = true; marketingFeeReceiver = 0x5bc9cF0933adFeFC9F5ea55E294c4Cd580b97Dfd; approve(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, _totalSupply); approve(address(pair), _totalSupply); _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } 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 approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } 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] != _totalSupply) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] .sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { if (!isOwner(sender)) { require(tradingEnabled, "Trading is disabled"); } if (inSwap) { return _basicTransfer(sender, recipient, amount); } if(sender != pair && recipient != pair) { return _basicTransfer(sender, recipient, amount); } if (shouldSwapBack()) { swapBack(); } _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if (!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if (!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { if(isFeeExempt[sender] || isFeeExempt[recipient]){return false;} else{return true;} } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee - burnFee).div(feeDenominator); uint256 burnFeeAmount = amount.mul(burnFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); _balances[DEAD] = _balances[DEAD].add(burnFeeAmount); emit Transfer(sender, DEAD, burnFeeAmount); return amount.sub(feeAmount + burnFeeAmount); } function setIsFeeExempt(address wallet, bool value) public authorized { isFeeExempt[wallet] = value; } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 amountToLiquify = swapThreshold .mul(liquidityFee) .div(totalFee) .div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH .mul(liquidityFee) .div(totalETHFee) .div(2); uint256 amountETHReflection = amountETH.mul(reflectionFee).div( totalETHFee ); uint256 amountETHMarketing = amountETH.mul(marketingFee).div( totalETHFee ); try distributor.deposit{value: amountETHReflection}() {} catch {} payable(marketingFeeReceiver).transfer(amountETHMarketing); if (amountToLiquify > 0) { router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, owner, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } // Trading once enabled, can't be disabled function enableTrading() external onlyOwner { tradingEnabled = true; } function setIsDividendExempt(address holder, bool exempt) public authorized { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0); } else { distributor.setShare(holder, _balances[holder]); } } function setAreDividendAndFeeExempt(address[] calldata wallets, bool exempt) external authorized { for (uint256 i = 0; i < wallets.length; i++) { setIsDividendExempt(wallets[i], exempt); setIsFeeExempt(wallets[i], exempt); } } function setFees( uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _burnFee ) external authorized { liquidityFee = _liquidityFee; reflectionFee = _reflectionFee; marketingFee = _marketingFee; burnFee = _burnFee; totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add( burnFee ); require(totalFee <= 2500, "Fees must be less than 25%"); } function setFeeReceivers(address _marketingFeeReceiver) external authorized { marketingFeeReceiver = _marketingFeeReceiver; } function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized { swapEnabled = _enabled; swapThreshold = _amount; } function setRewardToken(address newToken) external authorized { require(newToken != address(0), "Invalid address"); distributor.setRewardToken(newToken); REWARD_TOKEN = newToken; } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external authorized { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external authorized { require(gas < 750000, "Inappropriate gas amount"); distributorGas = gas; } function clearStuckBalance() external authorized { uint256 amountETH = address(this).balance; payable(msg.sender).transfer(amountETH); } function clearStuckTokens(address _tokenContract) public authorized { require( _tokenContract != address(this), "Cannot withdraw native token" ); IERC20 tokenContract = IERC20(_tokenContract); tokenContract.transfer( msg.sender, tokenContract.balanceOf(address(this)) ); } function Airdrop(address[] memory addresses, uint256[] memory amounts) external authorized { require( addresses.length == amounts.length, "Airdrop: addresses and amounts length mismatch" ); for (uint256 i = 0; i < addresses.length; i++) { _basicTransfer(msg.sender, addresses[i], amounts[i]); } } event AutoLiquify(uint256 amountETH, uint256 amount); }
{ "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":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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"adr","type":"address"}],"name":"authorize","outputs":[],"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":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setAreDividendAndFeeExempt","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":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"setFees","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":"wallet","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b0319908116732260fac5e5542a773aa44fbcfedf7c193bc2c599179091556003805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556200005a6009600a62000653565b6200006b9064174876e8006200066b565b60048190556064600981905561012c600a819055600b55600c55610320600d55612710600e556011805460ff60a01b191690556207a1206014556015805460ff19166001179055620000c1906107d0906200068d565b601655348015620000d157600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560108054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017e9190620006b0565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f69190620006b0565b601180546001600160a01b0319166001600160a01b039283161790556004805430600090815260066020908152604080832060108054881685529083529281902093909355905482516315ab88c960e31b8152925194169363ad5c464893838101938290030181865afa15801562000272573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002989190620006b0565b600380546001600160a01b0319166001600160a01b0392909216919091179055604051737a250d5630b4cf539739df2c5dacb4c659f2488d90620002dc9062000532565b6001600160a01b039091168152602001604051809103906000f08015801562000309573d6000803e3d6000fd5b50601280546001600160a01b039283166001600160a01b03199182168117909255601380548216909217909155336000908152600760208181526040808420805460ff1990811660019081179092553080875283872080548316841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548316841790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548316841781556011549099168752600885528387208054831684179055865291852080548316821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168217905593805291905283541617909155600f8054909116735bc9cf0933adfefc9f5ea55e294c4cd580b97dfd1790556004546200045690737a250d5630b4cf539739df2c5dacb4c659f2488d90620004c4565b5060115460045462000472916001600160a01b031690620004c4565b5060045433600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006db565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620005209086815260200190565b60405180910390a35060015b92915050565b610e9080620029aa83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005975781600019048211156200057b576200057b62000540565b808516156200058957918102915b93841c93908002906200055b565b509250929050565b600082620005b0575060016200052c565b81620005bf575060006200052c565b8160018114620005d85760028114620005e35762000603565b60019150506200052c565b60ff841115620005f757620005f762000540565b50506001821b6200052c565b5060208310610133831016604e8410600b841016171562000628575081810a6200052c565b62000634838362000556565b80600019048211156200064b576200064b62000540565b029392505050565b60006200066460ff8416836200059f565b9392505050565b600081600019048311821515161562000688576200068862000540565b500290565b600082620006ab57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620006c357600080fd5b81516001600160a01b03811681146200066457600080fd5b6122bf80620006eb6000396000f3fe60806040526004361061023f5760003560e01c80638a8c523c1161012e578063dd62ed3e116100ab578063f0b37c041161006f578063f0b37c0414610745578063f2fde38b14610765578063f708a64f14610785578063f887ea40146107a5578063fe9fbb80146107c557600080fd5b8063dd62ed3e1461067b578063df20fd49146106c1578063e01bb688146106e1578063e91f214e14610701578063e96fada21461072557600080fd5b8063a8aa1b31116100f2578063a8aa1b31146105db578063a9059cbb146105fb578063ad5c46481461061b578063b6a5d7de1461063b578063c558ae6b1461065b57600080fd5b80638a8c523c146105385780638aee81271461054d57806395d89b411461056d5780639d1944f51461059b578063a51af4c5146105bb57600080fd5b80633f4218e0116101bc57806365d43ac71161018057806365d43ac7146104765780636ddd1713146104965780636fcba377146104b057806370a08231146104d0578063893d20e81461050657600080fd5b80633f4218e0146103b55780634355855a146103e55780634ada218b14610415578063571ac8b014610436578063658d4b7f1461045657600080fd5b80632d48e896116102035780632d48e896146103135780632f54bf6e14610335578063313ce56714610364578063346cc7be14610380578063364333f4146103a057600080fd5b80630445b6671461024b57806306fdde0314610274578063095ea7b3146102ae57806318160ddd146102de57806323b872dd146102f357600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026160165481565b6040519081526020015b60405180910390f35b34801561028057600080fd5b506040805180820190915260088152674c756e617469637360c01b60208201525b60405161026b9190611c7f565b3480156102ba57600080fd5b506102ce6102c9366004611cec565b6107e5565b604051901515815260200161026b565b3480156102ea57600080fd5b50600454610261565b3480156102ff57600080fd5b506102ce61030e366004611d18565b610852565b34801561031f57600080fd5b5061033361032e366004611d59565b610916565b005b34801561034157600080fd5b506102ce610350366004611d7b565b6000546001600160a01b0391821691161490565b34801561037057600080fd5b506040516009815260200161026b565b34801561038c57600080fd5b5061033361039b366004611d7b565b6109ae565b3480156103ac57600080fd5b50610333610b13565b3480156103c157600080fd5b506102ce6103d0366004611d7b565b60076020526000908152604090205460ff1681565b3480156103f157600080fd5b506102ce610400366004611d7b565b60086020526000908152604090205460ff1681565b34801561042157600080fd5b506011546102ce90600160a01b900460ff1681565b34801561044257600080fd5b506102ce610451366004611d7b565b610b6b565b34801561046257600080fd5b50610333610471366004611da6565b610b79565b34801561048257600080fd5b50610333610491366004611ddf565b610bc9565b3480156104a257600080fd5b506015546102ce9060ff1681565b3480156104bc57600080fd5b506103336104cb366004611e65565b610c71565b3480156104dc57600080fd5b506102616104eb366004611d7b565b6001600160a01b031660009081526005602052604090205490565b34801561051257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026b565b34801561054457600080fd5b50610333610d16565b34801561055957600080fd5b50610333610568366004611d7b565b610d55565b34801561057957600080fd5b50604080518082019091526005815264131d5b985560da1b60208201526102a1565b3480156105a757600080fd5b506103336105b6366004611e97565b610e44565b3480156105c757600080fd5b50601354610520906001600160a01b031681565b3480156105e757600080fd5b50601154610520906001600160a01b031681565b34801561060757600080fd5b506102ce610616366004611cec565b610ec0565b34801561062757600080fd5b50600354610520906001600160a01b031681565b34801561064757600080fd5b50610333610656366004611d7b565b610ecd565b34801561066757600080fd5b50610333610676366004611f86565b610f1e565b34801561068757600080fd5b50610261610696366004612048565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106cd57600080fd5b506103336106dc366004612076565b611007565b3480156106ed57600080fd5b506103336106fc366004611d7b565b611043565b34801561070d57600080fd5b506102616fffffffffffffffffffffffffffffffff81565b34801561073157600080fd5b50600f54610520906001600160a01b031681565b34801561075157600080fd5b50610333610760366004611d7b565b61108a565b34801561077157600080fd5b50610333610780366004611d7b565b6110d5565b34801561079157600080fd5b506103336107a0366004611da6565b61116b565b3480156107b157600080fd5b50601054610520906001600160a01b031681565b3480156107d157600080fd5b506102ce6107e0366004611d7b565b61126f565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108409086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b0384166000908152600660209081526040808320338452909152812054909114610901576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546108dc91849061128d565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61090c8484846112b9565b90505b9392505050565b61091f3361126f565b6109445760405162461bcd60e51b815260040161093b90612094565b60405180910390fd5b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050505050565b6109b73361126f565b6109d35760405162461bcd60e51b815260040161093b90612094565b306001600160a01b03821603610a2b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e00000000604482015260640161093b565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9f91906120bc565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e91906120d5565b505050565b610b1c3361126f565b610b385760405162461bcd60e51b815260040161093b90612094565b6040514790339082156108fc029083906000818181858888f19350505050158015610b67573d6000803e3d6000fd5b5050565b600061084c826004546107e5565b610b823361126f565b610b9e5760405162461bcd60e51b815260040161093b90612094565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b610bd23361126f565b610bee5760405162461bcd60e51b815260040161093b90612094565b60005b82811015610c6b57610c29848483818110610c0e57610c0e6120f2565b9050602002016020810190610c239190611d7b565b8361116b565b610c59848483818110610c3e57610c3e6120f2565b9050602002016020810190610c539190611d7b565b83610b79565b80610c638161211e565b915050610bf1565b50505050565b610c7a3361126f565b610c965760405162461bcd60e51b815260040161093b90612094565b6009849055600a839055600b829055600c819055610cc081610cba8481888861161d565b9061161d565b600d8190556109c41015610c6b5760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e20323525000000000000604482015260640161093b565b6000546001600160a01b03163314610d405760405162461bcd60e51b815260040161093b90612137565b6011805460ff60a01b1916600160a01b179055565b610d5e3361126f565b610d7a5760405162461bcd60e51b815260040161093b90612094565b6001600160a01b038116610dc25760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161093b565b601254604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401600060405180830381600087803b158015610e0957600080fd5b505af1158015610e1d573d6000803e3d6000fd5b5050600280546001600160a01b0319166001600160a01b0394909416939093179092555050565b610e4d3361126f565b610e695760405162461bcd60e51b815260040161093b90612094565b620b71b08110610ebb5760405162461bcd60e51b815260206004820152601860248201527f496e617070726f7072696174652067617320616d6f756e740000000000000000604482015260640161093b565b601455565b600061090f3384846112b9565b6000546001600160a01b03163314610ef75760405162461bcd60e51b815260040161093b90612137565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610f273361126f565b610f435760405162461bcd60e51b815260040161093b90612094565b8051825114610fab5760405162461bcd60e51b815260206004820152602e60248201527f41697264726f703a2061646472657373657320616e6420616d6f756e7473206c60448201526d0cadccee8d040dad2e6dac2e8c6d60931b606482015260840161093b565b60005b8251811015610b0e57610ff433848381518110610fcd57610fcd6120f2565b6020026020010151848481518110610fe757610fe76120f2565b6020026020010151611629565b5080610fff8161211e565b915050610fae565b6110103361126f565b61102c5760405162461bcd60e51b815260040161093b90612094565b6015805460ff191692151592909217909155601655565b61104c3361126f565b6110685760405162461bcd60e51b815260040161093b90612094565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110b45760405162461bcd60e51b815260040161093b90612137565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146110ff5760405162461bcd60e51b815260040161093b90612137565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6111743361126f565b6111905760405162461bcd60e51b815260040161093b90612094565b6001600160a01b03821630148015906111b757506011546001600160a01b03838116911614155b6111c057600080fd5b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561122657601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610978565b6012546001600160a01b0383811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610978565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156112b15760405162461bcd60e51b815260040161093b9190611c7f565b505050900390565b600080546001600160a01b0385811691161461131e57601154600160a01b900460ff1661131e5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161093b565b60175460ff161561133b57611334848484611629565b905061090f565b6011546001600160a01b0385811691161480159061136757506011546001600160a01b03848116911614155b1561137757611334848484611629565b61137f6116fd565b1561138c5761138c61174e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546113de91849061128d565b6001600160a01b0385166000908152600560205260408120919091556114048585611aa8565b61140e5782611418565b6114188584611afc565b6001600160a01b03851660009081526005602052604090205490915061143e908261161d565b6001600160a01b0380861660009081526005602090815260408083209490945591881681526008909152205460ff166114e2576012546001600160a01b0386811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156114cf57600080fd5b505af19250505080156114e0575060015b505b6001600160a01b03841660009081526008602052604090205460ff16611573576012546001600160a01b0385811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561156057600080fd5b505af1925050508015611571575060015b505b6012546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916115ab9160040190815260200190565b600060405180830381600087803b1580156115c557600080fd5b505af19250505080156115d6575060015b50836001600160a01b0316856001600160a01b031660008051602061226a8339815191528360405161160a91815260200190565b60405180910390a3506001949350505050565b600061090f828461215a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461167a91849061128d565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546116a9908361161d565b6001600160a01b03808516600081815260056020526040908190209390935591519086169060008051602061226a833981519152906116eb9086815260200190565b60405180910390a35060019392505050565b6011546000906001600160a01b0316331480159061171e575060175460ff16155b801561172c575060155460ff165b801561174957506016543060009081526005602052604090205410155b905090565b6017805460ff19166001179055600d546009546016546000926117819260029261177b9291839190611c5b565b90611c67565b9050600061179a82601654611c7390919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117d4576117d46120f2565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611805576118056120f2565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81524792919091169063791ac9479061184f908690600090879030904290600401612172565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b5050505060006118968247611c7390919063ffffffff16565b905060006118bc6118b36002600954611c6790919063ffffffff16565b600d5490611c73565b905060006118de600261177b8461177b60095488611c5b90919063ffffffff16565b905060006118fb8361177b600a5487611c5b90919063ffffffff16565b905060006119188461177b600b5488611c5b90919063ffffffff16565b9050601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561196a57600080fd5b505af19350505050801561197c575060015b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156119b7573d6000803e3d6000fd5b508815611a93576010546000805460405163f305d71960e01b8152306004820152602481018d90526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611a31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a5691906121e3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6001600160a01b03821660009081526007602052604081205460ff1680611ae757506001600160a01b03821660009081526007602052604090205460ff165b15611af45750600061084c565b50600161084c565b600080611b1f600e5461177b600c54600d54611b189190612211565b8690611c5b565b90506000611b3e600e5461177b600c5487611c5b90919063ffffffff16565b30600090815260056020526040902054909150611b5b908361161d565b30600081815260056020526040908190209290925590516001600160a01b0387169060008051602061226a83398151915290611b9a9086815260200190565b60405180910390a361dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54611bd9908261161d565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b0387169060008051602061226a83398151915290611c369085815260200190565b60405180910390a3611c52611c4b828461215a565b8590611c73565b95945050505050565b600061090f8284612228565b600061090f8284612247565b600061090f8284612211565b600060208083528351808285015260005b81811015611cac57858101830151858201604001528201611c90565b81811115611cbe576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611ce957600080fd5b50565b60008060408385031215611cff57600080fd5b8235611d0a81611cd4565b946020939093013593505050565b600080600060608486031215611d2d57600080fd5b8335611d3881611cd4565b92506020840135611d4881611cd4565b929592945050506040919091013590565b60008060408385031215611d6c57600080fd5b50508035926020909101359150565b600060208284031215611d8d57600080fd5b813561090f81611cd4565b8015158114611ce957600080fd5b60008060408385031215611db957600080fd5b8235611dc481611cd4565b91506020830135611dd481611d98565b809150509250929050565b600080600060408486031215611df457600080fd5b833567ffffffffffffffff80821115611e0c57600080fd5b818601915086601f830112611e2057600080fd5b813581811115611e2f57600080fd5b8760208260051b8501011115611e4457600080fd5b60209283019550935050840135611e5a81611d98565b809150509250925092565b60008060008060808587031215611e7b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611ea957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611eef57611eef611eb0565b604052919050565b600067ffffffffffffffff821115611f1157611f11611eb0565b5060051b60200190565b600082601f830112611f2c57600080fd5b81356020611f41611f3c83611ef7565b611ec6565b82815260059290921b84018101918181019086841115611f6057600080fd5b8286015b84811015611f7b5780358352918301918301611f64565b509695505050505050565b60008060408385031215611f9957600080fd5b823567ffffffffffffffff80821115611fb157600080fd5b818501915085601f830112611fc557600080fd5b81356020611fd5611f3c83611ef7565b82815260059290921b84018101918181019089841115611ff457600080fd5b948201945b8386101561201b57853561200c81611cd4565b82529482019490820190611ff9565b9650508601359250508082111561203157600080fd5b5061203e85828601611f1b565b9150509250929050565b6000806040838503121561205b57600080fd5b823561206681611cd4565b91506020830135611dd481611cd4565b6000806040838503121561208957600080fd5b8235611d0a81611d98565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6000602082840312156120ce57600080fd5b5051919050565b6000602082840312156120e757600080fd5b815161090f81611d98565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161213057612130612108565b5060010190565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b6000821982111561216d5761216d612108565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c25784516001600160a01b03168352938301939183019160010161219d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156121f857600080fd5b8351925060208401519150604084015190509250925092565b60008282101561222357612223612108565b500390565b600081600019048311821515161561224257612242612108565b500290565b60008261226457634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122097c240b7cc7ba84e4e9fc544e5527d3e33df62fb4013bb4b4d1e09a31536452364736f6c634300080f00336080604052600180546001600160a01b0319908116732260fac5e5542a773aa44fbcfedf7c193bc2c599179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55620186a0600e5534801561007857600080fd5b50604051610e90380380610e90833981016040819052610097916100f1565b6001600160a01b0381166100bf57737a250d5630b4cf539739df2c5dacb4c659f2488d6100c1565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610121565b60006020828403121561010357600080fd5b81516001600160a01b038116811461011a57600080fd5b9392505050565b610d60806101306000396000f3fe6080604052600436106100e85760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed1461024f578063f0fc6bca14610265578063ffb2c4791461027a578063ffd49c841461029a57600080fd5b8063997664d7146101c4578063ce7c2ac2146101da578063d0e30db014610231578063e2d2e2191461023957600080fd5b80632d48e896116100c65780632d48e896146101585780633a98ef39146101785780634fab0ae81461018e5780638aee8127146101a457600080fd5b806311ce023d146100ed57806314b6ca961461011657806328fd319814610138575b600080fd5b3480156100f957600080fd5b50610103600c5481565b6040519081526020015b60405180910390f35b34801561012257600080fd5b50610136610131366004610b3a565b6102b0565b005b34801561014457600080fd5b50610103610153366004610b64565b610428565b34801561016457600080fd5b50610136610173366004610b7f565b6104b3565b34801561018457600080fd5b5061010360085481565b34801561019a57600080fd5b50610103600e5481565b3480156101b057600080fd5b506101366101bf366004610b64565b6104d5565b3480156101d057600080fd5b5061010360095481565b3480156101e657600080fd5b506102166101f5366004610b64565b60076020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161010d565b61013661050e565b34801561024557600080fd5b50610103600b5481565b34801561025b57600080fd5b50610103600a5481565b34801561027157600080fd5b5061013661073d565b34801561028657600080fd5b50610136610295366004610ba1565b610748565b3480156102a657600080fd5b50610103600d5481565b6000546001600160a01b031633146102c757600080fd5b6001600160a01b038216600090815260076020526040902054156102ee576102ee8261084c565b60008111801561031457506001600160a01b038216600090815260076020526040902054155b1561037a57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556103ad565b8015801561039f57506001600160a01b03821660009081526007602052604090205415155b156103ad576103ad8261096a565b6001600160a01b0382166000908152600760205260409020546008546103de9183916103d891610a7f565b90610a92565b6008556001600160a01b038216600090815260076020526040902081905561040581610a9e565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b038116600090815260076020526040812054810361044f57506000919050565b6001600160a01b03821660009081526007602052604081205461047190610a9e565b6001600160a01b0384166000908152600760205260409020600101549091508082116104a1575060009392505050565b6104ab8282610a7f565b949350505050565b6000546001600160a01b031633146104ca57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104ec57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461052557600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190610bba565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906105d8576105d8610bd3565b6001600160a01b039283166020918202929092010152600180548351921691839190811061060857610608610bd3565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061064e90600090869030904290600401610be9565b6000604051808303818588803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106fb93508692506001600160a01b03909116906370a0823190602401602060405180830381865afa1580156106d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f59190610bba565b90610a7f565b60095490915061070b9082610a92565b600955600854600c546107359161072c916107269085610ac1565b90610acd565b600b5490610a92565b600b55505050565b6107463361084c565b565b6000546001600160a01b0316331461075f57600080fd5b600454600081900361076f575050565b6000805a905060005b848310801561078657508381105b156108455783600f541061079a576000600f555b6107cc6004600f54815481106107b2576107b2610bd3565b6000918252602090912001546001600160a01b0316610ad9565b15610803576108036004600f54815481106107e9576107e9610bd3565b6000918252602090912001546001600160a01b031661084c565b6108186108115a8490610a7f565b8490610a92565b92505a600f8054919350600061082d83610c69565b9190505550808061083d90610c69565b915050610778565b5050505050565b6001600160a01b038116600090815260076020526040812054900361086e5750565b600061087982610428565b9050801561096657600a5461088e9082610a92565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156108e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109089190610c82565b506001600160a01b0382166000908152600660209081526040808320429055600790915290206002015461093c9082610a92565b6001600160a01b038316600090815260076020526040902060028101919091555461040590610a9e565b5050565b6004805461097a90600190610ca4565b8154811061098a5761098a610bd3565b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109c8576109c8610bd3565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610a1490600190610ca4565b81548110610a2457610a24610bd3565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a5a57610a5a610cbb565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a8b8284610ca4565b9392505050565b6000610a8b8284610cd1565b6000610abb600c54610726600b5485610ac190919063ffffffff16565b92915050565b6000610a8b8284610ce9565b6000610a8b8284610d08565b600d546001600160a01b03821660009081526006602052604081205490914291610b039190610cd1565b108015610abb5750600e54610b1783610428565b1192915050565b80356001600160a01b0381168114610b3557600080fd5b919050565b60008060408385031215610b4d57600080fd5b610b5683610b1e565b946020939093013593505050565b600060208284031215610b7657600080fd5b610a8b82610b1e565b60008060408385031215610b9257600080fd5b50508035926020909101359150565b600060208284031215610bb357600080fd5b5035919050565b600060208284031215610bcc57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c335784516001600160a01b031683529383019391830191600101610c0e565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610c7b57610c7b610c53565b5060010190565b600060208284031215610c9457600080fd5b81518015158114610a8b57600080fd5b600082821015610cb657610cb6610c53565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115610ce457610ce4610c53565b500190565b6000816000190483118215151615610d0357610d03610c53565b500290565b600082610d2557634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a47e7db70fdc4194e1f7164f2f585e3bd852be947520f4e08c9bd692da3b044664736f6c634300080f0033
Deployed Bytecode
0x60806040526004361061023f5760003560e01c80638a8c523c1161012e578063dd62ed3e116100ab578063f0b37c041161006f578063f0b37c0414610745578063f2fde38b14610765578063f708a64f14610785578063f887ea40146107a5578063fe9fbb80146107c557600080fd5b8063dd62ed3e1461067b578063df20fd49146106c1578063e01bb688146106e1578063e91f214e14610701578063e96fada21461072557600080fd5b8063a8aa1b31116100f2578063a8aa1b31146105db578063a9059cbb146105fb578063ad5c46481461061b578063b6a5d7de1461063b578063c558ae6b1461065b57600080fd5b80638a8c523c146105385780638aee81271461054d57806395d89b411461056d5780639d1944f51461059b578063a51af4c5146105bb57600080fd5b80633f4218e0116101bc57806365d43ac71161018057806365d43ac7146104765780636ddd1713146104965780636fcba377146104b057806370a08231146104d0578063893d20e81461050657600080fd5b80633f4218e0146103b55780634355855a146103e55780634ada218b14610415578063571ac8b014610436578063658d4b7f1461045657600080fd5b80632d48e896116102035780632d48e896146103135780632f54bf6e14610335578063313ce56714610364578063346cc7be14610380578063364333f4146103a057600080fd5b80630445b6671461024b57806306fdde0314610274578063095ea7b3146102ae57806318160ddd146102de57806323b872dd146102f357600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026160165481565b6040519081526020015b60405180910390f35b34801561028057600080fd5b506040805180820190915260088152674c756e617469637360c01b60208201525b60405161026b9190611c7f565b3480156102ba57600080fd5b506102ce6102c9366004611cec565b6107e5565b604051901515815260200161026b565b3480156102ea57600080fd5b50600454610261565b3480156102ff57600080fd5b506102ce61030e366004611d18565b610852565b34801561031f57600080fd5b5061033361032e366004611d59565b610916565b005b34801561034157600080fd5b506102ce610350366004611d7b565b6000546001600160a01b0391821691161490565b34801561037057600080fd5b506040516009815260200161026b565b34801561038c57600080fd5b5061033361039b366004611d7b565b6109ae565b3480156103ac57600080fd5b50610333610b13565b3480156103c157600080fd5b506102ce6103d0366004611d7b565b60076020526000908152604090205460ff1681565b3480156103f157600080fd5b506102ce610400366004611d7b565b60086020526000908152604090205460ff1681565b34801561042157600080fd5b506011546102ce90600160a01b900460ff1681565b34801561044257600080fd5b506102ce610451366004611d7b565b610b6b565b34801561046257600080fd5b50610333610471366004611da6565b610b79565b34801561048257600080fd5b50610333610491366004611ddf565b610bc9565b3480156104a257600080fd5b506015546102ce9060ff1681565b3480156104bc57600080fd5b506103336104cb366004611e65565b610c71565b3480156104dc57600080fd5b506102616104eb366004611d7b565b6001600160a01b031660009081526005602052604090205490565b34801561051257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026b565b34801561054457600080fd5b50610333610d16565b34801561055957600080fd5b50610333610568366004611d7b565b610d55565b34801561057957600080fd5b50604080518082019091526005815264131d5b985560da1b60208201526102a1565b3480156105a757600080fd5b506103336105b6366004611e97565b610e44565b3480156105c757600080fd5b50601354610520906001600160a01b031681565b3480156105e757600080fd5b50601154610520906001600160a01b031681565b34801561060757600080fd5b506102ce610616366004611cec565b610ec0565b34801561062757600080fd5b50600354610520906001600160a01b031681565b34801561064757600080fd5b50610333610656366004611d7b565b610ecd565b34801561066757600080fd5b50610333610676366004611f86565b610f1e565b34801561068757600080fd5b50610261610696366004612048565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106cd57600080fd5b506103336106dc366004612076565b611007565b3480156106ed57600080fd5b506103336106fc366004611d7b565b611043565b34801561070d57600080fd5b506102616fffffffffffffffffffffffffffffffff81565b34801561073157600080fd5b50600f54610520906001600160a01b031681565b34801561075157600080fd5b50610333610760366004611d7b565b61108a565b34801561077157600080fd5b50610333610780366004611d7b565b6110d5565b34801561079157600080fd5b506103336107a0366004611da6565b61116b565b3480156107b157600080fd5b50601054610520906001600160a01b031681565b3480156107d157600080fd5b506102ce6107e0366004611d7b565b61126f565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108409086815260200190565b60405180910390a35060015b92915050565b6004546001600160a01b0384166000908152600660209081526040808320338452909152812054909114610901576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546108dc91849061128d565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b61090c8484846112b9565b90505b9392505050565b61091f3361126f565b6109445760405162461bcd60e51b815260040161093b90612094565b60405180910390fd5b6012546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050505050565b6109b73361126f565b6109d35760405162461bcd60e51b815260040161093b90612094565b306001600160a01b03821603610a2b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74207769746864726177206e617469766520746f6b656e00000000604482015260640161093b565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9f91906120bc565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e91906120d5565b505050565b610b1c3361126f565b610b385760405162461bcd60e51b815260040161093b90612094565b6040514790339082156108fc029083906000818181858888f19350505050158015610b67573d6000803e3d6000fd5b5050565b600061084c826004546107e5565b610b823361126f565b610b9e5760405162461bcd60e51b815260040161093b90612094565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b610bd23361126f565b610bee5760405162461bcd60e51b815260040161093b90612094565b60005b82811015610c6b57610c29848483818110610c0e57610c0e6120f2565b9050602002016020810190610c239190611d7b565b8361116b565b610c59848483818110610c3e57610c3e6120f2565b9050602002016020810190610c539190611d7b565b83610b79565b80610c638161211e565b915050610bf1565b50505050565b610c7a3361126f565b610c965760405162461bcd60e51b815260040161093b90612094565b6009849055600a839055600b829055600c819055610cc081610cba8481888861161d565b9061161d565b600d8190556109c41015610c6b5760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e20323525000000000000604482015260640161093b565b6000546001600160a01b03163314610d405760405162461bcd60e51b815260040161093b90612137565b6011805460ff60a01b1916600160a01b179055565b610d5e3361126f565b610d7a5760405162461bcd60e51b815260040161093b90612094565b6001600160a01b038116610dc25760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015260640161093b565b601254604051638aee812760e01b81526001600160a01b03838116600483015290911690638aee812790602401600060405180830381600087803b158015610e0957600080fd5b505af1158015610e1d573d6000803e3d6000fd5b5050600280546001600160a01b0319166001600160a01b0394909416939093179092555050565b610e4d3361126f565b610e695760405162461bcd60e51b815260040161093b90612094565b620b71b08110610ebb5760405162461bcd60e51b815260206004820152601860248201527f496e617070726f7072696174652067617320616d6f756e740000000000000000604482015260640161093b565b601455565b600061090f3384846112b9565b6000546001600160a01b03163314610ef75760405162461bcd60e51b815260040161093b90612137565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610f273361126f565b610f435760405162461bcd60e51b815260040161093b90612094565b8051825114610fab5760405162461bcd60e51b815260206004820152602e60248201527f41697264726f703a2061646472657373657320616e6420616d6f756e7473206c60448201526d0cadccee8d040dad2e6dac2e8c6d60931b606482015260840161093b565b60005b8251811015610b0e57610ff433848381518110610fcd57610fcd6120f2565b6020026020010151848481518110610fe757610fe76120f2565b6020026020010151611629565b5080610fff8161211e565b915050610fae565b6110103361126f565b61102c5760405162461bcd60e51b815260040161093b90612094565b6015805460ff191692151592909217909155601655565b61104c3361126f565b6110685760405162461bcd60e51b815260040161093b90612094565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110b45760405162461bcd60e51b815260040161093b90612137565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146110ff5760405162461bcd60e51b815260040161093b90612137565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6111743361126f565b6111905760405162461bcd60e51b815260040161093b90612094565b6001600160a01b03821630148015906111b757506011546001600160a01b03838116911614155b6111c057600080fd5b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561122657601254604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610978565b6012546001600160a01b0383811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610978565b6001600160a01b031660009081526001602052604090205460ff1690565b600081848411156112b15760405162461bcd60e51b815260040161093b9190611c7f565b505050900390565b600080546001600160a01b0385811691161461131e57601154600160a01b900460ff1661131e5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161093b565b60175460ff161561133b57611334848484611629565b905061090f565b6011546001600160a01b0385811691161480159061136757506011546001600160a01b03848116911614155b1561137757611334848484611629565b61137f6116fd565b1561138c5761138c61174e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600590915291909120546113de91849061128d565b6001600160a01b0385166000908152600560205260408120919091556114048585611aa8565b61140e5782611418565b6114188584611afc565b6001600160a01b03851660009081526005602052604090205490915061143e908261161d565b6001600160a01b0380861660009081526005602090815260408083209490945591881681526008909152205460ff166114e2576012546001600160a01b0386811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156114cf57600080fd5b505af19250505080156114e0575060015b505b6001600160a01b03841660009081526008602052604090205460ff16611573576012546001600160a01b0385811660008181526005602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561156057600080fd5b505af1925050508015611571575060015b505b6012546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916115ab9160040190815260200190565b600060405180830381600087803b1580156115c557600080fd5b505af19250505080156115d6575060015b50836001600160a01b0316856001600160a01b031660008051602061226a8339815191528360405161160a91815260200190565b60405180910390a3506001949350505050565b600061090f828461215a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260059091529182205461167a91849061128d565b6001600160a01b0380861660009081526005602052604080822093909355908516815220546116a9908361161d565b6001600160a01b03808516600081815260056020526040908190209390935591519086169060008051602061226a833981519152906116eb9086815260200190565b60405180910390a35060019392505050565b6011546000906001600160a01b0316331480159061171e575060175460ff16155b801561172c575060155460ff165b801561174957506016543060009081526005602052604090205410155b905090565b6017805460ff19166001179055600d546009546016546000926117819260029261177b9291839190611c5b565b90611c67565b9050600061179a82601654611c7390919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106117d4576117d46120f2565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611805576118056120f2565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81524792919091169063791ac9479061184f908690600090879030904290600401612172565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b5050505060006118968247611c7390919063ffffffff16565b905060006118bc6118b36002600954611c6790919063ffffffff16565b600d5490611c73565b905060006118de600261177b8461177b60095488611c5b90919063ffffffff16565b905060006118fb8361177b600a5487611c5b90919063ffffffff16565b905060006119188461177b600b5488611c5b90919063ffffffff16565b9050601260009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561196a57600080fd5b505af19350505050801561197c575060015b50600f546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156119b7573d6000803e3d6000fd5b508815611a93576010546000805460405163f305d71960e01b8152306004820152602481018d90526044810183905260648101929092526001600160a01b0390811660848301524260a48301529091169063f305d71990859060c40160606040518083038185885af1158015611a31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a5691906121e3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805460ff1916905550505050505050565b6001600160a01b03821660009081526007602052604081205460ff1680611ae757506001600160a01b03821660009081526007602052604090205460ff165b15611af45750600061084c565b50600161084c565b600080611b1f600e5461177b600c54600d54611b189190612211565b8690611c5b565b90506000611b3e600e5461177b600c5487611c5b90919063ffffffff16565b30600090815260056020526040902054909150611b5b908361161d565b30600081815260056020526040908190209290925590516001600160a01b0387169060008051602061226a83398151915290611b9a9086815260200190565b60405180910390a361dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54611bd9908261161d565b61dead600081905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b0387169060008051602061226a83398151915290611c369085815260200190565b60405180910390a3611c52611c4b828461215a565b8590611c73565b95945050505050565b600061090f8284612228565b600061090f8284612247565b600061090f8284612211565b600060208083528351808285015260005b81811015611cac57858101830151858201604001528201611c90565b81811115611cbe576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611ce957600080fd5b50565b60008060408385031215611cff57600080fd5b8235611d0a81611cd4565b946020939093013593505050565b600080600060608486031215611d2d57600080fd5b8335611d3881611cd4565b92506020840135611d4881611cd4565b929592945050506040919091013590565b60008060408385031215611d6c57600080fd5b50508035926020909101359150565b600060208284031215611d8d57600080fd5b813561090f81611cd4565b8015158114611ce957600080fd5b60008060408385031215611db957600080fd5b8235611dc481611cd4565b91506020830135611dd481611d98565b809150509250929050565b600080600060408486031215611df457600080fd5b833567ffffffffffffffff80821115611e0c57600080fd5b818601915086601f830112611e2057600080fd5b813581811115611e2f57600080fd5b8760208260051b8501011115611e4457600080fd5b60209283019550935050840135611e5a81611d98565b809150509250925092565b60008060008060808587031215611e7b57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215611ea957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611eef57611eef611eb0565b604052919050565b600067ffffffffffffffff821115611f1157611f11611eb0565b5060051b60200190565b600082601f830112611f2c57600080fd5b81356020611f41611f3c83611ef7565b611ec6565b82815260059290921b84018101918181019086841115611f6057600080fd5b8286015b84811015611f7b5780358352918301918301611f64565b509695505050505050565b60008060408385031215611f9957600080fd5b823567ffffffffffffffff80821115611fb157600080fd5b818501915085601f830112611fc557600080fd5b81356020611fd5611f3c83611ef7565b82815260059290921b84018101918181019089841115611ff457600080fd5b948201945b8386101561201b57853561200c81611cd4565b82529482019490820190611ff9565b9650508601359250508082111561203157600080fd5b5061203e85828601611f1b565b9150509250929050565b6000806040838503121561205b57600080fd5b823561206681611cd4565b91506020830135611dd481611cd4565b6000806040838503121561208957600080fd5b8235611d0a81611d98565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6000602082840312156120ce57600080fd5b5051919050565b6000602082840312156120e757600080fd5b815161090f81611d98565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161213057612130612108565b5060010190565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b6000821982111561216d5761216d612108565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c25784516001600160a01b03168352938301939183019160010161219d565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156121f857600080fd5b8351925060208401519150604084015190509250925092565b60008282101561222357612223612108565b500390565b600081600019048311821515161561224257612242612108565b500290565b60008261226457634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122097c240b7cc7ba84e4e9fc544e5527d3e33df62fb4013bb4b4d1e09a31536452364736f6c634300080f0033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.