ERC-20
Overview
Max Total Supply
100,000,000 $NXCP
Holders
71
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
5,000,000 $NXCPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
NyxCipher
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** *Submitted for verification at Etherscan.io on 2024-09-20 */ /** ███╗░░██╗██╗░░░██╗██╗░░██╗░█████╗░██╗██████╗░██╗░░██╗███████╗██████╗░ ████╗░██║╚██╗░██╔╝╚██╗██╔╝██╔══██╗██║██╔══██╗██║░░██║██╔════╝██╔══██╗ ██╔██╗██║░╚████╔╝░░╚███╔╝░██║░░╚═╝██║██████╔╝███████║█████╗░░██████╔╝ ██║╚████║░░╚██╔╝░░░██╔██╗░██║░░██╗██║██╔═══╝░██╔══██║██╔══╝░░██╔══██╗ ██║░╚███║░░░██║░░░██╔╝╚██╗╚█████╔╝██║██║░░░░░██║░░██║███████╗██║░░██║ ╚═╝░░╚══╝░░░╚═╝░░░╚═╝░░╚═╝░╚════╝░╚═╝╚═╝░░░░░╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝ 𝙰𝚗 𝙰𝙸-𝚙𝚘𝚠𝚎𝚛𝚎𝚍 𝚂𝚘𝚕𝚒𝚍𝚒𝚝𝚢 𝚂𝚖𝚊𝚛𝚝 𝙲𝚘𝚗𝚝𝚛𝚊𝚌𝚝 𝙰𝚞𝚍𝚒𝚝𝚘𝚛 𝚝𝚑𝚊𝚝 𝚞𝚜𝚎𝚜 𝙰𝙸 𝚝𝚘 𝚊𝚗𝚊𝚕𝚢𝚣𝚎 𝚊𝚗𝚍 𝚊𝚞𝚍𝚒𝚝 𝚜𝚖𝚊𝚛𝚝 𝚌𝚘𝚗𝚝𝚛𝚊𝚌𝚝 𝚌𝚘𝚍𝚎, 𝚏𝚒𝚗𝚍𝚜 𝚎𝚛𝚛𝚘𝚛𝚜 𝚊𝚗𝚍 𝚟𝚞𝚕𝚗𝚎𝚛𝚊𝚋𝚒𝚕𝚒𝚝𝚒𝚎𝚜, 𝚊𝚗𝚍 𝚙𝚛𝚘𝚟𝚒𝚍𝚎𝚜 𝚍𝚎𝚝𝚊𝚒𝚕𝚎𝚍 𝚛𝚎𝚙𝚘𝚛𝚝𝚜 𝚏𝚘𝚛 𝚜𝚎𝚌𝚞𝚛𝚎 𝚊𝚗𝚍 𝚎𝚛𝚛𝚘𝚛-𝚏𝚛𝚎𝚎 𝚜𝚖𝚊𝚛𝚝 𝚌𝚘𝚗𝚝𝚛𝚊𝚌𝚝𝚜. Home Page https://nyxcipher.ai/ Web App https://app.nyxcipher.ai/ Join our Telegram! https://t.me/nyxcipherportal Twitter https://x.com/nyxcipherai */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.24; 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 ); } interface IFactoryV2 { event PairCreated( address indexed token0, address indexed token1, address lpPair, uint ); function getPair( address tokenA, address tokenB ) external view returns (address lpPair); function createPair( address tokenA, address tokenB ) external returns (address lpPair); } interface IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function sync() external; } interface IRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface Initializer { function setLaunch( address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec ) external; function getConfig() external returns (address, address); function getInits(uint256 amount) external returns (uint256, uint256); function setLpPair(address pair, bool enabled) external; } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract NyxCipher is IERC20 { using SafeMath for uint256; mapping(address => uint256) private _tOwned; mapping(address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _liquidityHolders; mapping(address => bool) private _isExcludedFromProtection; mapping(address => bool) private _isExcludedFromFees; uint256 private constant startingSupply = 100_000_000; string private constant _name = "NYX CIPHER"; string private constant _symbol = "$NXCP"; uint8 private constant _decimals = 8; uint256 private constant _tTotal = startingSupply * 10 ** _decimals; // Add these as state variables uint256 public constant initialTaxRate = 2500; // 25% uint256 public constant finalTaxRate = 500; // 5% uint256 public constant taxReductionPerMinute = 500; // 5% reduction per minute uint256 public constant maxReductionMinutes = 4; // Tax reduces for 4 minutes (25% -> 5%) struct Fees { uint16 buyFee; uint16 sellFee; uint16 transferFee; } struct Ratios { uint16 marketing; uint16 development; uint16 buyBackBurnLP; uint16 totalSwap; } // Define the Lock struct to store the amount and release time of locked tokens struct Lock { uint256 totalAmount; // Total tokens to be vested/locked uint256 releaseTime; // Time when initial lock period ends uint256 vestingStart; // When vesting starts (after lock period) uint256 vestingDuration; // Total duration for linear vesting uint256 claimed; // Tokens that have been claimed already } // Set the vesting parameters uint256 public constant TEAM_LOCK_PERIOD = 90 days; // 3 months lock period uint256 public constant TEAM_VESTING_DURATION = 720 days; // 24 months for vesting Fees public _taxRates = Fees({buyFee: 500, sellFee: 500, transferFee: 0}); Ratios public _ratios = Ratios({ marketing: 2, development: 2, buyBackBurnLP: 1, totalSwap: 5 }); uint256 public constant maxBuyTaxes = 1000; uint256 public constant maxSellTaxes = 1000; uint256 public constant maxTransferTaxes = 1000; uint256 constant masterTaxDivisor = 10000; // Mapping to keep track of locked tokens and their release times for each address mapping(address => Lock) public lockedTokens; bool public taxesAreLocked; IRouter02 public dexRouter; address public lpPair; address public constant DEAD = 0x000000000000000000000000000000000000dEaD; struct TaxWallets { address payable marketing; address payable development; address payable buyBackBurnLP; } TaxWallets public _taxWallets = TaxWallets({ marketing: payable(0x0000000000000000000000000000000000000000), development: payable(0x0000000000000000000000000000000000000000), buyBackBurnLP: payable(0x0000000000000000000000000000000000000000) }); bool inSwap; bool public contractSwapEnabled = false; uint256 public swapThreshold = _tTotal / 10000; uint256 public swapAmount = _tTotal / 10000; bool public piContractSwapsEnabled = false; uint256 public piSwapPercent = 10; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; Initializer initializer; uint256 public launchStamp; uint256 public maxTransferAmount; // Maximum transfer amount (1% of total supply) uint256 public maxWalletAmount; // Maximum wallet amount (1% of total supply) event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountCurrency, uint256 amountTokens); modifier inSwapFlag() { inSwap = true; _; inSwap = false; } constructor( address payable marketingWallet, address payable developmentWallet, address payable buyBackBurnLPWallet, address payable teamFoundationWallet ) payable { // Set the owner. _owner = msg.sender; _tOwned[_owner] = _tTotal; emit Transfer(address(0), _owner, _tTotal); // Exclude certain addresses from fees _isExcludedFromFees[_owner] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[_owner] = true; _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH) _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH) // Set the tax wallets _taxWallets = TaxWallets({ marketing: marketingWallet, development: developmentWallet, buyBackBurnLP: buyBackBurnLPWallet }); // Distribute initial supply to designated wallets uint256 marketingTokens = (_tTotal * 10) / 100; uint256 developmentTokens = (_tTotal * 5) / 100; uint256 teamFoundationTokens = (_tTotal * 15) / 100; _tOwned[marketingWallet] = marketingTokens; _tOwned[developmentWallet] = developmentTokens; _tOwned[teamFoundationWallet] = teamFoundationTokens; // Set up the teamFoundationWallet's lock and vesting lockedTokens[teamFoundationWallet] = Lock({ totalAmount: (_tTotal * 15) / 100, // 15% of total supply releaseTime: block.timestamp + TEAM_LOCK_PERIOD, // Lock for 3 months vestingStart: block.timestamp + TEAM_LOCK_PERIOD, // Vesting starts after 3 months vestingDuration: TEAM_VESTING_DURATION, // Linear vesting over 24 months claimed: 0 // No tokens claimed initially }); // Initialize max transfer and holding limits as 1% of total supply maxTransferAmount = _tTotal / 100; // 1% of total supply maxWalletAmount = _tTotal / 100; // 1% of total supply // Adjust owner's balance _tOwned[_owner] = _tTotal - (marketingTokens + developmentTokens + teamFoundationTokens); emit Transfer(_owner, marketingWallet, marketingTokens); emit Transfer(_owner, developmentWallet, developmentTokens); emit Transfer(_owner, teamFoundationWallet, teamFoundationTokens); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. address private _owner; modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; } event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); function transferOwner(address newOwner) external onlyOwner { require( newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address." ); require( newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address." ); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if (balanceOf(_owner) > 0) { finalizeTransfer( _owner, newOwner, balanceOf(_owner), false, false, true ); } address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function renounceOwnership() external onlyOwner { require( tradingEnabled, "Cannot renounce until trading has been enabled." ); setExcludedFromFees(_owner, false); address oldOwner = _owner; _owner = address(0); emit OwnershipTransferred(oldOwner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== receive() external payable {} function totalSupply() external pure override returns (uint256) { return _tTotal; } 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 allowance( address holder, address spender ) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function approve( address spender, uint256 amount ) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve( address sender, address spender, uint256 amount ) internal { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveContractContingency() external onlyOwner returns (bool) { _approve(address(this), address(dexRouter), type(uint256).max); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= _allowances[sender][msg.sender].sub(amount); } return _transfer(sender, recipient, amount); } function setNewRouter(address newRouter) external onlyOwner { require(!_hasLiqBeenAdded, "Cannot change after liquidity."); IRouter02 _newRouter = IRouter02(newRouter); address get_pair = IFactoryV2(_newRouter.factory()).getPair( address(this), _newRouter.WETH() ); lpPairs[lpPair] = false; if (get_pair == address(0)) { lpPair = IFactoryV2(_newRouter.factory()).createPair( address(this), _newRouter.WETH() ); } else { lpPair = get_pair; } dexRouter = _newRouter; lpPairs[lpPair] = true; _approve(address(this), address(dexRouter), type(uint256).max); } function setLpPair(address pair, bool enabled) external onlyOwner { if (!enabled) { lpPairs[pair] = false; initializer.setLpPair(pair, false); } else { if (timeSinceLastPair != 0) { require( block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown." ); } require(!lpPairs[pair], "Pair already added to list."); lpPairs[pair] = true; timeSinceLastPair = block.timestamp; initializer.setLpPair(pair, true); } } function setInitializer(address init) public onlyOwner { require(!tradingEnabled); require(init != address(this), "Can't be self."); initializer = Initializer(init); try initializer.getConfig() returns ( address router, address constructorLP ) { dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; _approve(_owner, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); } catch { revert(); } } function isExcludedFromFees(address account) external view returns (bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees( address account, bool enabled ) public onlyOwner { _isExcludedFromFees[account] = enabled; } function isExcludedFromProtection( address account ) external view returns (bool) { return _isExcludedFromProtection[account]; } function setExcludedFromProtection( address account, bool enabled ) external onlyOwner { _isExcludedFromProtection[account] = enabled; } function getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } function lockTaxes() external onlyOwner { // This will lock taxes at their current value forever, do not call this unless you're sure. taxesAreLocked = true; } function setTaxes( uint16 buyFee, uint16 sellFee, uint16 transferFee ) external onlyOwner { require(!taxesAreLocked, "Taxes are locked."); require( buyFee <= maxBuyTaxes && sellFee <= maxSellTaxes && transferFee <= maxTransferTaxes, "Cannot exceed maximums." ); _taxRates.buyFee = buyFee; _taxRates.sellFee = sellFee; _taxRates.transferFee = transferFee; } function setRatios( uint16 marketing, uint16 development, uint16 buyBackBurnLP ) external onlyOwner { _ratios.marketing = marketing; _ratios.development = development; _ratios.buyBackBurnLP = buyBackBurnLP; _ratios.totalSwap = marketing + development + buyBackBurnLP; uint256 total = _taxRates.buyFee + _taxRates.sellFee; require( _ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees." ); } function setWallets( address payable marketing, address payable development, address payable buyBackBurnLP ) external onlyOwner { require( marketing != address(0) && development != address(0) && buyBackBurnLP != address(0), "Cannot be zero address." ); _taxWallets.marketing = payable(marketing); _taxWallets.development = payable(development); _taxWallets.buyBackBurnLP = payable(buyBackBurnLP); } function getTokenAmountAtPriceImpact( uint256 priceImpactInHundreds ) external view returns (uint256) { return ((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor); } function setSwapSettings( uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor ) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; require( swapThreshold <= swapAmount, "Threshold cannot be above amount." ); require( swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI." ); require( swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply." ); require( swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply." ); } function setPriceImpactSwapAmount( uint256 priceImpactSwapPercent ) external onlyOwner { require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%."); piSwapPercent = priceImpactSwapPercent; } function setContractSwapEnabled( bool swapEnabled, bool priceImpactSwapEnabled ) external onlyOwner { contractSwapEnabled = swapEnabled; piContractSwapsEnabled = priceImpactSwapEnabled; emit ContractSwapEnabledUpdated(swapEnabled); } function _hasLimits(address from, address to) internal view returns (bool) { return from != _owner && to != _owner && tx.origin != _owner && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this) && from != address(initializer) && to != address(initializer); } function _transfer( address from, address to, uint256 amount ) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); // Check if the wallet is excluded from max transfer and max wallet restrictions if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { // Enforce the maximum transfer amount (only if not excluded) require(amount <= maxTransferAmount, "Transfer amount exceeds the 1% limit"); // Check if the recipient's balance would exceed the max wallet limit (only if not excluded) uint256 recipientBalanceAfterTransfer = _tOwned[to] + amount; require(recipientBalanceAfterTransfer <= maxWalletAmount, "Recipient exceeds maximum wallet balance limit"); } bool buy = false; bool sell = false; bool other = false; if (lpPairs[from]) { buy = true; } else if (lpPairs[to]) { sell = true; } else { other = true; } // Restrict the buyBackBurnLP wallet transfers to only the DEX pair and DEAD addresses if (from == _taxWallets.buyBackBurnLP) { require(to == lpPair || to == DEAD, "buyBackBurnLP can only send to DEX pair or burn address"); } if (_hasLimits(from, to)) { if (!tradingEnabled) { if (!other) { revert("Trading not yet enabled!"); } else if ( !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] ) { revert("Tokens cannot be moved until trading is live."); } } } if (sell) { if (!inSwap) { if (contractSwapEnabled) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { uint256 swapAmt = swapAmount; if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; } if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; } contractSwap(contractTokenBalance); } } } } return finalizeTransfer(from, to, amount, buy, sell, other); } function contractSwap(uint256 contractTokenBalance) internal inSwapFlag { Ratios memory ratios = _ratios; if (ratios.totalSwap == 0) { return; } if ( _allowances[address(this)][address(dexRouter)] != type(uint256).max ) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( contractTokenBalance, 0, path, address(this), block.timestamp ) {} catch { return; } uint256 amtBalance = address(this).balance; bool success; uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap; uint256 externalBuybackBalance = (amtBalance * ratios.buyBackBurnLP) / ratios.totalSwap; uint256 marketingBalance = amtBalance - (developmentBalance + externalBuybackBalance); if (ratios.marketing > 0) { (success, ) = _taxWallets.marketing.call{ value: marketingBalance, gas: 55000 }(""); } if (ratios.development > 0) { (success, ) = _taxWallets.development.call{ value: developmentBalance, gas: 55000 }(""); } if (ratios.buyBackBurnLP > 0) { (success, ) = _taxWallets.buyBackBurnLP.call{ value: externalBuybackBalance, gas: 55000 }(""); } } function _checkLiquidityAdd(address from, address to) internal { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _isExcludedFromFees[from] = true; _hasLiqBeenAdded = true; if (address(initializer) == address(0)) { initializer = Initializer(address(this)); } contractSwapEnabled = true; emit ContractSwapEnabledUpdated(true); } } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(_hasLiqBeenAdded, "Liquidity must be added."); if (address(initializer) == address(0)) { initializer = Initializer(address(this)); } try initializer.setLaunch( lpPair, uint32(block.number), uint64(block.timestamp), _decimals ) {} catch {} try initializer.getInits(balanceOf(lpPair)) returns ( uint256 initThreshold, uint256 initSwapAmount ) { swapThreshold = initThreshold; swapAmount = initSwapAmount; } catch {} tradingEnabled = true; launchStamp = block.timestamp; } function sweepContingency() external onlyOwner { require(!_hasLiqBeenAdded, "Cannot call after liquidity."); payable(_owner).transfer(address(this).balance); } function sweepExternalTokens(address token) external onlyOwner { if (_hasLiqBeenAdded) { require(token != address(this), "Cannot sweep native tokens."); } IERC20 TOKEN = IERC20(token); TOKEN.transfer(_owner, TOKEN.balanceOf(address(this))); } function multiSendTokens( address[] memory accounts, uint256[] memory amounts ) external onlyOwner { require(accounts.length == amounts.length, "Lengths do not match."); for (uint16 i = 0; i < accounts.length; i++) { require( balanceOf(msg.sender) >= amounts[i] * 10 ** _decimals, "Not enough tokens." ); finalizeTransfer( msg.sender, accounts[i], amounts[i] * 10 ** _decimals, false, false, true ); } } // Calculate the vested amount that can be claimed function vestedAndClaimable(address account) public view returns (uint256) { Lock memory lock = lockedTokens[account]; if (block.timestamp < lock.releaseTime) { return 0; // Still in lock period } uint256 elapsedTime = block.timestamp - lock.vestingStart; if (elapsedTime >= lock.vestingDuration) { // All tokens are fully vested after the vesting duration return lock.totalAmount - lock.claimed; } // Calculate linear vesting amount uint256 vested = (lock.totalAmount * elapsedTime) / lock.vestingDuration; // Return the claimable amount (vested minus already claimed) return vested - lock.claimed; } function finalizeTransfer( address from, address to, uint256 amount, bool buy, bool sell, bool other ) internal returns (bool) { uint256 availableBalance = _tOwned[from]; // If the sender has locked tokens, calculate the vested amount if (lockedTokens[from].totalAmount > 0) { uint256 claimable = vestedAndClaimable(from); availableBalance = availableBalance.sub(lockedTokens[from].totalAmount - claimable); require(amount <= availableBalance, "Amount exceeds unlocked tokens"); // Update the claimed amount in the lock lockedTokens[from].claimed = lockedTokens[from].claimed.add(amount); } bool takeFee = true; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount; _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if ( !_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other ) { revert("Pre-liquidity transfer protection."); } } return true; } function takeTaxes( address from, uint256 amount, bool buy, bool sell ) internal returns (uint256) { uint256 currentFee = getDynamicTaxRate(buy, sell); if (currentFee == 0) { return amount; } uint256 feeAmount = (amount * currentFee) / masterTaxDivisor; if (feeAmount > 0) { _tOwned[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); } return amount - feeAmount; } function getDynamicTaxRate(bool buy, bool sell) public view returns (uint256) { uint256 baseRate; if (buy) { baseRate = _taxRates.buyFee; } else if (sell) { baseRate = _taxRates.sellFee; } else { baseRate = _taxRates.transferFee; } if (block.timestamp >= launchStamp) { uint256 minutesSinceLaunch = (block.timestamp - launchStamp) / 60; if (minutesSinceLaunch >= maxReductionMinutes) { // After 4 minutes, tax is reduced to the final rate of 5% return finalTaxRate; // 5% } else { // Each minute, reduce tax by 5% starting from 25% uint256 reducedRate = initialTaxRate - (minutesSinceLaunch * taxReductionPerMinute); return reducedRate; // Return the dynamic rate } } return baseRate; // Return the base rate before the launch } function setMaxTransferAmount(uint256 _maxTransferAmount) external onlyOwner { require(_maxTransferAmount > 0, "Max transfer amount must be greater than zero"); maxTransferAmount = _maxTransferAmount; } function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner { require(_maxWalletAmount > 0, "Max wallet amount must be greater than zero"); maxWalletAmount = _maxWalletAmount; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"developmentWallet","type":"address"},{"internalType":"address payable","name":"buyBackBurnLPWallet","type":"address"},{"internalType":"address payable","name":"teamFoundationWallet","type":"address"}],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_LOCK_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_VESTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"buyBackBurnLP","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"buyBackBurnLP","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":[],"name":"approveContractContingency","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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finalTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"bool","name":"sell","type":"bool"}],"name":"getDynamicTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedTokens","outputs":[{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"vestingStart","type":"uint256"},{"internalType":"uint256","name":"vestingDuration","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxReductionMinutes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransferAmount","type":"uint256"}],"name":"setMaxTransferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"buyBackBurnLP","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"buyBackBurnLP","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxReductionPerMinute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vestedAndClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600060028181556101f4608081905260a05260c08290526007805465ffffffffffff19166301f401f417905560e0819052610100526001610120526005610140526008805466050001000200026001600160401b03199091161781556101c06040526101608290526101808290526101a091909152600c80546001600160a01b0319908116909155600d805482169055600e80549091169055600f805461ff001916905561271090620000b490600a62000755565b620000c4906305f5e1006200076d565b620000d0919062000787565b601055612710620000e46008600a62000755565b620000f4906305f5e1006200076d565b62000100919062000787565b6011556012805460ff19169055600a6013556014805461ffff19169055604051620048ac388190039081908339810160408190526200013f91620007c7565b601880546001600160a01b031916331790556200015f6008600a62000755565b6200016f906305f5e1006200076d565b601880546001600160a01b03908116600090815260208190526040812093909355905416906000805160206200488c833981519152620001b26008600a62000755565b620001c2906305f5e1006200076d565b60405190815260200160405180910390a3601880546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790559654861685526004835281852080548816821790559282527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548716841790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805487168417905573dba68f07d1b7ca219f78ae8582c213d975c25caf84527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805490961690921790945580516060810182528884168082528885169582018690529387169101819052600c80546001600160a01b03199081169094179055600d80548416909417909355600e805490921690921790556064620003426008600a62000755565b62000352906305f5e1006200076d565b6200035f90600a6200076d565b6200036b919062000787565b9050600060646200037f6008600a62000755565b6200038f906305f5e1006200076d565b6200039c9060056200076d565b620003a8919062000787565b905060006064620003bc6008600a62000755565b620003cc906305f5e1006200076d565b620003d990600f6200076d565b620003e5919062000787565b6001600160a01b0380891660009081526020819052604080822087905589831682528082208690559187168152819020829055805160a08101909152909150806064620004356008600a62000755565b62000445906305f5e1006200076d565b6200045290600f6200076d565b6200045e919062000787565b8152602001620004726276a7004262000824565b8152602001620004866276a7004262000824565b81526303b53800602080830191909152600060409283018190526001600160a01b03881681526009825282902083518155908301516001820155908201516002820155606082015160038201556080909101516004909101556064620004ef6008600a62000755565b620004ff906305f5e1006200076d565b6200050b919062000787565b60165560646200051e6008600a62000755565b6200052e906305f5e1006200076d565b6200053a919062000787565b601755806200054a838562000824565b62000556919062000824565b620005646008600a62000755565b62000574906305f5e1006200076d565b6200058091906200083a565b601880546001600160a01b039081166000908152602081815260409182902094909455915491518681528a82169392909116916000805160206200488c833981519152910160405180910390a36018546040518381526001600160a01b038881169216906000805160206200488c8339815191529060200160405180910390a36018546040518281526001600160a01b038681169216906000805160206200488c8339815191529060200160405180910390a35050505050505062000850565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006975781600019048211156200067b576200067b62000640565b808516156200068957918102915b93841c93908002906200065b565b509250929050565b600082620006b0575060016200074f565b81620006bf575060006200074f565b8160018114620006d85760028114620006e35762000703565b60019150506200074f565b60ff841115620006f757620006f762000640565b50506001821b6200074f565b5060208310610133831016604e8410600b841016171562000728575081810a6200074f565b62000734838362000656565b80600019048211156200074b576200074b62000640565b0290505b92915050565b60006200076660ff8416836200069f565b9392505050565b80820281158282048414176200074f576200074f62000640565b600082620007a557634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b0381168114620007c257600080fd5b919050565b60008060008060808587031215620007de57600080fd5b620007e985620007aa565b9350620007f960208601620007aa565b92506200080960408601620007aa565b91506200081960608601620007aa565b905092959194509250565b808201808211156200074f576200074f62000640565b818103818111156200074f576200074f62000640565b61402c80620008606000396000f3fe6080604052600436106103c75760003560e01c806370a08231116101f2578063ab558e4d1161010d578063de7c2ed2116100a0578063fb78680d1161006f578063fb78680d14610bf8578063fdb78c0e14610c18578063fe48d6f914610af8578063feadde9c14610c3757600080fd5b8063de7c2ed214610b54578063eafb5a3c14610b6c578063ee5d9c2d14610b8c578063f94aa1b414610ba157600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a70578063cf84770614610a90578063d5299ff314610af8578063dd62ed3e14610b0e57600080fd5b8063ab558e4d14610a36578063b1b08f7114610606578063b3d514fb14610606578063b7df8b3614610a5657600080fd5b80638b13678411610185578063a9059cbb11610154578063a9059cbb146109ca578063a9e75723146109ea578063aa22b17214610a00578063aa4bde2814610a2057600080fd5b80638b136784146109465780638bf554091461095c57806395d89b411461097c5780639febf582146109aa57600080fd5b806380c581d1116101c157806380c581d1146108de578063893d20e8146108fe5780638a63bd9b1461091c5780638a8c523c1461093157600080fd5b806370a0823114610874578063715018a61461089457806375cb1bd1146108a957806378648edf146108c957600080fd5b8063313ce567116102e25780634fb2e45d116102755780635a6f0918116102445780635a6f0918146107ac5780635c24b074146107c25780635eb7413a146107e2578063606b89b71461085457600080fd5b80634fb2e45d146107145780634fbee1931461073457806350a8e0161461076d578063590ffdce1461078c57600080fd5b8063452ed4f1116102b1578063452ed4f11461069a5780634ada218b146106ba5780634bbb93eb146106d45780634e718e48146106f457600080fd5b8063313ce5671461063257806332cde6641461064e578063359289981461066e578063394188be1461068557600080fd5b806318160ddd1161035a578063285777511161032957806328577751146105db5780632b112e49146105f15780632b28fc7a146106065780632e8fa8211461061c57600080fd5b806318160ddd1461056457806323b872dd146105795780632610eaca1461059957806327a14fc2146105bb57600080fd5b80630758d924116103965780630758d924146104bc57806307dd79e0146104e1578063095ea7b31461050b5780630dcbcf1c1461052b57600080fd5b806303fd2a45146103d35780630445b66714610406578063069d955f1461042a57806306fdde031461048057600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041257600080fd5b5061041c60105481565b6040519081526020016103fd565b34801561043657600080fd5b5060075461045b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103fd565b34801561048c57600080fd5b5060408051808201909152600a815269272cac1021a4a82422a960b11b60208201525b6040516103fd9190613839565b3480156104c857600080fd5b50600a546103e99061010090046001600160a01b031681565b3480156104ed57600080fd5b50600a546104fb9060ff1681565b60405190151581526020016103fd565b34801561051757600080fd5b506104fb61052636600461389d565b610c57565b34801561053757600080fd5b506104fb6105463660046138c9565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057057600080fd5b5061041c610c6e565b34801561058557600080fd5b506104fb6105943660046138e6565b610c8f565b3480156105a557600080fd5b506105b96105b4366004613a01565b610d35565b005b3480156105c757600080fd5b506105b96105d6366004613ac3565b610ebb565b3480156105e757600080fd5b5061041c60135481565b3480156105fd57600080fd5b5061041c610f4e565b34801561061257600080fd5b5061041c6103e881565b34801561062857600080fd5b5061041c60115481565b34801561063e57600080fd5b50604051600881526020016103fd565b34801561065a57600080fd5b506105b9610669366004613af3565b610f93565b34801561067a57600080fd5b5061041c6276a70081565b34801561069157600080fd5b5061041c600481565b3480156106a657600080fd5b50600b546103e9906001600160a01b031681565b3480156106c657600080fd5b506014546104fb9060ff1681565b3480156106e057600080fd5b5061041c6106ef366004613ac3565b6110bd565b34801561070057600080fd5b506105b961070f366004613ac3565b6110ef565b34801561072057600080fd5b506105b961072f3660046138c9565b611168565b34801561074057600080fd5b506104fb61074f3660046138c9565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561077957600080fd5b506014546104fb90610100900460ff1681565b34801561079857600080fd5b506105b96107a7366004613b44565b611291565b3480156107b857600080fd5b5061041c60155481565b3480156107ce57600080fd5b506105b96107dd3660046138c9565b6112e6565b3480156107ee57600080fd5b5061082c6107fd3660046138c9565b600960205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103fd565b34801561086057600080fd5b5061041c61086f366004613b7d565b61148a565b34801561088057600080fd5b5061041c61088f3660046138c9565b611531565b3480156108a057600080fd5b506105b961154c565b3480156108b557600080fd5b506105b96108c4366004613b9b565b611645565b3480156108d557600080fd5b506105b961172e565b3480156108ea57600080fd5b506105b96108f9366004613b44565b611767565b34801561090a57600080fd5b506018546001600160a01b03166103e9565b34801561092857600080fd5b506104fb611946565b34801561093d57600080fd5b506105b9611998565b34801561095257600080fd5b5061041c6109c481565b34801561096857600080fd5b506105b9610977366004613ac3565b611bc2565b34801561098857600080fd5b506040805180820190915260058152640244e5843560dc1b60208201526104af565b3480156109b657600080fd5b5061041c6109c53660046138c9565b611c57565b3480156109d657600080fd5b506104fb6109e536600461389d565b611d25565b3480156109f657600080fd5b5061041c60165481565b348015610a0c57600080fd5b506105b9610a1b366004613af3565b611d3c565b348015610a2c57600080fd5b5061041c60175481565b348015610a4257600080fd5b506105b9610a513660046138c9565b611e63565b348015610a6257600080fd5b506012546104fb9060ff1681565b348015610a7c57600080fd5b506105b9610a8b366004613b7d565b611fdf565b348015610a9c57600080fd5b50600854610aca9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103fd565b348015610b0457600080fd5b5061041c6101f481565b348015610b1a57600080fd5b5061041c610b29366004613be6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b6057600080fd5b5061041c6303b5380081565b348015610b7857600080fd5b506105b9610b873660046138c9565b612068565b348015610b9857600080fd5b506105b961243e565b348015610bad57600080fd5b50600c54600d54600e54610bce926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103fd565b348015610c0457600080fd5b506105b9610c13366004613c14565b6124f9565b348015610c2457600080fd5b50600f546104fb90610100900460ff1681565b348015610c4357600080fd5b506105b9610c52366004613b44565b612703565b6000610c64338484612758565b5060015b92915050565b6000610c7c6008600a613d40565b610c8a906305f5e100613d4f565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d22576001600160a01b0384166000908152600360209081526040808320338452909152902054610ce99083612851565b6001600160a01b038516600090815260036020908152604080832033845290915281208054909190610d1c908490613d66565b90915550505b610d2d848484612893565b949350505050565b6018546001600160a01b03163314610d685760405162461bcd60e51b8152600401610d5f90613d79565b60405180910390fd5b8051825114610db15760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610d5f565b60005b82518161ffff161015610eb657610dcd6008600a613d40565b828261ffff1681518110610de357610de3613da4565b6020026020010151610df59190613d4f565b610dfe33611531565b1015610e415760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610d5f565b610ea333848361ffff1681518110610e5b57610e5b613da4565b60200260200101516008600a610e719190613d40565b858561ffff1681518110610e8757610e87613da4565b6020026020010151610e999190613d4f565b6000806001612db1565b5080610eae81613dba565b915050610db4565b505050565b6018546001600160a01b03163314610ee55760405162461bcd60e51b8152600401610d5f90613d79565b60008111610f495760405162461bcd60e51b815260206004820152602b60248201527f4d61782077616c6c657420616d6f756e74206d7573742062652067726561746560448201526a72207468616e207a65726f60a81b6064820152608401610d5f565b601755565b6000610f5a6000611531565b610f6561dead611531565b610f6f9190613ddb565b610f7b6008600a613d40565b610f89906305f5e100613d4f565b610c8a9190613d66565b6018546001600160a01b03163314610fbd5760405162461bcd60e51b8152600401610d5f90613d79565b600a5460ff16156110045760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610d5f565b6103e88361ffff161115801561102057506103e88261ffff1611155b801561103257506103e88161ffff1611155b61107e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610d5f565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600b546000906127109083906110db906001600160a01b0316611531565b6110e59190613d4f565b610c689190613dee565b6018546001600160a01b031633146111195760405162461bcd60e51b8152600401610d5f90613d79565b60968111156111635760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610d5f565b601355565b6018546001600160a01b031633146111925760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b0381166111b85760405162461bcd60e51b8152600401610d5f90613e10565b61deac196001600160a01b038216016111e35760405162461bcd60e51b8152600401610d5f90613e10565b6018546111fa906001600160a01b03166000611291565b611205816001611291565b60185460009061121d906001600160a01b0316611531565b111561123f5760185461123d906001600160a01b031682610e9982611531565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146112bb5760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146113105760405162461bcd60e51b8152600401610d5f90613d79565b60145460ff161561132057600080fd5b306001600160a01b038216036113695760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610d5f565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156113ef575060408051601f3d908101601f191682019092526113ec91810190613e6d565b60015b6113f857600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560185492546114689383169291900416600019612758565b600a54610eb690309061010090046001600160a01b0316600019612758565b50565b60008083156114a0575060075461ffff166114ca565b82156114b9575060075462010000900461ffff166114ca565b50600754640100000000900461ffff165b601554421061152a576000603c601554426114e59190613d66565b6114ef9190613dee565b905060048110611505576101f492505050610c68565b60006115136101f483613d4f565b61151f906109c4613d66565b9350610c6892505050565b9392505050565b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b031633146115765760405162461bcd60e51b8152600401610d5f90613d79565b60145460ff166115e05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610d5f565b6018546115f7906001600160a01b03166000611291565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b0316331461166f5760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b0383161580159061168f57506001600160a01b03821615155b80156116a357506001600160a01b03811615155b6116ef5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610d5f565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6018546001600160a01b031633146117585760405162461bcd60e51b8152600401610d5f90613d79565b600a805460ff19166001179055565b6018546001600160a01b031633146117915760405162461bcd60e51b8152600401610d5f90613d79565b80611821576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561180557600080fd5b505af1158015611819573d6000803e3d6000fd5b505050505050565b6002541561187a576203f4806002544261183b9190613d66565b1161187a5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610d5f565b6001600160a01b03821660009081526001602052604090205460ff16156118e35760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610d5f565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d1906044016117eb565b5050565b6018546000906001600160a01b031633146119735760405162461bcd60e51b8152600401610d5f90613d79565b600a5461199290309061010090046001600160a01b0316600019612758565b50600190565b6018546001600160a01b031633146119c25760405162461bcd60e51b8152600401610d5f90613d79565b60145460ff1615611a155760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610d5f565b601454610100900460ff16611a6c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610d5f565b6014546201000090046001600160a01b0316611a9c576014805462010000600160b01b0319163062010000021790555b601454600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260086064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b0e57600080fd5b505af1925050508015611b1f575060015b50601454600b546001600160a01b03620100009092048216916325a71cae91611b489116611531565b6040518263ffffffff1660e01b8152600401611b6691815260200190565b60408051808303816000875af1925050508015611ba0575060408051601f3d908101601f19168201909252611b9d91810190613e9c565b60015b15611baf576010919091556011555b6014805460ff1916600117905542601555565b6018546001600160a01b03163314611bec5760405162461bcd60e51b8152600401610d5f90613d79565b60008111611c525760405162461bcd60e51b815260206004820152602d60248201527f4d6178207472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b6064820152608401610d5f565b601655565b6001600160a01b0381166000908152600960209081526040808320815160a0810183528154815260018201549381018490526002820154928101929092526003810154606083015260040154608082015290421015611cb95750600092915050565b6000816040015142611ccb9190613d66565b905081606001518110611ce95760808201518251610d2d9190613d66565b60008260600151828460000151611d009190613d4f565b611d0a9190613dee565b9050826080015181611d1c9190613d66565b95945050505050565b6000611d32338484612893565b5060019392505050565b6018546001600160a01b03163314611d665760405162461bcd60e51b8152600401610d5f90613d79565b6008805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff1990941692881692909217929092171617905580611daa8385613ec0565b611db49190613ec0565b6008805467ffff0000000000001916600160301b61ffff93841602179055600754600091611deb9162010000810482169116613ec0565b60085461ffff9182169250600160301b900416811015611e5d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610d5f565b50505050565b6018546001600160a01b03163314611e8d5760405162461bcd60e51b8152600401610d5f90613d79565b601454610100900460ff1615611ef557306001600160a01b03821603611ef55760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610d5f565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f709190613ee2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190613efb565b6018546001600160a01b031633146120095760405162461bcd60e51b8152600401610d5f90613d79565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b031633146120925760405162461bcd60e51b8152600401610d5f90613d79565b601454610100900460ff16156120ea5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d5f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190613f18565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c49190613f18565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561220f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122339190613f18565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166123c957816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561229e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c29190613f18565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123339190613f18565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a49190613f18565b600b80546001600160a01b0319166001600160a01b03929092169190911790556123e5565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610eb6923092910416600019612758565b6018546001600160a01b031633146124685760405162461bcd60e51b8152600401610d5f90613d79565b601454610100900460ff16156124c05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d5f565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611487573d6000803e3d6000fd5b6018546001600160a01b031633146125235760405162461bcd60e51b8152600401610d5f90613d79565b82846125316008600a613d40565b61253f906305f5e100613d4f565b6125499190613d4f565b6125539190613dee565b60105580826125646008600a613d40565b612572906305f5e100613d4f565b61257c9190613d4f565b6125869190613dee565b601181905560105411156125e65760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610d5f565b600b54612710906125ff906001600160a01b0316611531565b61260a906096613d4f565b6126149190613dee565b60115411156126715760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610d5f565b620f42406126816008600a613d40565b61268f906305f5e100613d4f565b6126999190613dee565b60115410156126ba5760405162461bcd60e51b8152600401610d5f90613f35565b620f42406126ca6008600a613d40565b6126d8906305f5e100613d4f565b6126e29190613dee565b6010541015611e5d5760405162461bcd60e51b8152600401610d5f90613f35565b6018546001600160a01b0316331461272d5760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166127a45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5f565b6001600160a01b0382166127f05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061152a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130b9565b60006001600160a01b0384166128f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d5f565b6001600160a01b03831661295b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d5f565b600082116129bd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d5f565b6001600160a01b03841660009081526006602052604090205460ff161580156129ff57506001600160a01b03831660009081526006602052604090205460ff16155b15612af357601654821115612a625760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e74206578636565647320746865203125206c6044820152631a5b5a5d60e21b6064820152608401610d5f565b6001600160a01b038316600090815260208190526040812054612a86908490613ddb565b9050601754811115612af15760405162461bcd60e51b815260206004820152602e60248201527f526563697069656e742065786365656473206d6178696d756d2077616c6c657460448201526d0818985b185b98d9481b1a5b5a5d60921b6064820152608401610d5f565b505b6001600160a01b0384166000908152600160205260408120548190819060ff1615612b215760019250612b4f565b6001600160a01b03861660009081526001602052604090205460ff1615612b4b5760019150612b4f565b5060015b600e546001600160a01b0390811690881603612bfd57600b546001600160a01b0387811691161480612b8b57506001600160a01b03861661dead145b612bfd5760405162461bcd60e51b815260206004820152603760248201527f6275794261636b4275726e4c502063616e206f6e6c792073656e6420746f204460448201527f45582070616972206f72206275726e20616464726573730000000000000000006064820152608401610d5f565b612c0787876130ea565b15612d085760145460ff16612d085780612c635760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610d5f565b6001600160a01b03871660009081526005602052604090205460ff16158015612ca557506001600160a01b03861660009081526005602052604090205460ff16155b15612d085760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610d5f565b8115612d9857600f5460ff16612d9857600f54610100900460ff1615612d98576000612d3330611531565b90506010548110612d965760115460125460ff1615612d8057601354600b546127109190612d69906001600160a01b0316611531565b612d739190613d4f565b612d7d9190613dee565b90505b808210612d8b578091505b612d94826131ff565b505b505b612da6878787868686612db1565b979650505050505050565b6001600160a01b03861660009081526020818152604080832054600990925282205415612eab576000612de389611c57565b6001600160a01b038a16600090815260096020526040902054909150612e1590612e0e908390613d66565b8390612851565b915081871115612e675760405162461bcd60e51b815260206004820152601e60248201527f416d6f756e74206578636565647320756e6c6f636b656420746f6b656e7300006044820152606401610d5f565b6001600160a01b038916600090815260096020526040902060040154612e8d90886135ea565b6001600160a01b038a16600090815260096020526040902060040155505b6001600160a01b03881660009081526006602052604090205460019060ff1680612eed57506001600160a01b03881660009081526006602052604090205460ff165b15612ef6575060005b6001600160a01b03891660009081526020819052604081208054899290612f1e908490613d66565b909155506000905081612f315787612f3d565b612f3d8a898989613649565b9050806000808b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f739190613ddb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fbf91815260200190565b60405180910390a3601454610100900460ff166130a957612fe08a8a6136f9565b601454610100900460ff16158015612ffd5750612ffd8a8a6130ea565b801561302257506001600160a01b038a1660009081526005602052604090205460ff16155b801561304757506001600160a01b03891660009081526005602052604090205460ff16155b8015613051575084155b156130a95760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610d5f565b5060019998505050505050505050565b600081848411156130dd5760405162461bcd60e51b8152600401610d5f9190613839565b506000611d1c8486613d66565b6018546000906001600160a01b0384811691161480159061311957506018546001600160a01b03838116911614155b801561313057506018546001600160a01b03163214155b801561315557506001600160a01b03821660009081526004602052604090205460ff16155b801561317a57506001600160a01b03831660009081526004602052604090205460ff16155b801561319157506001600160a01b03821661dead14155b80156131a557506001600160a01b03821615155b80156131ba57506001600160a01b0383163014155b80156131da57506014546001600160a01b03848116620100009092041614155b801561152a5750506014546201000090046001600160a01b0390811691161415919050565b600f805460ff191660011790556040805160808101825260085461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b90049091166060820181905260000361325d57506135dd565b306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146132c057306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132f5576132f5613da4565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338c9190613f18565b8160018151811061339f5761339f613da4565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906133ec908690600090869030904290600401613f83565b600060405180830381600087803b15801561340657600080fd5b505af1925050508015613417575060015b6134225750506135dd565b6000479050600080846060015161ffff16856020015161ffff16846134479190613d4f565b6134519190613dee565b90506000856060015161ffff16866040015161ffff16856134729190613d4f565b61347c9190613dee565b9050600061348a8284613ddb565b6134949086613d66565b875190915061ffff16156134ff57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146134f4576040519150601f19603f3d011682016040523d82523d6000602084013e6134f9565b606091505b50909450505b602087015161ffff161561356a57600d546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461355f576040519150601f19603f3d011682016040523d82523d6000602084013e613564565b606091505b50909450505b604087015161ffff16156135d557600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146135ca576040519150601f19603f3d011682016040523d82523d6000602084013e6135cf565b606091505b50909450505b505050505050505b50600f805460ff19169055565b6000806135f78385613ddb565b90508381101561152a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d5f565b600080613656848461148a565b9050806000036136695784915050610d2d565b60006127106136788388613d4f565b6136829190613dee565b905080156136ef5730600090815260208190526040812080548392906136a9908490613ddb565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612da68187613d66565b601454610100900460ff161561375d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610d5f565b61376782826130ea565b1580156137815750600b546001600160a01b038281169116145b15611942576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff0019166101001790819055620100009004166137f9576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161205c565b60006020808352835180602085015260005b818110156138675785810183015185820160400152820161384b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461148757600080fd5b600080604083850312156138b057600080fd5b82356138bb81613888565b946020939093013593505050565b6000602082840312156138db57600080fd5b813561152a81613888565b6000806000606084860312156138fb57600080fd5b833561390681613888565b9250602084013561391681613888565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561396657613966613927565b604052919050565b600067ffffffffffffffff82111561398857613988613927565b5060051b60200190565b600082601f8301126139a357600080fd5b813560206139b86139b38361396e565b61393d565b8083825260208201915060208460051b8701019350868411156139da57600080fd5b602086015b848110156139f657803583529183019183016139df565b509695505050505050565b60008060408385031215613a1457600080fd5b823567ffffffffffffffff80821115613a2c57600080fd5b818501915085601f830112613a4057600080fd5b81356020613a506139b38361396e565b82815260059290921b84018101918181019089841115613a6f57600080fd5b948201945b83861015613a96578535613a8781613888565b82529482019490820190613a74565b96505086013592505080821115613aac57600080fd5b50613ab985828601613992565b9150509250929050565b600060208284031215613ad557600080fd5b5035919050565b803561ffff81168114613aee57600080fd5b919050565b600080600060608486031215613b0857600080fd5b613b1184613adc565b9250613b1f60208501613adc565b9150613b2d60408501613adc565b90509250925092565b801515811461148757600080fd5b60008060408385031215613b5757600080fd5b8235613b6281613888565b91506020830135613b7281613b36565b809150509250929050565b60008060408385031215613b9057600080fd5b8235613b6281613b36565b600080600060608486031215613bb057600080fd5b8335613bbb81613888565b92506020840135613bcb81613888565b91506040840135613bdb81613888565b809150509250925092565b60008060408385031215613bf957600080fd5b8235613c0481613888565b91506020830135613b7281613888565b60008060008060808587031215613c2a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613c97578160001904821115613c7d57613c7d613c46565b80851615613c8a57918102915b93841c9390800290613c61565b509250929050565b600082613cae57506001610c68565b81613cbb57506000610c68565b8160018114613cd15760028114613cdb57613cf7565b6001915050610c68565b60ff841115613cec57613cec613c46565b50506001821b610c68565b5060208310610133831016604e8410600b8410161715613d1a575081810a610c68565b613d248383613c5c565b8060001904821115613d3857613d38613c46565b029392505050565b600061152a60ff841683613c9f565b8082028115828204841417610c6857610c68613c46565b81810381811115610c6857610c68613c46565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613dd157613dd1613c46565b6001019392505050565b80820180821115610c6857610c68613c46565b600082613e0b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60008060408385031215613e8057600080fd5b8251613e8b81613888565b6020840151909250613b7281613888565b60008060408385031215613eaf57600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613edb57613edb613c46565b5092915050565b600060208284031215613ef457600080fd5b5051919050565b600060208284031215613f0d57600080fd5b815161152a81613b36565b600060208284031215613f2a57600080fd5b815161152a81613888565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015613fd55784516001600160a01b031683529383019391830191600101613fb0565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201b515c8275897495199493ee27bf3bb71553992de62ede03588bf5c9010dfefb64736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000003e50546092076300a8f1fdcc43d8c221a42fbf18000000000000000000000000ea4ebd03ed27a6c246749437ccf2cbef006bd1c90000000000000000000000003cdbbdf0588f60116b0a0651ed4bc6c62c7fcf40000000000000000000000000f7fb9dea516d351881c5d72f330cfc49ef52abbd
Deployed Bytecode
0x6080604052600436106103c75760003560e01c806370a08231116101f2578063ab558e4d1161010d578063de7c2ed2116100a0578063fb78680d1161006f578063fb78680d14610bf8578063fdb78c0e14610c18578063fe48d6f914610af8578063feadde9c14610c3757600080fd5b8063de7c2ed214610b54578063eafb5a3c14610b6c578063ee5d9c2d14610b8c578063f94aa1b414610ba157600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a70578063cf84770614610a90578063d5299ff314610af8578063dd62ed3e14610b0e57600080fd5b8063ab558e4d14610a36578063b1b08f7114610606578063b3d514fb14610606578063b7df8b3614610a5657600080fd5b80638b13678411610185578063a9059cbb11610154578063a9059cbb146109ca578063a9e75723146109ea578063aa22b17214610a00578063aa4bde2814610a2057600080fd5b80638b136784146109465780638bf554091461095c57806395d89b411461097c5780639febf582146109aa57600080fd5b806380c581d1116101c157806380c581d1146108de578063893d20e8146108fe5780638a63bd9b1461091c5780638a8c523c1461093157600080fd5b806370a0823114610874578063715018a61461089457806375cb1bd1146108a957806378648edf146108c957600080fd5b8063313ce567116102e25780634fb2e45d116102755780635a6f0918116102445780635a6f0918146107ac5780635c24b074146107c25780635eb7413a146107e2578063606b89b71461085457600080fd5b80634fb2e45d146107145780634fbee1931461073457806350a8e0161461076d578063590ffdce1461078c57600080fd5b8063452ed4f1116102b1578063452ed4f11461069a5780634ada218b146106ba5780634bbb93eb146106d45780634e718e48146106f457600080fd5b8063313ce5671461063257806332cde6641461064e578063359289981461066e578063394188be1461068557600080fd5b806318160ddd1161035a578063285777511161032957806328577751146105db5780632b112e49146105f15780632b28fc7a146106065780632e8fa8211461061c57600080fd5b806318160ddd1461056457806323b872dd146105795780632610eaca1461059957806327a14fc2146105bb57600080fd5b80630758d924116103965780630758d924146104bc57806307dd79e0146104e1578063095ea7b31461050b5780630dcbcf1c1461052b57600080fd5b806303fd2a45146103d35780630445b66714610406578063069d955f1461042a57806306fdde031461048057600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103e961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561041257600080fd5b5061041c60105481565b6040519081526020016103fd565b34801561043657600080fd5b5060075461045b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103fd565b34801561048c57600080fd5b5060408051808201909152600a815269272cac1021a4a82422a960b11b60208201525b6040516103fd9190613839565b3480156104c857600080fd5b50600a546103e99061010090046001600160a01b031681565b3480156104ed57600080fd5b50600a546104fb9060ff1681565b60405190151581526020016103fd565b34801561051757600080fd5b506104fb61052636600461389d565b610c57565b34801561053757600080fd5b506104fb6105463660046138c9565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057057600080fd5b5061041c610c6e565b34801561058557600080fd5b506104fb6105943660046138e6565b610c8f565b3480156105a557600080fd5b506105b96105b4366004613a01565b610d35565b005b3480156105c757600080fd5b506105b96105d6366004613ac3565b610ebb565b3480156105e757600080fd5b5061041c60135481565b3480156105fd57600080fd5b5061041c610f4e565b34801561061257600080fd5b5061041c6103e881565b34801561062857600080fd5b5061041c60115481565b34801561063e57600080fd5b50604051600881526020016103fd565b34801561065a57600080fd5b506105b9610669366004613af3565b610f93565b34801561067a57600080fd5b5061041c6276a70081565b34801561069157600080fd5b5061041c600481565b3480156106a657600080fd5b50600b546103e9906001600160a01b031681565b3480156106c657600080fd5b506014546104fb9060ff1681565b3480156106e057600080fd5b5061041c6106ef366004613ac3565b6110bd565b34801561070057600080fd5b506105b961070f366004613ac3565b6110ef565b34801561072057600080fd5b506105b961072f3660046138c9565b611168565b34801561074057600080fd5b506104fb61074f3660046138c9565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561077957600080fd5b506014546104fb90610100900460ff1681565b34801561079857600080fd5b506105b96107a7366004613b44565b611291565b3480156107b857600080fd5b5061041c60155481565b3480156107ce57600080fd5b506105b96107dd3660046138c9565b6112e6565b3480156107ee57600080fd5b5061082c6107fd3660046138c9565b600960205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103fd565b34801561086057600080fd5b5061041c61086f366004613b7d565b61148a565b34801561088057600080fd5b5061041c61088f3660046138c9565b611531565b3480156108a057600080fd5b506105b961154c565b3480156108b557600080fd5b506105b96108c4366004613b9b565b611645565b3480156108d557600080fd5b506105b961172e565b3480156108ea57600080fd5b506105b96108f9366004613b44565b611767565b34801561090a57600080fd5b506018546001600160a01b03166103e9565b34801561092857600080fd5b506104fb611946565b34801561093d57600080fd5b506105b9611998565b34801561095257600080fd5b5061041c6109c481565b34801561096857600080fd5b506105b9610977366004613ac3565b611bc2565b34801561098857600080fd5b506040805180820190915260058152640244e5843560dc1b60208201526104af565b3480156109b657600080fd5b5061041c6109c53660046138c9565b611c57565b3480156109d657600080fd5b506104fb6109e536600461389d565b611d25565b3480156109f657600080fd5b5061041c60165481565b348015610a0c57600080fd5b506105b9610a1b366004613af3565b611d3c565b348015610a2c57600080fd5b5061041c60175481565b348015610a4257600080fd5b506105b9610a513660046138c9565b611e63565b348015610a6257600080fd5b506012546104fb9060ff1681565b348015610a7c57600080fd5b506105b9610a8b366004613b7d565b611fdf565b348015610a9c57600080fd5b50600854610aca9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103fd565b348015610b0457600080fd5b5061041c6101f481565b348015610b1a57600080fd5b5061041c610b29366004613be6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b6057600080fd5b5061041c6303b5380081565b348015610b7857600080fd5b506105b9610b873660046138c9565b612068565b348015610b9857600080fd5b506105b961243e565b348015610bad57600080fd5b50600c54600d54600e54610bce926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103fd565b348015610c0457600080fd5b506105b9610c13366004613c14565b6124f9565b348015610c2457600080fd5b50600f546104fb90610100900460ff1681565b348015610c4357600080fd5b506105b9610c52366004613b44565b612703565b6000610c64338484612758565b5060015b92915050565b6000610c7c6008600a613d40565b610c8a906305f5e100613d4f565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d22576001600160a01b0384166000908152600360209081526040808320338452909152902054610ce99083612851565b6001600160a01b038516600090815260036020908152604080832033845290915281208054909190610d1c908490613d66565b90915550505b610d2d848484612893565b949350505050565b6018546001600160a01b03163314610d685760405162461bcd60e51b8152600401610d5f90613d79565b60405180910390fd5b8051825114610db15760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610d5f565b60005b82518161ffff161015610eb657610dcd6008600a613d40565b828261ffff1681518110610de357610de3613da4565b6020026020010151610df59190613d4f565b610dfe33611531565b1015610e415760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610d5f565b610ea333848361ffff1681518110610e5b57610e5b613da4565b60200260200101516008600a610e719190613d40565b858561ffff1681518110610e8757610e87613da4565b6020026020010151610e999190613d4f565b6000806001612db1565b5080610eae81613dba565b915050610db4565b505050565b6018546001600160a01b03163314610ee55760405162461bcd60e51b8152600401610d5f90613d79565b60008111610f495760405162461bcd60e51b815260206004820152602b60248201527f4d61782077616c6c657420616d6f756e74206d7573742062652067726561746560448201526a72207468616e207a65726f60a81b6064820152608401610d5f565b601755565b6000610f5a6000611531565b610f6561dead611531565b610f6f9190613ddb565b610f7b6008600a613d40565b610f89906305f5e100613d4f565b610c8a9190613d66565b6018546001600160a01b03163314610fbd5760405162461bcd60e51b8152600401610d5f90613d79565b600a5460ff16156110045760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610d5f565b6103e88361ffff161115801561102057506103e88261ffff1611155b801561103257506103e88161ffff1611155b61107e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610d5f565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600b546000906127109083906110db906001600160a01b0316611531565b6110e59190613d4f565b610c689190613dee565b6018546001600160a01b031633146111195760405162461bcd60e51b8152600401610d5f90613d79565b60968111156111635760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610d5f565b601355565b6018546001600160a01b031633146111925760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b0381166111b85760405162461bcd60e51b8152600401610d5f90613e10565b61deac196001600160a01b038216016111e35760405162461bcd60e51b8152600401610d5f90613e10565b6018546111fa906001600160a01b03166000611291565b611205816001611291565b60185460009061121d906001600160a01b0316611531565b111561123f5760185461123d906001600160a01b031682610e9982611531565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146112bb5760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146113105760405162461bcd60e51b8152600401610d5f90613d79565b60145460ff161561132057600080fd5b306001600160a01b038216036113695760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610d5f565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156113ef575060408051601f3d908101601f191682019092526113ec91810190613e6d565b60015b6113f857600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560185492546114689383169291900416600019612758565b600a54610eb690309061010090046001600160a01b0316600019612758565b50565b60008083156114a0575060075461ffff166114ca565b82156114b9575060075462010000900461ffff166114ca565b50600754640100000000900461ffff165b601554421061152a576000603c601554426114e59190613d66565b6114ef9190613dee565b905060048110611505576101f492505050610c68565b60006115136101f483613d4f565b61151f906109c4613d66565b9350610c6892505050565b9392505050565b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b031633146115765760405162461bcd60e51b8152600401610d5f90613d79565b60145460ff166115e05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610d5f565b6018546115f7906001600160a01b03166000611291565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b0316331461166f5760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b0383161580159061168f57506001600160a01b03821615155b80156116a357506001600160a01b03811615155b6116ef5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610d5f565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6018546001600160a01b031633146117585760405162461bcd60e51b8152600401610d5f90613d79565b600a805460ff19166001179055565b6018546001600160a01b031633146117915760405162461bcd60e51b8152600401610d5f90613d79565b80611821576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561180557600080fd5b505af1158015611819573d6000803e3d6000fd5b505050505050565b6002541561187a576203f4806002544261183b9190613d66565b1161187a5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610d5f565b6001600160a01b03821660009081526001602052604090205460ff16156118e35760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610d5f565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d1906044016117eb565b5050565b6018546000906001600160a01b031633146119735760405162461bcd60e51b8152600401610d5f90613d79565b600a5461199290309061010090046001600160a01b0316600019612758565b50600190565b6018546001600160a01b031633146119c25760405162461bcd60e51b8152600401610d5f90613d79565b60145460ff1615611a155760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610d5f565b601454610100900460ff16611a6c5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610d5f565b6014546201000090046001600160a01b0316611a9c576014805462010000600160b01b0319163062010000021790555b601454600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260086064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b0e57600080fd5b505af1925050508015611b1f575060015b50601454600b546001600160a01b03620100009092048216916325a71cae91611b489116611531565b6040518263ffffffff1660e01b8152600401611b6691815260200190565b60408051808303816000875af1925050508015611ba0575060408051601f3d908101601f19168201909252611b9d91810190613e9c565b60015b15611baf576010919091556011555b6014805460ff1916600117905542601555565b6018546001600160a01b03163314611bec5760405162461bcd60e51b8152600401610d5f90613d79565b60008111611c525760405162461bcd60e51b815260206004820152602d60248201527f4d6178207472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b6064820152608401610d5f565b601655565b6001600160a01b0381166000908152600960209081526040808320815160a0810183528154815260018201549381018490526002820154928101929092526003810154606083015260040154608082015290421015611cb95750600092915050565b6000816040015142611ccb9190613d66565b905081606001518110611ce95760808201518251610d2d9190613d66565b60008260600151828460000151611d009190613d4f565b611d0a9190613dee565b9050826080015181611d1c9190613d66565b95945050505050565b6000611d32338484612893565b5060019392505050565b6018546001600160a01b03163314611d665760405162461bcd60e51b8152600401610d5f90613d79565b6008805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff1990941692881692909217929092171617905580611daa8385613ec0565b611db49190613ec0565b6008805467ffff0000000000001916600160301b61ffff93841602179055600754600091611deb9162010000810482169116613ec0565b60085461ffff9182169250600160301b900416811015611e5d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610d5f565b50505050565b6018546001600160a01b03163314611e8d5760405162461bcd60e51b8152600401610d5f90613d79565b601454610100900460ff1615611ef557306001600160a01b03821603611ef55760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610d5f565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f709190613ee2565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190613efb565b6018546001600160a01b031633146120095760405162461bcd60e51b8152600401610d5f90613d79565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b031633146120925760405162461bcd60e51b8152600401610d5f90613d79565b601454610100900460ff16156120ea5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610d5f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190613f18565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c49190613f18565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561220f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122339190613f18565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166123c957816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561229e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c29190613f18565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561230f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123339190613f18565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a49190613f18565b600b80546001600160a01b0319166001600160a01b03929092169190911790556123e5565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610eb6923092910416600019612758565b6018546001600160a01b031633146124685760405162461bcd60e51b8152600401610d5f90613d79565b601454610100900460ff16156124c05760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610d5f565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611487573d6000803e3d6000fd5b6018546001600160a01b031633146125235760405162461bcd60e51b8152600401610d5f90613d79565b82846125316008600a613d40565b61253f906305f5e100613d4f565b6125499190613d4f565b6125539190613dee565b60105580826125646008600a613d40565b612572906305f5e100613d4f565b61257c9190613d4f565b6125869190613dee565b601181905560105411156125e65760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610d5f565b600b54612710906125ff906001600160a01b0316611531565b61260a906096613d4f565b6126149190613dee565b60115411156126715760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610d5f565b620f42406126816008600a613d40565b61268f906305f5e100613d4f565b6126999190613dee565b60115410156126ba5760405162461bcd60e51b8152600401610d5f90613f35565b620f42406126ca6008600a613d40565b6126d8906305f5e100613d4f565b6126e29190613dee565b6010541015611e5d5760405162461bcd60e51b8152600401610d5f90613f35565b6018546001600160a01b0316331461272d5760405162461bcd60e51b8152600401610d5f90613d79565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166127a45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5f565b6001600160a01b0382166127f05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610d5f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061152a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130b9565b60006001600160a01b0384166128f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d5f565b6001600160a01b03831661295b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d5f565b600082116129bd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610d5f565b6001600160a01b03841660009081526006602052604090205460ff161580156129ff57506001600160a01b03831660009081526006602052604090205460ff16155b15612af357601654821115612a625760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e74206578636565647320746865203125206c6044820152631a5b5a5d60e21b6064820152608401610d5f565b6001600160a01b038316600090815260208190526040812054612a86908490613ddb565b9050601754811115612af15760405162461bcd60e51b815260206004820152602e60248201527f526563697069656e742065786365656473206d6178696d756d2077616c6c657460448201526d0818985b185b98d9481b1a5b5a5d60921b6064820152608401610d5f565b505b6001600160a01b0384166000908152600160205260408120548190819060ff1615612b215760019250612b4f565b6001600160a01b03861660009081526001602052604090205460ff1615612b4b5760019150612b4f565b5060015b600e546001600160a01b0390811690881603612bfd57600b546001600160a01b0387811691161480612b8b57506001600160a01b03861661dead145b612bfd5760405162461bcd60e51b815260206004820152603760248201527f6275794261636b4275726e4c502063616e206f6e6c792073656e6420746f204460448201527f45582070616972206f72206275726e20616464726573730000000000000000006064820152608401610d5f565b612c0787876130ea565b15612d085760145460ff16612d085780612c635760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610d5f565b6001600160a01b03871660009081526005602052604090205460ff16158015612ca557506001600160a01b03861660009081526005602052604090205460ff16155b15612d085760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610d5f565b8115612d9857600f5460ff16612d9857600f54610100900460ff1615612d98576000612d3330611531565b90506010548110612d965760115460125460ff1615612d8057601354600b546127109190612d69906001600160a01b0316611531565b612d739190613d4f565b612d7d9190613dee565b90505b808210612d8b578091505b612d94826131ff565b505b505b612da6878787868686612db1565b979650505050505050565b6001600160a01b03861660009081526020818152604080832054600990925282205415612eab576000612de389611c57565b6001600160a01b038a16600090815260096020526040902054909150612e1590612e0e908390613d66565b8390612851565b915081871115612e675760405162461bcd60e51b815260206004820152601e60248201527f416d6f756e74206578636565647320756e6c6f636b656420746f6b656e7300006044820152606401610d5f565b6001600160a01b038916600090815260096020526040902060040154612e8d90886135ea565b6001600160a01b038a16600090815260096020526040902060040155505b6001600160a01b03881660009081526006602052604090205460019060ff1680612eed57506001600160a01b03881660009081526006602052604090205460ff165b15612ef6575060005b6001600160a01b03891660009081526020819052604081208054899290612f1e908490613d66565b909155506000905081612f315787612f3d565b612f3d8a898989613649565b9050806000808b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f739190613ddb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fbf91815260200190565b60405180910390a3601454610100900460ff166130a957612fe08a8a6136f9565b601454610100900460ff16158015612ffd5750612ffd8a8a6130ea565b801561302257506001600160a01b038a1660009081526005602052604090205460ff16155b801561304757506001600160a01b03891660009081526005602052604090205460ff16155b8015613051575084155b156130a95760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610d5f565b5060019998505050505050505050565b600081848411156130dd5760405162461bcd60e51b8152600401610d5f9190613839565b506000611d1c8486613d66565b6018546000906001600160a01b0384811691161480159061311957506018546001600160a01b03838116911614155b801561313057506018546001600160a01b03163214155b801561315557506001600160a01b03821660009081526004602052604090205460ff16155b801561317a57506001600160a01b03831660009081526004602052604090205460ff16155b801561319157506001600160a01b03821661dead14155b80156131a557506001600160a01b03821615155b80156131ba57506001600160a01b0383163014155b80156131da57506014546001600160a01b03848116620100009092041614155b801561152a5750506014546201000090046001600160a01b0390811691161415919050565b600f805460ff191660011790556040805160808101825260085461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b90049091166060820181905260000361325d57506135dd565b306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146132c057306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132f5576132f5613da4565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338c9190613f18565b8160018151811061339f5761339f613da4565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906133ec908690600090869030904290600401613f83565b600060405180830381600087803b15801561340657600080fd5b505af1925050508015613417575060015b6134225750506135dd565b6000479050600080846060015161ffff16856020015161ffff16846134479190613d4f565b6134519190613dee565b90506000856060015161ffff16866040015161ffff16856134729190613d4f565b61347c9190613dee565b9050600061348a8284613ddb565b6134949086613d66565b875190915061ffff16156134ff57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146134f4576040519150601f19603f3d011682016040523d82523d6000602084013e6134f9565b606091505b50909450505b602087015161ffff161561356a57600d546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461355f576040519150601f19603f3d011682016040523d82523d6000602084013e613564565b606091505b50909450505b604087015161ffff16156135d557600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146135ca576040519150601f19603f3d011682016040523d82523d6000602084013e6135cf565b606091505b50909450505b505050505050505b50600f805460ff19169055565b6000806135f78385613ddb565b90508381101561152a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d5f565b600080613656848461148a565b9050806000036136695784915050610d2d565b60006127106136788388613d4f565b6136829190613dee565b905080156136ef5730600090815260208190526040812080548392906136a9908490613ddb565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612da68187613d66565b601454610100900460ff161561375d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610d5f565b61376782826130ea565b1580156137815750600b546001600160a01b038281169116145b15611942576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff0019166101001790819055620100009004166137f9576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161205c565b60006020808352835180602085015260005b818110156138675785810183015185820160400152820161384b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461148757600080fd5b600080604083850312156138b057600080fd5b82356138bb81613888565b946020939093013593505050565b6000602082840312156138db57600080fd5b813561152a81613888565b6000806000606084860312156138fb57600080fd5b833561390681613888565b9250602084013561391681613888565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561396657613966613927565b604052919050565b600067ffffffffffffffff82111561398857613988613927565b5060051b60200190565b600082601f8301126139a357600080fd5b813560206139b86139b38361396e565b61393d565b8083825260208201915060208460051b8701019350868411156139da57600080fd5b602086015b848110156139f657803583529183019183016139df565b509695505050505050565b60008060408385031215613a1457600080fd5b823567ffffffffffffffff80821115613a2c57600080fd5b818501915085601f830112613a4057600080fd5b81356020613a506139b38361396e565b82815260059290921b84018101918181019089841115613a6f57600080fd5b948201945b83861015613a96578535613a8781613888565b82529482019490820190613a74565b96505086013592505080821115613aac57600080fd5b50613ab985828601613992565b9150509250929050565b600060208284031215613ad557600080fd5b5035919050565b803561ffff81168114613aee57600080fd5b919050565b600080600060608486031215613b0857600080fd5b613b1184613adc565b9250613b1f60208501613adc565b9150613b2d60408501613adc565b90509250925092565b801515811461148757600080fd5b60008060408385031215613b5757600080fd5b8235613b6281613888565b91506020830135613b7281613b36565b809150509250929050565b60008060408385031215613b9057600080fd5b8235613b6281613b36565b600080600060608486031215613bb057600080fd5b8335613bbb81613888565b92506020840135613bcb81613888565b91506040840135613bdb81613888565b809150509250925092565b60008060408385031215613bf957600080fd5b8235613c0481613888565b91506020830135613b7281613888565b60008060008060808587031215613c2a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613c97578160001904821115613c7d57613c7d613c46565b80851615613c8a57918102915b93841c9390800290613c61565b509250929050565b600082613cae57506001610c68565b81613cbb57506000610c68565b8160018114613cd15760028114613cdb57613cf7565b6001915050610c68565b60ff841115613cec57613cec613c46565b50506001821b610c68565b5060208310610133831016604e8410600b8410161715613d1a575081810a610c68565b613d248383613c5c565b8060001904821115613d3857613d38613c46565b029392505050565b600061152a60ff841683613c9f565b8082028115828204841417610c6857610c68613c46565b81810381811115610c6857610c68613c46565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613dd157613dd1613c46565b6001019392505050565b80820180821115610c6857610c68613c46565b600082613e0b57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60008060408385031215613e8057600080fd5b8251613e8b81613888565b6020840151909250613b7281613888565b60008060408385031215613eaf57600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613edb57613edb613c46565b5092915050565b600060208284031215613ef457600080fd5b5051919050565b600060208284031215613f0d57600080fd5b815161152a81613b36565b600060208284031215613f2a57600080fd5b815161152a81613888565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015613fd55784516001600160a01b031683529383019391830191600101613fb0565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201b515c8275897495199493ee27bf3bb71553992de62ede03588bf5c9010dfefb64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003e50546092076300a8f1fdcc43d8c221a42fbf18000000000000000000000000ea4ebd03ed27a6c246749437ccf2cbef006bd1c90000000000000000000000003cdbbdf0588f60116b0a0651ed4bc6c62c7fcf40000000000000000000000000f7fb9dea516d351881c5d72f330cfc49ef52abbd
-----Decoded View---------------
Arg [0] : marketingWallet (address): 0x3E50546092076300a8f1FDCc43d8C221a42Fbf18
Arg [1] : developmentWallet (address): 0xEa4EBd03ed27a6c246749437cCF2CbEf006Bd1c9
Arg [2] : buyBackBurnLPWallet (address): 0x3CdbbDF0588f60116B0A0651ed4BC6c62C7FCF40
Arg [3] : teamFoundationWallet (address): 0xf7Fb9deA516D351881C5d72F330Cfc49ef52aBbD
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000003e50546092076300a8f1fdcc43d8c221a42fbf18
Arg [1] : 000000000000000000000000ea4ebd03ed27a6c246749437ccf2cbef006bd1c9
Arg [2] : 0000000000000000000000003cdbbdf0588f60116b0a0651ed4bc6c62c7fcf40
Arg [3] : 000000000000000000000000f7fb9dea516d351881c5d72f330cfc49ef52abbd
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.