ERC-20
Overview
Max Total Supply
420 420
Holders
44
Market
Price
$0.00 @ 0.000000 FTM
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
6.796227333 420Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
FourTwennyToken
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at ftmscan.com on 2021-11-15 */ /** https://twitter.com/elonmusk/status/1460062031084761090?s=20 .-') _ .-. .-') ('-. .-') _ ( OO) ) \ ( OO ) _( OO) ( OO ) ) .---. .-----. .----. / '._ .-'),-----. ,--. ,--. (,------.,--./ ,--,' / . | / ,-. \ / .. \ |'--...__)( OO' .-. '| .' / | .---'| \ | |\ / /| | '-' | |. / \ . '--. .--'/ | | | || /, | | | \| | ) / / | |_ .' / | | ' | | | \_) | |\| || ' _)(| '--. | . |/ / '-' | .' /__ ' \ / ' | | \ | | | || . \ | .--' | |\ | `----| |-'| | \ `' / | | `' '-' '| |\ \ | `---.| | \ | `--' `-------' `---'' `--' `-----' `--' '--' `------'`--' `--' TELEGRAM https://t.me/FTM420degens @FTM420Degens Dev: @FrennaFrens */ // SPDX-License-Identifier: NOLICENSE pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } //"ETH" symb is used for better uniswap-core integration //uniswap is use due to their better repo management contract FourTwennyToken is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; bool public tradingEnabled = false; bool public swapEnabled = true; bool public buyBackEnabled = false; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 420 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public maxBuyAmount = _tTotal.mul(2).div(100); uint256 public maxSellAmount = _tTotal.mul(1).div(100); uint256 public swapTokensAtAmount = 1 * 10**_decimals; uint256 public _maxWalletSize = 5000 * 10**9; uint256 public buyBackUpperLimit = 1 * 10**18; address public marketingAddress = 0x000000000000000000000000000000000000dEaD; address public buybackpoolAddress = 0x623E8E3Cb352548694085CBaDBf540eC9cBb6Ba1; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; string private constant _name = "420"; string private constant _symbol = "420"; struct feeRatesStruct { uint256 rfi; uint256 buybackpool; uint256 marketing; uint256 liquidity; uint256 buyback; } feeRatesStruct public feeRates = feeRatesStruct( {rfi: 0, buybackpool: 30, marketing: 0, liquidity: 10, buyback: 0 }); feeRatesStruct public sellFeeRates = feeRatesStruct( {rfi: 0, buybackpool: 30, marketing: 0, liquidity: 10, buyback: 0 }); struct TotFeesPaidStruct{ uint256 rfi; uint256 buybackpool; uint256 marketing; uint256 liquidity; uint256 buyBack; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rBuybackpool; uint256 rMarketing; uint256 rLiquidity; uint256 rBuyback; uint256 tTransferAmount; uint256 tRfi; uint256 tBuybackpool; uint256 tMarketing; uint256 tLiquidity; uint256 tBuyback; } event FeesChanged(); event TradingEnabled(uint256 startDate); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingAddress]=true; _isExcludedFromFee[buybackpoolAddress] = true; emit Transfer(address(0), owner(), _tTotal); } //std ERC20: function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } //override ERC20: function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender]+addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); valuesFromGetValues memory s = _getValues(tAmount, true, false); _rOwned[sender] = _rOwned[sender].sub(s.rAmount); _rTotal = _rTotal.sub(s.rAmount); totFeesPaid.rfi += tAmount; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true, false); return s.rTransferAmount; } } function startTrading() external onlyOwner{ tradingEnabled = true; swapEnabled = true; emit TradingEnabled(block.timestamp); } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } //@dev kept original RFI naming -> "reward" as in reflection function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() { _maxWalletSize = _tTotal.mul(maxWallPercent).div( 10**2 ); } function setFeeRates(uint256 _rfi, uint256 _buybackpool, uint256 _marketing, uint256 _liquidity, uint256 _buyback) external onlyOwner { feeRates.rfi = _rfi; feeRates.buybackpool = _buybackpool; feeRates.marketing = _marketing; feeRates.liquidity = _liquidity; feeRates.buyback = _buyback; emit FeesChanged(); } function setSellFeeRates(uint256 _rfi, uint256 _buybackpool, uint256 _marketing, uint256 _liquidity, uint256 _buyback) external onlyOwner{ sellFeeRates.rfi = _rfi; sellFeeRates.buybackpool = _buybackpool; sellFeeRates.marketing = _marketing; sellFeeRates.liquidity = _liquidity; sellFeeRates.buyback = _buyback; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function _takeBuybackpool(uint256 rBuybackpool, uint256 tBuybackpool) private { totFeesPaid.buybackpool +=tBuybackpool; if(_isExcluded[address(this)]){ _tOwned[address(this)]+=tBuybackpool; } _rOwned[address(this)] +=rBuybackpool; } function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private { totFeesPaid.buyBack +=tBuyback; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tBuyback; } _rOwned[address(this)] +=rBuyback; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing +=tMarketing; if(_isExcluded[marketingAddress]) { _tOwned[marketingAddress]+=tMarketing; } _rOwned[marketingAddress] +=rMarketing; } function _getValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee, isSale); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rBuybackpool, to_return.rMarketing, to_return.rLiquidity, to_return.rBuyback) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } if(isSale){ s.tRfi = tAmount*sellFeeRates.rfi/1000; s.tBuybackpool = tAmount*sellFeeRates.buybackpool/1000; s.tMarketing = tAmount*sellFeeRates.marketing/1000; s.tLiquidity = tAmount*sellFeeRates.liquidity/1000; s.tBuyback = tAmount*sellFeeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tBuybackpool-s.tMarketing-s.tLiquidity-s.tBuyback; } else{ s.tRfi = tAmount*feeRates.rfi/1000; s.tBuybackpool = tAmount*feeRates.buybackpool/1000; s.tMarketing = tAmount*feeRates.marketing/1000; s.tLiquidity = tAmount*feeRates.liquidity/1000; s.tBuyback = tAmount*feeRates.buyback/1000; s.tTransferAmount = tAmount-s.tRfi-s.tBuybackpool-s.tMarketing-s.tLiquidity-s.tBuyback; } return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rBuybackpool,uint256 rMarketing, uint256 rLiquidity, uint256 rBuyback) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0,0); } rRfi = s.tRfi*currentRate; rBuybackpool = s.tBuybackpool*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; rBuyback = s.tBuyback*currentRate; rTransferAmount = rAmount-rRfi-rBuybackpool-rMarketing-rLiquidity-rBuyback; return (rAmount, rTransferAmount, rRfi,rBuybackpool,rMarketing,rLiquidity, rBuyback); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { 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"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ require(tradingEnabled, "Trading is not enabled yet"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && from == pair){ require(amount <= maxBuyAmount, "you are exceeding maxBuyAmount"); uint256 walletCurrentBalance = balanceOf(to); require(walletCurrentBalance + amount <= _maxWalletSize, "Exceeds maximum wallet token amount"); } if( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && from == pair){ require(amount <= maxSellAmount, "Amount is exceeding maxSellAmount"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair){ uint256 balance = address(this).balance; if (buyBackEnabled && balance > uint256(1 * 10**18) && to == pair) { if (balance > buyBackUpperLimit) balance = buyBackUpperLimit; buyBackTokens(balance.div(100)); } swapAndLiquify(swapTokensAtAmount); } bool isSale; if(to == pair) isSale = true; _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]), isSale); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale); if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; _reflectRfi(s.rRfi, s.tRfi); _takeBuybackpool(s.rBuybackpool,s.tBuybackpool); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeMarketing(s.rMarketing, s.tMarketing); _takeBuyback(s.rBuyback, s.tBuyback); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tBuybackpool + s.tBuyback); emit Transfer(sender, marketingAddress, s.tMarketing); } function buyBackTokens(uint256 amount) private lockTheSwap{ if (amount > 0) { swapETHForTokens(amount); } } function swapETHForTokens(uint256 amount) private { // generate the spookyswap pair path of token -> weth address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); // make the swap router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); } function swapAndLiquify(uint256 tokens) private lockTheSwap{ // Split the contract balance into halves uint256 denominator= (feeRates.liquidity + feeRates.buyback + feeRates.buybackpool) * 2; uint256 tokensToAddLiquidityWith = tokens * feeRates.liquidity / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForFTM(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - feeRates.liquidity); uint256 ftmToAddLiquidityWith = unitBalance * feeRates.liquidity; if(ftmToAddLiquidityWith > 0){ // Add liquidity to spookyswap addLiquidity(tokensToAddLiquidityWith, ftmToAddLiquidityWith); } // Send FTM to buyback pool uint256 buybackpoolAmt = unitBalance * 2 * feeRates.buybackpool; if(buybackpoolAmt > 0){ payable(buybackpoolAddress).transfer(buybackpoolAmt); } } function addLiquidity(uint256 tokenAmount, uint256 ftmAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: ftmAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForFTM(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function updateMarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet ,'Wallet already set'); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress]; } function updateBuybackpoolWallet(address newWallet) external onlyOwner{ require(buybackpoolAddress != newWallet ,'Wallet already set'); buybackpoolAddress = newWallet; _isExcludedFromFee[buybackpoolAddress]; } function setMaxBuyAndSellAmount(uint256 _maxBuyamount, uint256 _maxSellAmount) external onlyOwner{ maxBuyAmount = _maxBuyamount * 10**9; maxSellAmount = _maxSellAmount * 10**9; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateBuybackEnabled(bool _enabled) external onlyOwner{ buyBackEnabled = _enabled; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { buyBackUpperLimit = buyBackLimit * 10**15; } function manualBuyback(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient FTM balance"); payable(msg.sender).transfer(weiAmount); } function transferBEP20(address tokenAddress) external onlyOwner{ IERC20(tokenAddress).transfer(msg.sender, IERC20(tokenAddress).balanceOf(address(this))); } /// @dev Update router address in case of pancakeswap migration function setRouterAddress(address newRouter) external onlyOwner { require(newRouter != address(router)); IRouter _newRouter = IRouter(newRouter); address get_pair = IFactory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { pair = IFactory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { pair = get_pair; } router = _newRouter; } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startDate","type":"uint256"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackpoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"buybackpool","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"manualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"buybackpool","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_buybackpool","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyamount","type":"uint256"},{"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"setMaxBuyAndSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_buybackpool","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellFeeRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"buybackpool","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyBack","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"transferBEP20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateBuybackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackpoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526007805462ffffff1916610100179055620000226009600a620005f4565b62000030906101a462000605565b600981905562000043906000196200063d565b620000519060001962000654565b600a556200008b60646200007760026009546200046c60201b62001b771790919060201c565b6200048360201b62001b831790919060201c565b600b55620000b160646200007760016009546200046c60201b62001b771790919060201c565b600c55620000c26009600a620005f4565b620000cf90600162000605565b600d5565048c27395000600e55670de0b6b3a7640000600f55601080546001600160a01b031990811661dead179091556011805490911673623e8e3cb352548694085cbadbf540ec9cbb6ba11790556040805160a080820183526000808352601e6020808501829052848601839052600a60608087018290526080968701859052601285905560138490556014859055601582905560168590558751958601885284865291850183905295840183905283018590529190920182905260178290556018556019819055601a91909155601b55348015620001ae57600080fd5b5060405162003ddc38038062003ddc833981016040819052620001d1916200066e565b620001dc3362000491565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024891906200066e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc91906200066e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033091906200066e565b60078054600160201b600160c01b0319166401000000006001600160a01b038681169190910291909117909155600880546001600160a01b031916838316179055600a54600080549092168252600160208190526040832091909155919250600490620003a56000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601054821681526004909352818320805485166001908117909155601154909116835291208054909216179055620004136000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200045b91815260200190565b60405180910390a3505050620006b7565b60006200047a828462000605565b90505b92915050565b60006200047a8284620006a0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005385781600019048211156200051c576200051c620004e1565b808516156200052a57918102915b93841c9390800290620004fc565b509250929050565b60008262000551575060016200047d565b8162000560575060006200047d565b81600181146200057957600281146200058457620005a4565b60019150506200047d565b60ff841115620005985762000598620004e1565b50506001821b6200047d565b5060208310610133831016604e8410600b8410161715620005c9575081810a6200047d565b620005d58383620004f7565b8060001904821115620005ec57620005ec620004e1565b029392505050565b60006200047a60ff84168362000540565b6000816000190483118215151615620006225762000622620004e1565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200064f576200064f62000627565b500690565b600082821015620006695762000669620004e1565b500390565b6000602082840312156200068157600080fd5b81516001600160a01b03811681146200069957600080fd5b9392505050565b600082620006b257620006b262000627565b500490565b61371580620006c76000396000f3fe60806040526004361061031e5760003560e01c80637688c584116101ab578063a5ece941116100f7578063d257b34f11610095578063ea2f0b371161006f578063ea2f0b37146109a4578063f2fde38b146109c4578063f887ea40146109e4578063f9e0896914610a0b57600080fd5b8063d257b34f14610928578063dd62ed3e14610948578063e2f456051461098e57600080fd5b8063aacebbe3116100d1578063aacebbe3146108a8578063abeef102146108c8578063c480512e146108e8578063cdebfea31461090857600080fd5b8063a5ece94114610848578063a8aa1b3114610868578063a9059cbb1461088857600080fd5b80638da5cb5b11610164578063924de9b71161013e578063924de9b7146107e157806395d89b411461032a5780639ba5e4d514610801578063a457c2d71461082857600080fd5b80638da5cb5b1461078d5780638f9a55c0146107ab57806390ab7668146107c157600080fd5b80637688c584146106b757806382bf293c146106de57806382d2a4bb146106fe57806388e765ff1461071e57806388f82020146107345780638933fff81461076d57600080fd5b806341cb87fc1161026a5780636053a0e3116102235780636ddd1713116101fd5780636ddd17131461064d57806370a082311461066c57806370e502411461068c578063715018a6146106a257600080fd5b80636053a0e3146105f757806366d602ae1461061757806368ca61451461062d57600080fd5b806341cb87fc14610524578063437823ec146105445780634549b039146105645780634ada218b1461058457806352390c021461059e5780635342acb4146105be57600080fd5b806327c8f835116102d7578063313ce567116102b1578063313ce567146104a85780633685d419146104c457806339509351146104e45780633bd5d1731461050457600080fd5b806327c8f8351461045b578063293230b8146104715780632d8381191461048857600080fd5b806306fdde031461032a578063095ea7b3146103655780630c6727731461039557806318160ddd146103cd57806318a90c44146103ec57806323b872dd1461043b57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50604080518082018252600381526203432360ec1b6020820152905161035c9190613174565b60405180910390f35b34801561037157600080fd5b506103856103803660046131de565b610a2b565b604051901515815260200161035c565b3480156103a157600080fd5b506011546103b5906001600160a01b031681565b6040516001600160a01b03909116815260200161035c565b3480156103d957600080fd5b506009545b60405190815260200161035c565b3480156103f857600080fd5b50601754601854601954601a54601b54610413949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161035c565b34801561044757600080fd5b5061038561045636600461320a565b610a42565b34801561046757600080fd5b506103b561dead81565b34801561047d57600080fd5b50610486610aac565b005b34801561049457600080fd5b506103de6104a336600461324b565b610b23565b3480156104b457600080fd5b506040516009815260200161035c565b3480156104d057600080fd5b506104866104df366004613264565b610ba0565b3480156104f057600080fd5b506103856104ff3660046131de565b610d57565b34801561051057600080fd5b5061048661051f36600461324b565b610d8e565b34801561053057600080fd5b5061048661053f366004613264565b610e83565b34801561055057600080fd5b5061048661055f366004613264565b6111dc565b34801561057057600080fd5b506103de61057f36600461328f565b61122a565b34801561059057600080fd5b506007546103859060ff1681565b3480156105aa57600080fd5b506104866105b9366004613264565b6112b8565b3480156105ca57600080fd5b506103856105d9366004613264565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561060357600080fd5b506007546103859062010000900460ff1681565b34801561062357600080fd5b506103de600c5481565b34801561063957600080fd5b506104866106483660046132bf565b61140b565b34801561065957600080fd5b5060075461038590610100900460ff1681565b34801561067857600080fd5b506103de610687366004613264565b61147e565b34801561069857600080fd5b506103de600f5481565b3480156106ae57600080fd5b506104866114dd565b3480156106c357600080fd5b50601254601354601454601554601654610413949392919085565b3480156106ea57600080fd5b506104866106f936600461324b565b611513565b34801561070a57600080fd5b5061048661071936600461324b565b611563565b34801561072a57600080fd5b506103de600b5481565b34801561074057600080fd5b5061038561074f366004613264565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077957600080fd5b50610486610788366004613264565b6115a4565b34801561079957600080fd5b506000546001600160a01b03166103b5565b3480156107b757600080fd5b506103de600e5481565b3480156107cd57600080fd5b506104866107dc366004613264565b6116af565b3480156107ed57600080fd5b506104866107fc3660046132fa565b611755565b34801561080d57600080fd5b50601c54601d54601e54601f54602054610413949392919085565b34801561083457600080fd5b506103856108433660046131de565b611799565b34801561085457600080fd5b506010546103b5906001600160a01b031681565b34801561087457600080fd5b506008546103b5906001600160a01b031681565b34801561089457600080fd5b506103856108a33660046131de565b6117e8565b3480156108b457600080fd5b506104866108c3366004613264565b6117f5565b3480156108d457600080fd5b506104866108e33660046132bf565b61189b565b3480156108f457600080fd5b5061048661090336600461324b565b61190e565b34801561091457600080fd5b50610486610923366004613317565b6119b5565b34801561093457600080fd5b5061048661094336600461324b565b611a05565b34801561095457600080fd5b506103de610963366004613339565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561099a57600080fd5b506103de600d5481565b3480156109b057600080fd5b506104866109bf366004613264565b611a4b565b3480156109d057600080fd5b506104866109df366004613264565b611a96565b3480156109f057600080fd5b506007546103b590600160201b90046001600160a01b031681565b348015610a1757600080fd5b50610486610a263660046132fa565b611b31565b6000610a38338484611b8f565b5060015b92915050565b6000610a4f848484611cb3565b610aa18433610a9c85604051806060016040528060288152602001613693602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190612236565b611b8f565b5060015b9392505050565b6000546001600160a01b03163314610adf5760405162461bcd60e51b8152600401610ad690613367565b60405180910390fd5b6007805461ffff19166101011790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6000600a54821115610b8a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ad6565b6000610b94612262565b9050610aa581846133b2565b6000546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03811660009081526005602052604090205460ff16610c325760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ad6565b60005b600654811015610d5357816001600160a01b031660068281548110610c5c57610c5c6133d4565b6000918252602090912001546001600160a01b03161415610d415760068054610c87906001906133ea565b81548110610c9757610c976133d4565b600091825260209091200154600680546001600160a01b039092169183908110610cc357610cc36133d4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d1b57610d1b613401565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d4b81613417565b915050610c35565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a38918590610a9c908690613432565b3360008181526005602052604090205460ff1615610e035760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ad6565b6000610e128360016000612285565b80516001600160a01b038416600090815260016020526040902054919250610e3a91906122d4565b6001600160a01b0383166000908152600160205260409020558051600a54610e61916122d4565b600a55601c8054849190600090610e79908490613432565b9091555050505050565b6000546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610ad690613367565b6007546001600160a01b03828116600160201b909204161415610ecf57600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f38919061344a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa9919061344a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611018919061344a565b90506001600160a01b03811661119157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a919061344a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb919061344a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c919061344a565b600880546001600160a01b0319166001600160a01b03929092169190911790556111ad565b600880546001600160a01b0319166001600160a01b0383161790555b50600780546001600160a01b03909216600160201b02640100000000600160c01b031990921691909117905550565b6000546001600160a01b031633146112065760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b600060095483111561127e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ad6565b8161129c5760006112928460016000612285565b519150610a3c9050565b60006112ab8460016000612285565b602001519150610a3c9050565b6000546001600160a01b031633146112e25760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03811660009081526005602052604090205460ff161561134b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ad6565b6001600160a01b038116600090815260016020526040902054156113a5576001600160a01b03811660009081526001602052604090205461138b90610b23565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b031633146114355760405162461bcd60e51b8152600401610ad690613367565b601285905560138490556014839055601582905560168190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156114bb57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a3c90610b23565b6000546001600160a01b031633146115075760405162461bcd60e51b8152600401610ad690613367565b61151160006122e0565b565b6000546001600160a01b0316331461153d5760405162461bcd60e51b8152600401610ad690613367565b61155d606461155783600954611b7790919063ffffffff16565b90611b83565b600e5550565b6000546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610ad690613367565b61159e8166038d7ea4c68000613467565b600f5550565b6000546001600160a01b031633146115ce5760405162461bcd60e51b8152600401610ad690613367565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613486565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d53919061349f565b6000546001600160a01b031633146116d95760405162461bcd60e51b8152600401610ad690613367565b6011546001600160a01b038281169116141561172c5760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610ad6565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b0316331461177f5760405162461bcd60e51b8152600401610ad690613367565b600780549115156101000261ff0019909216919091179055565b6000610a383384610a9c856040518060600160405280602581526020016136bb602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190612236565b6000610a38338484611cb3565b6000546001600160a01b0316331461181f5760405162461bcd60e51b8152600401610ad690613367565b6010546001600160a01b03828116911614156118725760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610ad6565b601080546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146118c55760405162461bcd60e51b8152600401610ad690613367565b601785905560188490556019839055601a829055601b8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146119385760405162461bcd60e51b8152600401610ad690613367565b804710156119885760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e742046544d2062616c616e636500000000000000006044820152606401610ad6565b604051339082156108fc029083906000818181858888f19350505050158015610d53573d6000803e3d6000fd5b6000546001600160a01b031633146119df5760405162461bcd60e51b8152600401610ad690613367565b6119ed82633b9aca00613467565b600b556119fe81633b9aca00613467565b600c555050565b6000546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610ad690613367565b611a3b6009600a6135a0565b611a459082613467565b600d5550565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611ac05760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b038116611b255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad6565b611b2e816122e0565b50565b6000546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610ad690613367565b60078054911515620100000262ff000019909216919091179055565b6000610aa58284613467565b6000610aa582846133b2565b6001600160a01b038316611bf15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad6565b6001600160a01b038216611c525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad6565b6001600160a01b038216611d795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad6565b60008111611ddb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad6565b611de48361147e565b811115611e4d5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610ad6565b6001600160a01b03831660009081526004602052604090205460ff16158015611e8f57506001600160a01b03821660009081526004602052604090205460ff16155b15611ee65760075460ff16611ee65760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610ad6565b6000546001600160a01b03848116911614801590611f1257506000546001600160a01b03838116911614155b8015611f2657506001600160a01b03821615155b8015611f3d57506001600160a01b03821661dead14155b8015611f5657506008546001600160a01b038481169116145b1561202457600b54811115611fad5760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610ad6565b6000611fb88361147e565b600e54909150611fc88383613432565b11156120225760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610ad6565b505b6000546001600160a01b0384811691161480159061205057506000546001600160a01b03838116911614155b801561206457506001600160a01b03821615155b801561207b57506001600160a01b03821661dead14155b801561209457506008546001600160a01b038481169116145b156120f557600c548111156120f55760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610ad6565b60006121003061147e565b600d54600754919250821015906301000000900460ff1615801561212b5750600754610100900460ff165b80156121345750805b801561214e57506008546001600160a01b03868116911614155b156121c157600754479062010000900460ff1680156121745750670de0b6b3a764000081115b801561218d57506008546001600160a01b038681169116145b156121b457600f548111156121a15750600f545b6121b46121af826064611b83565b612330565b6121bf600d54612362565b505b6008546000906001600160a01b03868116911614156121de575060015b6001600160a01b03861660009081526004602052604090205461222e9087908790879060ff168061222757506001600160a01b03891660009081526004602052604090205460ff165b158561249f565b505050505050565b6000818484111561225a5760405162461bcd60e51b8152600401610ad69190613174565b505050900390565b600080600061226f61275a565b909250905061227e81836133b2565b9250505090565b61228d61310c565b6122988484846128dd565b90506122ad8185856122a8612262565b612af4565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610aa582846133ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805463ff0000001916630100000017905580156123525761235281612bca565b506007805463ff00000019169055565b6007805463ff000000191663010000001790556013546016546015546000929161238b91613432565b6123959190613432565b6123a0906002613467565b9050600081601260030154846123b69190613467565b6123c091906133b2565b905060006123ce82856133ea565b9050476123da82612d37565b60006123e682476133ea565b6015549091506000906123f990876133ea565b61240390836133b2565b6015549091506000906124169083613467565b90508015612428576124288682612eb0565b601354600090612439846002613467565b6124439190613467565b90508015612487576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612485573d6000803e3d6000fd5b505b50506007805463ff0000001916905550505050505050565b60006124ac848484612285565b6001600160a01b03871660009081526005602052604090205490915060ff161561250e576001600160a01b0386166000908152600260205260409020546124f49085906133ea565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156125715760e08101516001600160a01b0386166000908152600260205260409020546125579190613432565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461259691906133ea565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546125cd9190613432565b6001600160a01b03861660009081526001602052604090819020919091558101516101008201516125fe9190612f94565b6126118160600151826101200151612fc9565b6126248160a0015182610160015161303f565b6126378160800151826101400151613054565b61264a8160c001518261018001516130eb565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161269391815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461012001518561016001516126ec9190613432565b6126f69190613432565b60405190815260200160405180910390a36010546101408201516040519081526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600a546009546000918291825b6006548110156128ac57826001600060068481548110612789576127896133d4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806127f457508160026000600684815481106127cd576127cd6133d4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561280a57600a54600954945094505050509091565b6001600060068381548110612821576128216133d4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461285090846133ea565b92506002600060068381548110612869576128696133d4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461289890836133ea565b9150806128a481613417565b915050612767565b50600954600a546128bd91906133b2565b8210156128d457600a546009549350935050509091565b90939092509050565b6128e561310c565b826128f65760e08101849052610aa5565b81156129f7576017546103e89061290d9086613467565b61291791906133b2565b6101008201526018546103e89061292e9086613467565b61293891906133b2565b6101208201526019546103e89061294f9086613467565b61295991906133b2565b610140820152601a546103e8906129709086613467565b61297a91906133b2565b610160820152601b546103e8906129919086613467565b61299b91906133b2565b61018082018190526101608201516101408301516101208401516101008501516129c590896133ea565b6129cf91906133ea565b6129d991906133ea565b6129e391906133ea565b6129ed91906133ea565b60e0820152610aa5565b6012546103e890612a089086613467565b612a1291906133b2565b6101008201526013546103e890612a299086613467565b612a3391906133b2565b6101208201526014546103e890612a4a9086613467565b612a5491906133b2565b6101408201526015546103e890612a6b9086613467565b612a7591906133b2565b6101608201526016546103e890612a8c9086613467565b612a9691906133b2565b6101808201819052610160820151610140830151610120840151610100850151612ac090896133ea565b612aca91906133ea565b612ad491906133ea565b612ade91906133ea565b612ae891906133ea565b60e08201529392505050565b6000808080808080612b06888b613467565b965088612b2457508594506000935083925082915081905080612bbc565b878b6101000151612b359190613467565b9450878b6101200151612b489190613467565b9350878b6101400151612b5b9190613467565b9250878b6101600151612b6e9190613467565b9150878b6101800151612b819190613467565b905080828486612b91898c6133ea565b612b9b91906133ea565b612ba591906133ea565b612baf91906133ea565b612bb991906133ea565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600760049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c62919061344a565b81600081518110612c7557612c756133d4565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612ca957612ca96133d4565b6001600160a01b039283166020918202929092010152600754600160201b90041663b6f9de958360008461dead612ce24261012c613100565b6040518663ffffffff1660e01b8152600401612d0194939291906135f3565b6000604051808303818588803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6c57612d6c6133d4565b60200260200101906001600160a01b031690816001600160a01b031681525050600760049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e03919061344a565b81600181518110612e1657612e166133d4565b6001600160a01b039283166020918202929092010152600754612e43913091600160201b90041684611b8f565b60075460405163791ac94760e01b8152600160201b9091046001600160a01b03169063791ac94790612e82908590600090869030904290600401613628565b600060405180830381600087803b158015612e9c57600080fd5b505af115801561222e573d6000803e3d6000fd5b600754612ecf903090600160201b90046001600160a01b031684611b8f565b6007546001600160a01b03600160201b9091041663f305d719823085600080612f006000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612f68573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f8d9190613664565b5050505050565b81600a6000828254612fa691906133ea565b9091555050601c8054829190600090612fc0908490613432565b90915550505050565b80601c6001016000828254612fde9190613432565b90915550503060009081526005602052604090205460ff161561302057306000908152600260205260408120805483929061301a908490613432565b90915550505b3060009081526001602052604081208054849290612fc0908490613432565b80601c6003016000828254612fde9190613432565b80601c60020160008282546130699190613432565b90915550506010546001600160a01b031660009081526005602052604090205460ff16156130c1576010546001600160a01b0316600090815260026020526040812080548392906130bb908490613432565b90915550505b6010546001600160a01b031660009081526001602052604081208054849290612fc0908490613432565b80601c6004016000828254612fde9190613432565b6000610aa58284613432565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156131a157858101830151858201604001528201613185565b818111156131b3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611b2e57600080fd5b600080604083850312156131f157600080fd5b82356131fc816131c9565b946020939093013593505050565b60008060006060848603121561321f57600080fd5b833561322a816131c9565b9250602084013561323a816131c9565b929592945050506040919091013590565b60006020828403121561325d57600080fd5b5035919050565b60006020828403121561327657600080fd5b8135610aa5816131c9565b8015158114611b2e57600080fd5b600080604083850312156132a257600080fd5b8235915060208301356132b481613281565b809150509250929050565b600080600080600060a086880312156132d757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561330c57600080fd5b8135610aa581613281565b6000806040838503121561332a57600080fd5b50508035926020909101359150565b6000806040838503121561334c57600080fd5b8235613357816131c9565b915060208301356132b4816131c9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826133cf57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000828210156133fc576133fc61339c565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561342b5761342b61339c565b5060010190565b600082198211156134455761344561339c565b500190565b60006020828403121561345c57600080fd5b8151610aa5816131c9565b60008160001904831182151516156134815761348161339c565b500290565b60006020828403121561349857600080fd5b5051919050565b6000602082840312156134b157600080fd5b8151610aa581613281565b600181815b808511156134f75781600019048211156134dd576134dd61339c565b808516156134ea57918102915b93841c93908002906134c1565b509250929050565b60008261350e57506001610a3c565b8161351b57506000610a3c565b8160018114613531576002811461353b57613557565b6001915050610a3c565b60ff84111561354c5761354c61339c565b50506001821b610a3c565b5060208310610133831016604e8410600b841016171561357a575081810a610a3c565b61358483836134bc565b80600019048211156135985761359861339c565b029392505050565b6000610aa560ff8416836134ff565b600081518084526020808501945080840160005b838110156135e85781516001600160a01b0316875295820195908201906001016135c3565b509495945050505050565b84815260806020820152600061360c60808301866135af565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061364760a08301866135af565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561367957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122025892402efa9a6de8e21202e2e42dc5db46bd8343dab9c9b324e39cb9ea3807a64736f6c634300080a0033000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80637688c584116101ab578063a5ece941116100f7578063d257b34f11610095578063ea2f0b371161006f578063ea2f0b37146109a4578063f2fde38b146109c4578063f887ea40146109e4578063f9e0896914610a0b57600080fd5b8063d257b34f14610928578063dd62ed3e14610948578063e2f456051461098e57600080fd5b8063aacebbe3116100d1578063aacebbe3146108a8578063abeef102146108c8578063c480512e146108e8578063cdebfea31461090857600080fd5b8063a5ece94114610848578063a8aa1b3114610868578063a9059cbb1461088857600080fd5b80638da5cb5b11610164578063924de9b71161013e578063924de9b7146107e157806395d89b411461032a5780639ba5e4d514610801578063a457c2d71461082857600080fd5b80638da5cb5b1461078d5780638f9a55c0146107ab57806390ab7668146107c157600080fd5b80637688c584146106b757806382bf293c146106de57806382d2a4bb146106fe57806388e765ff1461071e57806388f82020146107345780638933fff81461076d57600080fd5b806341cb87fc1161026a5780636053a0e3116102235780636ddd1713116101fd5780636ddd17131461064d57806370a082311461066c57806370e502411461068c578063715018a6146106a257600080fd5b80636053a0e3146105f757806366d602ae1461061757806368ca61451461062d57600080fd5b806341cb87fc14610524578063437823ec146105445780634549b039146105645780634ada218b1461058457806352390c021461059e5780635342acb4146105be57600080fd5b806327c8f835116102d7578063313ce567116102b1578063313ce567146104a85780633685d419146104c457806339509351146104e45780633bd5d1731461050457600080fd5b806327c8f8351461045b578063293230b8146104715780632d8381191461048857600080fd5b806306fdde031461032a578063095ea7b3146103655780630c6727731461039557806318160ddd146103cd57806318a90c44146103ec57806323b872dd1461043b57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b50604080518082018252600381526203432360ec1b6020820152905161035c9190613174565b60405180910390f35b34801561037157600080fd5b506103856103803660046131de565b610a2b565b604051901515815260200161035c565b3480156103a157600080fd5b506011546103b5906001600160a01b031681565b6040516001600160a01b03909116815260200161035c565b3480156103d957600080fd5b506009545b60405190815260200161035c565b3480156103f857600080fd5b50601754601854601954601a54601b54610413949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161035c565b34801561044757600080fd5b5061038561045636600461320a565b610a42565b34801561046757600080fd5b506103b561dead81565b34801561047d57600080fd5b50610486610aac565b005b34801561049457600080fd5b506103de6104a336600461324b565b610b23565b3480156104b457600080fd5b506040516009815260200161035c565b3480156104d057600080fd5b506104866104df366004613264565b610ba0565b3480156104f057600080fd5b506103856104ff3660046131de565b610d57565b34801561051057600080fd5b5061048661051f36600461324b565b610d8e565b34801561053057600080fd5b5061048661053f366004613264565b610e83565b34801561055057600080fd5b5061048661055f366004613264565b6111dc565b34801561057057600080fd5b506103de61057f36600461328f565b61122a565b34801561059057600080fd5b506007546103859060ff1681565b3480156105aa57600080fd5b506104866105b9366004613264565b6112b8565b3480156105ca57600080fd5b506103856105d9366004613264565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561060357600080fd5b506007546103859062010000900460ff1681565b34801561062357600080fd5b506103de600c5481565b34801561063957600080fd5b506104866106483660046132bf565b61140b565b34801561065957600080fd5b5060075461038590610100900460ff1681565b34801561067857600080fd5b506103de610687366004613264565b61147e565b34801561069857600080fd5b506103de600f5481565b3480156106ae57600080fd5b506104866114dd565b3480156106c357600080fd5b50601254601354601454601554601654610413949392919085565b3480156106ea57600080fd5b506104866106f936600461324b565b611513565b34801561070a57600080fd5b5061048661071936600461324b565b611563565b34801561072a57600080fd5b506103de600b5481565b34801561074057600080fd5b5061038561074f366004613264565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077957600080fd5b50610486610788366004613264565b6115a4565b34801561079957600080fd5b506000546001600160a01b03166103b5565b3480156107b757600080fd5b506103de600e5481565b3480156107cd57600080fd5b506104866107dc366004613264565b6116af565b3480156107ed57600080fd5b506104866107fc3660046132fa565b611755565b34801561080d57600080fd5b50601c54601d54601e54601f54602054610413949392919085565b34801561083457600080fd5b506103856108433660046131de565b611799565b34801561085457600080fd5b506010546103b5906001600160a01b031681565b34801561087457600080fd5b506008546103b5906001600160a01b031681565b34801561089457600080fd5b506103856108a33660046131de565b6117e8565b3480156108b457600080fd5b506104866108c3366004613264565b6117f5565b3480156108d457600080fd5b506104866108e33660046132bf565b61189b565b3480156108f457600080fd5b5061048661090336600461324b565b61190e565b34801561091457600080fd5b50610486610923366004613317565b6119b5565b34801561093457600080fd5b5061048661094336600461324b565b611a05565b34801561095457600080fd5b506103de610963366004613339565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561099a57600080fd5b506103de600d5481565b3480156109b057600080fd5b506104866109bf366004613264565b611a4b565b3480156109d057600080fd5b506104866109df366004613264565b611a96565b3480156109f057600080fd5b506007546103b590600160201b90046001600160a01b031681565b348015610a1757600080fd5b50610486610a263660046132fa565b611b31565b6000610a38338484611b8f565b5060015b92915050565b6000610a4f848484611cb3565b610aa18433610a9c85604051806060016040528060288152602001613693602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190612236565b611b8f565b5060015b9392505050565b6000546001600160a01b03163314610adf5760405162461bcd60e51b8152600401610ad690613367565b60405180910390fd5b6007805461ffff19166101011790556040514281527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6000600a54821115610b8a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ad6565b6000610b94612262565b9050610aa581846133b2565b6000546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03811660009081526005602052604090205460ff16610c325760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ad6565b60005b600654811015610d5357816001600160a01b031660068281548110610c5c57610c5c6133d4565b6000918252602090912001546001600160a01b03161415610d415760068054610c87906001906133ea565b81548110610c9757610c976133d4565b600091825260209091200154600680546001600160a01b039092169183908110610cc357610cc36133d4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610d1b57610d1b613401565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d4b81613417565b915050610c35565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a38918590610a9c908690613432565b3360008181526005602052604090205460ff1615610e035760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610ad6565b6000610e128360016000612285565b80516001600160a01b038416600090815260016020526040902054919250610e3a91906122d4565b6001600160a01b0383166000908152600160205260409020558051600a54610e61916122d4565b600a55601c8054849190600090610e79908490613432565b9091555050505050565b6000546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610ad690613367565b6007546001600160a01b03828116600160201b909204161415610ecf57600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f38919061344a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa9919061344a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611018919061344a565b90506001600160a01b03811661119157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611066573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108a919061344a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb919061344a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c919061344a565b600880546001600160a01b0319166001600160a01b03929092169190911790556111ad565b600880546001600160a01b0319166001600160a01b0383161790555b50600780546001600160a01b03909216600160201b02640100000000600160c01b031990921691909117905550565b6000546001600160a01b031633146112065760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b600060095483111561127e5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ad6565b8161129c5760006112928460016000612285565b519150610a3c9050565b60006112ab8460016000612285565b602001519150610a3c9050565b6000546001600160a01b031633146112e25760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03811660009081526005602052604090205460ff161561134b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ad6565b6001600160a01b038116600090815260016020526040902054156113a5576001600160a01b03811660009081526001602052604090205461138b90610b23565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6000546001600160a01b031633146114355760405162461bcd60e51b8152600401610ad690613367565b601285905560138490556014839055601582905560168190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156114bb57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a3c90610b23565b6000546001600160a01b031633146115075760405162461bcd60e51b8152600401610ad690613367565b61151160006122e0565b565b6000546001600160a01b0316331461153d5760405162461bcd60e51b8152600401610ad690613367565b61155d606461155783600954611b7790919063ffffffff16565b90611b83565b600e5550565b6000546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610ad690613367565b61159e8166038d7ea4c68000613467565b600f5550565b6000546001600160a01b031633146115ce5760405162461bcd60e51b8152600401610ad690613367565b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116409190613486565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561168b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d53919061349f565b6000546001600160a01b031633146116d95760405162461bcd60e51b8152600401610ad690613367565b6011546001600160a01b038281169116141561172c5760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610ad6565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b0316331461177f5760405162461bcd60e51b8152600401610ad690613367565b600780549115156101000261ff0019909216919091179055565b6000610a383384610a9c856040518060600160405280602581526020016136bb602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190612236565b6000610a38338484611cb3565b6000546001600160a01b0316331461181f5760405162461bcd60e51b8152600401610ad690613367565b6010546001600160a01b03828116911614156118725760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610ad6565b601080546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146118c55760405162461bcd60e51b8152600401610ad690613367565b601785905560188490556019839055601a829055601b8190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146119385760405162461bcd60e51b8152600401610ad690613367565b804710156119885760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e742046544d2062616c616e636500000000000000006044820152606401610ad6565b604051339082156108fc029083906000818181858888f19350505050158015610d53573d6000803e3d6000fd5b6000546001600160a01b031633146119df5760405162461bcd60e51b8152600401610ad690613367565b6119ed82633b9aca00613467565b600b556119fe81633b9aca00613467565b600c555050565b6000546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610ad690613367565b611a3b6009600a6135a0565b611a459082613467565b600d5550565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611ac05760405162461bcd60e51b8152600401610ad690613367565b6001600160a01b038116611b255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad6565b611b2e816122e0565b50565b6000546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610ad690613367565b60078054911515620100000262ff000019909216919091179055565b6000610aa58284613467565b6000610aa582846133b2565b6001600160a01b038316611bf15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad6565b6001600160a01b038216611c525760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad6565b6001600160a01b038216611d795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad6565b60008111611ddb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad6565b611de48361147e565b811115611e4d5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610ad6565b6001600160a01b03831660009081526004602052604090205460ff16158015611e8f57506001600160a01b03821660009081526004602052604090205460ff16155b15611ee65760075460ff16611ee65760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610ad6565b6000546001600160a01b03848116911614801590611f1257506000546001600160a01b03838116911614155b8015611f2657506001600160a01b03821615155b8015611f3d57506001600160a01b03821661dead14155b8015611f5657506008546001600160a01b038481169116145b1561202457600b54811115611fad5760405162461bcd60e51b815260206004820152601e60248201527f796f752061726520657863656564696e67206d6178427579416d6f756e7400006044820152606401610ad6565b6000611fb88361147e565b600e54909150611fc88383613432565b11156120225760405162461bcd60e51b815260206004820152602360248201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152621d5b9d60ea1b6064820152608401610ad6565b505b6000546001600160a01b0384811691161480159061205057506000546001600160a01b03838116911614155b801561206457506001600160a01b03821615155b801561207b57506001600160a01b03821661dead14155b801561209457506008546001600160a01b038481169116145b156120f557600c548111156120f55760405162461bcd60e51b815260206004820152602160248201527f416d6f756e7420697320657863656564696e67206d617853656c6c416d6f756e6044820152601d60fa1b6064820152608401610ad6565b60006121003061147e565b600d54600754919250821015906301000000900460ff1615801561212b5750600754610100900460ff165b80156121345750805b801561214e57506008546001600160a01b03868116911614155b156121c157600754479062010000900460ff1680156121745750670de0b6b3a764000081115b801561218d57506008546001600160a01b038681169116145b156121b457600f548111156121a15750600f545b6121b46121af826064611b83565b612330565b6121bf600d54612362565b505b6008546000906001600160a01b03868116911614156121de575060015b6001600160a01b03861660009081526004602052604090205461222e9087908790879060ff168061222757506001600160a01b03891660009081526004602052604090205460ff165b158561249f565b505050505050565b6000818484111561225a5760405162461bcd60e51b8152600401610ad69190613174565b505050900390565b600080600061226f61275a565b909250905061227e81836133b2565b9250505090565b61228d61310c565b6122988484846128dd565b90506122ad8185856122a8612262565b612af4565b60c088015260a0870152608086015260608501526040840152602083015281529392505050565b6000610aa582846133ea565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6007805463ff0000001916630100000017905580156123525761235281612bca565b506007805463ff00000019169055565b6007805463ff000000191663010000001790556013546016546015546000929161238b91613432565b6123959190613432565b6123a0906002613467565b9050600081601260030154846123b69190613467565b6123c091906133b2565b905060006123ce82856133ea565b9050476123da82612d37565b60006123e682476133ea565b6015549091506000906123f990876133ea565b61240390836133b2565b6015549091506000906124169083613467565b90508015612428576124288682612eb0565b601354600090612439846002613467565b6124439190613467565b90508015612487576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612485573d6000803e3d6000fd5b505b50506007805463ff0000001916905550505050505050565b60006124ac848484612285565b6001600160a01b03871660009081526005602052604090205490915060ff161561250e576001600160a01b0386166000908152600260205260409020546124f49085906133ea565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156125715760e08101516001600160a01b0386166000908152600260205260409020546125579190613432565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461259691906133ea565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546125cd9190613432565b6001600160a01b03861660009081526001602052604090819020919091558101516101008201516125fe9190612f94565b6126118160600151826101200151612fc9565b6126248160a0015182610160015161303f565b6126378160800151826101400151613054565b61264a8160c001518261018001516130eb565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161269391815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461012001518561016001516126ec9190613432565b6126f69190613432565b60405190815260200160405180910390a36010546101408201516040519081526001600160a01b03918216918816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600a546009546000918291825b6006548110156128ac57826001600060068481548110612789576127896133d4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806127f457508160026000600684815481106127cd576127cd6133d4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561280a57600a54600954945094505050509091565b6001600060068381548110612821576128216133d4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461285090846133ea565b92506002600060068381548110612869576128696133d4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461289890836133ea565b9150806128a481613417565b915050612767565b50600954600a546128bd91906133b2565b8210156128d457600a546009549350935050509091565b90939092509050565b6128e561310c565b826128f65760e08101849052610aa5565b81156129f7576017546103e89061290d9086613467565b61291791906133b2565b6101008201526018546103e89061292e9086613467565b61293891906133b2565b6101208201526019546103e89061294f9086613467565b61295991906133b2565b610140820152601a546103e8906129709086613467565b61297a91906133b2565b610160820152601b546103e8906129919086613467565b61299b91906133b2565b61018082018190526101608201516101408301516101208401516101008501516129c590896133ea565b6129cf91906133ea565b6129d991906133ea565b6129e391906133ea565b6129ed91906133ea565b60e0820152610aa5565b6012546103e890612a089086613467565b612a1291906133b2565b6101008201526013546103e890612a299086613467565b612a3391906133b2565b6101208201526014546103e890612a4a9086613467565b612a5491906133b2565b6101408201526015546103e890612a6b9086613467565b612a7591906133b2565b6101608201526016546103e890612a8c9086613467565b612a9691906133b2565b6101808201819052610160820151610140830151610120840151610100850151612ac090896133ea565b612aca91906133ea565b612ad491906133ea565b612ade91906133ea565b612ae891906133ea565b60e08201529392505050565b6000808080808080612b06888b613467565b965088612b2457508594506000935083925082915081905080612bbc565b878b6101000151612b359190613467565b9450878b6101200151612b489190613467565b9350878b6101400151612b5b9190613467565b9250878b6101600151612b6e9190613467565b9150878b6101800151612b819190613467565b905080828486612b91898c6133ea565b612b9b91906133ea565b612ba591906133ea565b612baf91906133ea565b612bb991906133ea565b95505b949950949992975094509450565b604080516002808252606082018352600092602083019080368337019050509050600760049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c62919061344a565b81600081518110612c7557612c756133d4565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612ca957612ca96133d4565b6001600160a01b039283166020918202929092010152600754600160201b90041663b6f9de958360008461dead612ce24261012c613100565b6040518663ffffffff1660e01b8152600401612d0194939291906135f3565b6000604051808303818588803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d6c57612d6c6133d4565b60200260200101906001600160a01b031690816001600160a01b031681525050600760049054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e03919061344a565b81600181518110612e1657612e166133d4565b6001600160a01b039283166020918202929092010152600754612e43913091600160201b90041684611b8f565b60075460405163791ac94760e01b8152600160201b9091046001600160a01b03169063791ac94790612e82908590600090869030904290600401613628565b600060405180830381600087803b158015612e9c57600080fd5b505af115801561222e573d6000803e3d6000fd5b600754612ecf903090600160201b90046001600160a01b031684611b8f565b6007546001600160a01b03600160201b9091041663f305d719823085600080612f006000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612f68573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f8d9190613664565b5050505050565b81600a6000828254612fa691906133ea565b9091555050601c8054829190600090612fc0908490613432565b90915550505050565b80601c6001016000828254612fde9190613432565b90915550503060009081526005602052604090205460ff161561302057306000908152600260205260408120805483929061301a908490613432565b90915550505b3060009081526001602052604081208054849290612fc0908490613432565b80601c6003016000828254612fde9190613432565b80601c60020160008282546130699190613432565b90915550506010546001600160a01b031660009081526005602052604090205460ff16156130c1576010546001600160a01b0316600090815260026020526040812080548392906130bb908490613432565b90915550505b6010546001600160a01b031660009081526001602052604081208054849290612fc0908490613432565b80601c6004016000828254612fde9190613432565b6000610aa58284613432565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156131a157858101830151858201604001528201613185565b818111156131b3576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611b2e57600080fd5b600080604083850312156131f157600080fd5b82356131fc816131c9565b946020939093013593505050565b60008060006060848603121561321f57600080fd5b833561322a816131c9565b9250602084013561323a816131c9565b929592945050506040919091013590565b60006020828403121561325d57600080fd5b5035919050565b60006020828403121561327657600080fd5b8135610aa5816131c9565b8015158114611b2e57600080fd5b600080604083850312156132a257600080fd5b8235915060208301356132b481613281565b809150509250929050565b600080600080600060a086880312156132d757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561330c57600080fd5b8135610aa581613281565b6000806040838503121561332a57600080fd5b50508035926020909101359150565b6000806040838503121561334c57600080fd5b8235613357816131c9565b915060208301356132b4816131c9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826133cf57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000828210156133fc576133fc61339c565b500390565b634e487b7160e01b600052603160045260246000fd5b600060001982141561342b5761342b61339c565b5060010190565b600082198211156134455761344561339c565b500190565b60006020828403121561345c57600080fd5b8151610aa5816131c9565b60008160001904831182151516156134815761348161339c565b500290565b60006020828403121561349857600080fd5b5051919050565b6000602082840312156134b157600080fd5b8151610aa581613281565b600181815b808511156134f75781600019048211156134dd576134dd61339c565b808516156134ea57918102915b93841c93908002906134c1565b509250929050565b60008261350e57506001610a3c565b8161351b57506000610a3c565b8160018114613531576002811461353b57613557565b6001915050610a3c565b60ff84111561354c5761354c61339c565b50506001821b610a3c565b5060208310610133831016604e8410600b841016171561357a575081810a610a3c565b61358483836134bc565b80600019048211156135985761359861339c565b029392505050565b6000610aa560ff8416836134ff565b600081518084526020808501945080840160005b838110156135e85781516001600160a01b0316875295820195908201906001016135c3565b509495945050505050565b84815260806020820152600061360c60808301866135af565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061364760a08301866135af565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561367957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122025892402efa9a6de8e21202e2e42dc5db46bd8343dab9c9b324e39cb9ea3807a64736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
-----Decoded View---------------
Arg [0] : routerAddress (address): 0xF491e7B69E4244ad4002BC14e878a34207E38c29
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f491e7b69e4244ad4002bc14e878a34207e38c29
Deployed Bytecode Sourcemap
10444:21805:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13814:83;;;;;;;;;;-1:-1:-1;13884:5:0;;;;;;;;;;;-1:-1:-1;;;13884:5:0;;;;13814:83;;;;13884:5;13814:83;:::i;:::-;;;;;;;;14745:161;;;;;;;;;;-1:-1:-1;14745:161:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;14745:161:0;1072:187:1;11677:78:0;;;;;;;;;;-1:-1:-1;11677:78:0;;;;-1:-1:-1;;;;;11677:78:0;;;;;;-1:-1:-1;;;;;1428:32:1;;;1410:51;;1398:2;1383:18;11677:78:0;1264:203:1;14110:95:0;;;;;;;;;;-1:-1:-1;14190:7:0;;14110:95;;;1618:25:1;;;1606:2;1591:18;14110:95:0;1472:177:1;12274:155:0;;;;;;;;;;-1:-1:-1;12274:155:0;;;;;;;;;;;;;;;;;;;;;;1913:25:1;;;1969:2;1954:18;;1947:34;;;;1997:18;;;1990:34;;;;2055:2;2040:18;;2033:34;2098:3;2083:19;;2076:35;1900:3;1885:19;12274:155:0;1654:463:1;14914:313:0;;;;;;;;;;-1:-1:-1;14914:313:0;;;;;:::i;:::-;;:::i;11762:80::-;;;;;;;;;;;;11800:42;11762:80;;16737:158;;;;;;;;;;;;;:::i;:::-;;16905:248;;;;;;;;;;-1:-1:-1;16905:248:0;;;;;:::i;:::-;;:::i;13996:83::-;;;;;;;;;;-1:-1:-1;13996:83:0;;11138:1;2910:36:1;;2898:2;2883:18;13996:83:0;2768:184:1;17568:475:0;;;;;;;;;;-1:-1:-1;17568:475:0;;;;;:::i;:::-;;:::i;15235:213::-;;;;;;;;;;-1:-1:-1;15235:213:0;;;;;:::i;:::-;;:::i;15861:390::-;;;;;;;;;;-1:-1:-1;15861:390:0;;;;;:::i;:::-;;:::i;31698:506::-;;;;;;;;;;-1:-1:-1;31698:506:0;;;;;:::i;:::-;;:::i;18051:111::-;;;;;;;;;;-1:-1:-1;18051:111:0;;;;;:::i;:::-;;:::i;16259:470::-;;;;;;;;;;-1:-1:-1;16259:470:0;;;;;:::i;:::-;;:::i;10898:34::-;;;;;;;;;;-1:-1:-1;10898:34:0;;;;;;;;17227:333;;;;;;;;;;-1:-1:-1;17227:333:0;;;;;:::i;:::-;;:::i;18290:123::-;;;;;;;;;;-1:-1:-1;18290:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;18378:27:0;18354:4;18378:27;;;:18;:27;;;;;;;;;18290:123;10976:34;;;;;;;;;;-1:-1:-1;10976:34:0;;;;;;;;;;;11367:54;;;;;;;;;;;;;;;;18605:369;;;;;;;;;;-1:-1:-1;18605:369:0;;;;;:::i;:::-;;:::i;10939:30::-;;;;;;;;;;-1:-1:-1;10939:30:0;;;;;;;;;;;14213:198;;;;;;;;;;-1:-1:-1;14213:198:0;;;;;:::i;:::-;;:::i;11540:45::-;;;;;;;;;;;;;;;;8810:94;;;;;;;;;;;;;:::i;12109:156::-;;;;;;;;;;-1:-1:-1;12109:156:0;;;;;;;;;;;;;;;;;;18420:171;;;;;;;;;;-1:-1:-1;18420:171:0;;;;;:::i;:::-;;:::i;31102:133::-;;;;;;;;;;-1:-1:-1;31102:133:0;;;;;:::i;:::-;;:::i;11307:53::-;;;;;;;;;;;;;;;;15733:120;;;;;;;;;;-1:-1:-1;15733:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;15825:20:0;15801:4;15825:20;;;:11;:20;;;;;;;;;15733:120;31451:170;;;;;;;;;;-1:-1:-1;31451:170:0;;;;;:::i;:::-;;:::i;8587:87::-;;;;;;;;;;-1:-1:-1;8633:7:0;8660:6;-1:-1:-1;;;;;8660:6:0;8587:87;;11488:44;;;;;;;;;;;;;;;;30282:241;;;;;;;;;;-1:-1:-1;30282:241:0;;;;;:::i;:::-;;:::i;30878:101::-;;;;;;;;;;-1:-1:-1;30878:101:0;;;;;:::i;:::-;;:::i;12610:36::-;;;;;;;;;;-1:-1:-1;12610:36:0;;;;;;;;;;;;;;;;;;15456:269;;;;;;;;;;-1:-1:-1;15456:269:0;;;;;:::i;:::-;;:::i;11594:76::-;;;;;;;;;;-1:-1:-1;11594:76:0;;;;-1:-1:-1;;;;;11594:76:0;;;11075:19;;;;;;;;;;-1:-1:-1;11075:19:0;;;;-1:-1:-1;;;;;11075:19:0;;;14419:167;;;;;;;;;;-1:-1:-1;14419:167:0;;;;;:::i;:::-;;:::i;30041:233::-;;;;;;;;;;-1:-1:-1;30041:233:0;;;;;:::i;:::-;;:::i;18982:392::-;;;;;;;;;;-1:-1:-1;18982:392:0;;;;;:::i;:::-;;:::i;31243:200::-;;;;;;;;;;-1:-1:-1;31243:200:0;;;;;:::i;:::-;;:::i;30531:201::-;;;;;;;;;;-1:-1:-1;30531:201:0;;;;;:::i;:::-;;:::i;30740:130::-;;;;;;;;;;-1:-1:-1;30740:130:0;;;;;:::i;:::-;;:::i;14594:143::-;;;;;;;;;;-1:-1:-1;14594:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;14702:18:0;;;14675:7;14702:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14594:143;11428:53;;;;;;;;;;;;;;;;18170:110;;;;;;;;;;-1:-1:-1;18170:110:0;;;;;:::i;:::-;;:::i;8912:192::-;;;;;;;;;;-1:-1:-1;8912:192:0;;;;;:::i;:::-;;:::i;11047:21::-;;;;;;;;;;-1:-1:-1;11047:21:0;;;;-1:-1:-1;;;11047:21:0;;-1:-1:-1;;;;;11047:21:0;;;30987:107;;;;;;;;;;-1:-1:-1;30987:107:0;;;;;:::i;:::-;;:::i;14745:161::-;14820:4;14837:39;4544:10;14860:7;14869:6;14837:8;:39::i;:::-;-1:-1:-1;14894:4:0;14745:161;;;;;:::o;14914:313::-;15012:4;15029:36;15039:6;15047:9;15058:6;15029:9;:36::i;:::-;15076:121;15085:6;4544:10;15107:89;15145:6;15107:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15107:19:0;;;;;;:11;:19;;;;;;;;4544:10;15107:33;;;;;;;;;;:37;:89::i;:::-;15076:8;:121::i;:::-;-1:-1:-1;15215:4:0;14914:313;;;;;;:::o;16737:158::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;;;;;;;;;16790:14:::1;:21:::0;;-1:-1:-1;;16822:18:0;;;;;16856:31:::1;::::0;16871:15:::1;1618:25:1::0;;16856:31:0::1;::::0;1606:2:1;1591:18;16856:31:0::1;;;;;;;16737:158::o:0;16905:248::-;16971:7;17010;;16999;:18;;16991:73;;;;-1:-1:-1;;;16991:73:0;;5783:2:1;16991:73:0;;;5765:21:1;5822:2;5802:18;;;5795:30;5861:34;5841:18;;;5834:62;-1:-1:-1;;;5912:18:1;;;5905:40;5962:19;;16991:73:0;5581:406:1;16991:73:0;17075:19;17098:10;:8;:10::i;:::-;17075:33;-1:-1:-1;17126:19:0;17075:33;17126:7;:19;:::i;17568:475::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17650:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;17642:56;;;::::0;-1:-1:-1;;;17642:56:0;;6548:2:1;17642:56:0::1;::::0;::::1;6530:21:1::0;6587:2;6567:18;;;6560:30;6626:25;6606:18;;;6599:53;6669:18;;17642:56:0::1;6346:347:1::0;17642:56:0::1;17714:9;17709:327;17733:9;:16:::0;17729:20;::::1;17709:327;;;17791:7;-1:-1:-1::0;;;;;17775:23:0::1;:9;17785:1;17775:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;17775:12:0::1;:23;17771:254;;;17834:9;17844:16:::0;;:20:::1;::::0;17863:1:::1;::::0;17844:20:::1;:::i;:::-;17834:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;17819:9:::1;:12:::0;;-1:-1:-1;;;;;17834:31:0;;::::1;::::0;17829:1;;17819:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;17819:46:0::1;-1:-1:-1::0;;;;;17819:46:0;;::::1;;::::0;;17884:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;17923:11:::1;:20:::0;;;;:28;;-1:-1:-1;;17923:28:0::1;::::0;;17970:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17970:15:0;;;;;-1:-1:-1;;;;;;17970:15:0::1;::::0;;;;;17709:327:::1;17568:475:::0;:::o;17771:254::-:1;17751:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17709:327;;;;17568:475:::0;:::o;15235:213::-;4544:10;15323:4;15372:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15372:34:0;;;;;;;;;;15323:4;;15340:78;;15363:7;;15372:45;;15407:10;;15372:45;:::i;15861:390::-;4544:10;15913:14;15962:19;;;:11;:19;;;;;;;;15961:20;15953:77;;;;-1:-1:-1;;;15953:77:0;;7567:2:1;15953:77:0;;;7549:21:1;7606:2;7586:18;;;7579:30;7645:34;7625:18;;;7618:62;-1:-1:-1;;;7696:18:1;;;7689:42;7748:19;;15953:77:0;7365:408:1;15953:77:0;16041:28;16072:32;16083:7;16092:4;16098:5;16072:10;:32::i;:::-;16153:9;;-1:-1:-1;;;;;16133:15:0;;16153:9;16133:15;;;:7;:15;;;;;;16041:63;;-1:-1:-1;16133:30:0;;:15;:19;:30::i;:::-;-1:-1:-1;;;;;16115:15:0;;;;;;:7;:15;;;;;:48;16196:9;;16184:7;;:22;;:11;:22::i;:::-;16174:7;:32;16217:11;:26;;16236:7;;16217:11;:15;;:26;;16236:7;;16217:26;:::i;:::-;;;;-1:-1:-1;;;;;15861:390:0:o;31698:506::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;31802:6:::1;::::0;-1:-1:-1;;;;;31781:28:0;;::::1;-1:-1:-1::0;;;31802:6:0;;::::1;;31781:28;;31773:37;;;::::0;::::1;;31821:18;31850:9;31821:39;;31871:16;31899:10;-1:-1:-1::0;;;;;31899:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31890:38:0::1;;31937:4;31944:10;-1:-1:-1::0;;;;;31944:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31890:72;::::0;-1:-1:-1;;;;;;31890:72:0::1;::::0;;;;;;-1:-1:-1;;;;;8264:15:1;;;31890:72:0::1;::::0;::::1;8246:34:1::0;8316:15;;8296:18;;;8289:43;8181:18;;31890:72:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31871:91:::0;-1:-1:-1;;;;;;31977:22:0;::::1;31973:194;;32032:10;-1:-1:-1::0;;;;;32032:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32023:41:0::1;;32073:4;32080:10;-1:-1:-1::0;;;;;32080:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32023:75;::::0;-1:-1:-1;;;;;;32023:75:0::1;::::0;;;;;;-1:-1:-1;;;;;8264:15:1;;;32023:75:0::1;::::0;::::1;8246:34:1::0;8316:15;;8296:18;;;8289:43;8181:18;;32023:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32016:4;:82:::0;;-1:-1:-1;;;;;;32016:82:0::1;-1:-1:-1::0;;;;;32016:82:0;;;::::1;::::0;;;::::1;::::0;;31973:194:::1;;;32140:4;:15:::0;;-1:-1:-1;;;;;;32140:15:0::1;-1:-1:-1::0;;;;;32140:15:0;::::1;;::::0;;31973:194:::1;-1:-1:-1::0;32177:6:0::1;:19:::0;;-1:-1:-1;;;;;32177:19:0;;::::1;-1:-1:-1::0;;;32177:19:0::1;-1:-1:-1::0;;;;;;32177:19:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;31698:506:0:o;18051:111::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18120:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;18120:34:0::1;18150:4;18120:34;::::0;;18051:111::o;16259:470::-;16349:7;16388;;16377;:18;;16369:62;;;;-1:-1:-1;;;16369:62:0;;8545:2:1;16369:62:0;;;8527:21:1;8584:2;8564:18;;;8557:30;8623:33;8603:18;;;8596:61;8674:18;;16369:62:0;8343:355:1;16369:62:0;16447:17;16442:280;;16481:28;16512:32;16523:7;16532:4;16538:5;16512:10;:32::i;:::-;16566:9;;-1:-1:-1;16559:16:0;;-1:-1:-1;16559:16:0;16442:280;16608:28;16639:32;16650:7;16659:4;16665:5;16639:10;:32::i;:::-;16693:17;;;;-1:-1:-1;16686:24:0;;-1:-1:-1;16686:24:0;17227:333;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17310:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;17309:21;17301:61;;;::::0;-1:-1:-1;;;17301:61:0;;8905:2:1;17301:61:0::1;::::0;::::1;8887:21:1::0;8944:2;8924:18;;;8917:30;8983:29;8963:18;;;8956:57;9030:18;;17301:61:0::1;8703:351:1::0;17301:61:0::1;-1:-1:-1::0;;;;;17376:16:0;::::1;17395:1;17376:16:::0;;;:7:::1;:16;::::0;;;;;:20;17373:108:::1;;-1:-1:-1::0;;;;;17452:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;17432:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;17413:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;17373:108:::1;-1:-1:-1::0;;;;;17491:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;17491:27:0::1;17514:4;17491:27:::0;;::::1;::::0;;;17529:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;17529:23:0::1;::::0;;::::1;::::0;;17227:333::o;18605:369::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;18750:8:::1;:19:::0;;;18780:20;:35;;;18826:18;:31;;;18868:18;:31;;;18910:16;:27;;;18953:13:::1;::::0;::::1;::::0;18750:12:::1;::::0;18953:13:::1;18605:369:::0;;;;;:::o;14213:198::-;-1:-1:-1;;;;;14303:20:0;;14279:7;14303:20;;;:11;:20;;;;;;;;14299:49;;;-1:-1:-1;;;;;;14332:16:0;;;;;:7;:16;;;;;;;14213:198::o;14299:49::-;-1:-1:-1;;;;;14386:16:0;;;;;;:7;:16;;;;;;14366:37;;:19;:37::i;8810:94::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;8875:21:::1;8893:1;8875:9;:21::i;:::-;8810:94::o:0;18420:171::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;18522:62:::1;18568:5;18522:27;18534:14;18522:7;;:11;;:27;;;;:::i;:::-;:31:::0;::::1;:62::i;:::-;18505:14;:79:::0;-1:-1:-1;18420:171:0:o;31102:133::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;31206:21:::1;:12:::0;31221:6:::1;31206:21;:::i;:::-;31186:17;:41:::0;-1:-1:-1;31102:133:0:o;31451:170::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;31567:45:::1;::::0;-1:-1:-1;;;31567:45:0;;31606:4:::1;31567:45;::::0;::::1;1410:51:1::0;-1:-1:-1;;;;;31525:29:0;::::1;::::0;::::1;::::0;31555:10:::1;::::0;31525:29;;31567:30:::1;::::0;1383:18:1;;31567:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31525:88;::::0;-1:-1:-1;;;;;;31525:88:0::1;::::0;;;;;;-1:-1:-1;;;;;9613:32:1;;;31525:88:0::1;::::0;::::1;9595:51:1::0;9662:18;;;9655:34;9568:18;;31525:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30282:241::-:0;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;30371:18:::1;::::0;-1:-1:-1;;;;;30371:31:0;;::::1;:18:::0;::::1;:31;;30363:62;;;::::0;-1:-1:-1;;;30363:62:0;;10152:2:1;30363:62:0::1;::::0;::::1;10134:21:1::0;10191:2;10171:18;;;10164:30;-1:-1:-1;;;10210:18:1;;;10203:48;10268:18;;30363:62:0::1;9950:342:1::0;30363:62:0::1;30436:18;:30:::0;;-1:-1:-1;;;;;30436:30:0;;::::1;-1:-1:-1::0;;;;;;30436:30:0;;::::1;::::0;::::1;::::0;;:18:::1;30477:38:::0;:18:::1;:38;::::0;30282:241::o;30878:101::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;30949:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;30949:22:0;;::::1;::::0;;;::::1;::::0;;30878:101::o;15456:269::-;15549:4;15566:129;4544:10;15589:7;15598:96;15637:15;15598:96;;;;;;;;;;;;;;;;;4544:10;15598:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15598:34:0;;;;;;;;;;;;:38;:96::i;14419:167::-;14497:4;14514:42;4544:10;14538:9;14549:6;14514:9;:42::i;30041:233::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;30128:16:::1;::::0;-1:-1:-1;;;;;30128:29:0;;::::1;:16:::0;::::1;:29;;30120:60;;;::::0;-1:-1:-1;;;30120:60:0;;10152:2:1;30120:60:0::1;::::0;::::1;10134:21:1::0;10191:2;10171:18;;;10164:30;-1:-1:-1;;;10210:18:1;;;10203:48;10268:18;;30120:60:0::1;9950:342:1::0;30120:60:0::1;30191:16;:28:::0;;-1:-1:-1;;;;;30191:28:0;;::::1;-1:-1:-1::0;;;;;;30191:28:0;;::::1;::::0;::::1;::::0;;:16:::1;30230:36:::0;:18:::1;:36;::::0;30041:233::o;18982:392::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;19130:12:::1;:23:::0;;;19164:24;:39;;;19214:22;:35;;;19260:22;:35;;;19306:20;:31;;;19353:13:::1;::::0;::::1;::::0;19130:16:::1;::::0;19353:13:::1;18982:392:::0;;;;;:::o;31243:200::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;31347:9:::1;31322:21;:34;;31314:71;;;::::0;-1:-1:-1;;;31314:71:0;;10499:2:1;31314:71:0::1;::::0;::::1;10481:21:1::0;10538:2;10518:18;;;10511:30;10577:26;10557:18;;;10550:54;10621:18;;31314:71:0::1;10297:348:1::0;31314:71:0::1;31396:39;::::0;31404:10:::1;::::0;31396:39;::::1;;;::::0;31425:9;;31396:39:::1;::::0;;;31425:9;31404:10;31396:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;30531:201:::0;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;30654:21:::1;:13:::0;30670:5:::1;30654:21;:::i;:::-;30639:12;:36:::0;30702:22:::1;:14:::0;30719:5:::1;30702:22;:::i;:::-;30686:13;:38:::0;-1:-1:-1;;30531:201:0:o;30740:130::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;30849:13:::1;11138:1;30849:2;:13;:::i;:::-;30840:22;::::0;:6;:22:::1;:::i;:::-;30819:18;:43:::0;-1:-1:-1;30740:130:0:o;18170:110::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18237:27:0::1;18267:5;18237:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18237:35:0::1;::::0;;18170:110::o;8912:192::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9001:22:0;::::1;8993:73;;;::::0;-1:-1:-1;;;8993:73:0;;12235:2:1;8993:73:0::1;::::0;::::1;12217:21:1::0;12274:2;12254:18;;;12247:30;12313:34;12293:18;;;12286:62;-1:-1:-1;;;12364:18:1;;;12357:36;12410:19;;8993:73:0::1;12033:402:1::0;8993:73:0::1;9077:19;9087:8;9077:9;:19::i;:::-;8912:192:::0;:::o;30987:107::-;8633:7;8660:6;-1:-1:-1;;;;;8660:6:0;4544:10;8722:23;8714:68;;;;-1:-1:-1;;;8714:68:0;;;;;;;:::i;:::-;31061:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;31061:25:0;;::::1;::::0;;;::::1;::::0;;30987:107::o;3372:98::-;3430:7;3457:5;3461:1;3457;:5;:::i;3478:98::-;3536:7;3563:5;3567:1;3563;:5;:::i;23769:335::-;-1:-1:-1;;;;;23862:19:0;;23854:68;;;;-1:-1:-1;;;23854:68:0;;12642:2:1;23854:68:0;;;12624:21:1;12681:2;12661:18;;;12654:30;12720:34;12700:18;;;12693:62;-1:-1:-1;;;12771:18:1;;;12764:34;12815:19;;23854:68:0;12440:400:1;23854:68:0;-1:-1:-1;;;;;23941:21:0;;23933:68;;;;-1:-1:-1;;;23933:68:0;;13047:2:1;23933:68:0;;;13029:21:1;13086:2;13066:18;;;13059:30;13125:34;13105:18;;;13098:62;-1:-1:-1;;;13176:18:1;;;13169:32;13218:19;;23933:68:0;12845:398:1;23933:68:0;-1:-1:-1;;;;;24012:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24064:32;;1618:25:1;;;24064:32:0;;1591:18:1;24064:32:0;;;;;;;23769:335;;;:::o;24112:1952::-;-1:-1:-1;;;;;24208:18:0;;24200:68;;;;-1:-1:-1;;;24200:68:0;;13450:2:1;24200:68:0;;;13432:21:1;13489:2;13469:18;;;13462:30;13528:34;13508:18;;;13501:62;-1:-1:-1;;;13579:18:1;;;13572:35;13624:19;;24200:68:0;13248:401:1;24200:68:0;-1:-1:-1;;;;;24287:16:0;;24279:64;;;;-1:-1:-1;;;24279:64:0;;13856:2:1;24279:64:0;;;13838:21:1;13895:2;13875:18;;;13868:30;13934:34;13914:18;;;13907:62;-1:-1:-1;;;13985:18:1;;;13978:33;14028:19;;24279:64:0;13654:399:1;24279:64:0;24371:1;24362:6;:10;24354:64;;;;-1:-1:-1;;;24354:64:0;;14260:2:1;24354:64:0;;;14242:21:1;14299:2;14279:18;;;14272:30;14338:34;14318:18;;;14311:62;-1:-1:-1;;;14389:18:1;;;14382:39;14438:19;;24354:64:0;14058:405:1;24354:64:0;24447:15;24457:4;24447:9;:15::i;:::-;24437:6;:25;;24429:86;;;;-1:-1:-1;;;24429:86:0;;14670:2:1;24429:86:0;;;14652:21:1;14709:2;14689:18;;;14682:30;14748:34;14728:18;;;14721:62;-1:-1:-1;;;14799:18:1;;;14792:47;14856:19;;24429:86:0;14468:413:1;24429:86:0;-1:-1:-1;;;;;24532:24:0;;;;;;:18;:24;;;;;;;;24531:25;:52;;;;-1:-1:-1;;;;;;24561:22:0;;;;;;:18;:22;;;;;;;;24560:23;24531:52;24528:136;;;24607:14;;;;24599:53;;;;-1:-1:-1;;;24599:53:0;;15088:2:1;24599:53:0;;;15070:21:1;15127:2;15107:18;;;15100:30;15166:28;15146:18;;;15139:56;15212:18;;24599:53:0;14886:350:1;24599:53:0;8633:7;8660:6;-1:-1:-1;;;;;24680:15:0;;;8660:6;;24680:15;;;;:45;;-1:-1:-1;8633:7:0;8660:6;-1:-1:-1;;;;;24712:13:0;;;8660:6;;24712:13;;24680:45;:78;;;;-1:-1:-1;;;;;;24742:16:0;;;;24680:78;:116;;;;-1:-1:-1;;;;;;24775:21:0;;24789:6;24775:21;;24680:116;:145;;;;-1:-1:-1;24821:4:0;;-1:-1:-1;;;;;24813:12:0;;;24821:4;;24813:12;24680:145;24676:410;;;24859:12;;24849:6;:22;;24841:65;;;;-1:-1:-1;;;24841:65:0;;15443:2:1;24841:65:0;;;15425:21:1;15482:2;15462:18;;;15455:30;15521:32;15501:18;;;15494:60;15571:18;;24841:65:0;15241:354:1;24841:65:0;24920:28;24951:13;24961:2;24951:9;:13::i;:::-;25020:14;;24920:44;;-1:-1:-1;24987:29:0;25010:6;24920:44;24987:29;:::i;:::-;:47;;24979:95;;;;-1:-1:-1;;;24979:95:0;;15802:2:1;24979:95:0;;;15784:21:1;15841:2;15821:18;;;15814:30;15880:34;15860:18;;;15853:62;-1:-1:-1;;;15931:18:1;;;15924:33;15974:19;;24979:95:0;15600:399:1;24979:95:0;24826:260;24676:410;8633:7;8660:6;-1:-1:-1;;;;;25102:15:0;;;8660:6;;25102:15;;;;:45;;-1:-1:-1;8633:7:0;8660:6;-1:-1:-1;;;;;25134:13:0;;;8660:6;;25134:13;;25102:45;:78;;;;-1:-1:-1;;;;;;25164:16:0;;;;25102:78;:116;;;;-1:-1:-1;;;;;;25197:21:0;;25211:6;25197:21;;25102:116;:145;;;;-1:-1:-1;25243:4:0;;-1:-1:-1;;;;;25235:12:0;;;25243:4;;25235:12;25102:145;25098:246;;;25281:13;;25271:6;:23;;25263:69;;;;-1:-1:-1;;;25263:69:0;;16206:2:1;25263:69:0;;;16188:21:1;16245:2;16225:18;;;16218:30;16284:34;16264:18;;;16257:62;-1:-1:-1;;;16335:18:1;;;16328:31;16376:19;;25263:69:0;16004:397:1;25263:69:0;25356:28;25387:24;25405:4;25387:9;:24::i;:::-;25461:18;;25494:8;;25356:55;;-1:-1:-1;25437:42:0;;;;25494:8;;;;;25493:9;:24;;;;-1:-1:-1;25506:11:0;;;;;;;25493:24;:35;;;;;25521:7;25493:35;:51;;;;-1:-1:-1;25540:4:0;;-1:-1:-1;;;;;25532:12:0;;;25540:4;;25532:12;;25493:51;25490:398;;;25618:14;;25578:21;;25618:14;;;;;:47;;;;;25654:10;25636:7;:29;25618:47;:61;;;;-1:-1:-1;25675:4:0;;-1:-1:-1;;;;;25669:10:0;;;25675:4;;25669:10;25618:61;25614:212;;;25714:17;;25704:7;:27;25700:60;;;-1:-1:-1;25743:17:0;;25700:60;25779:31;25793:16;:7;25805:3;25793:11;:16::i;:::-;25779:13;:31::i;:::-;25842:34;25857:18;;25842:14;:34::i;:::-;25545:343;25490:398;25929:4;;25898:11;;-1:-1:-1;;;;;25923:10:0;;;25929:4;;25923:10;25920:28;;;-1:-1:-1;25944:4:0;25920:28;-1:-1:-1;;;;;25996:24:0;;;;;;:18;:24;;;;;;25961:95;;25976:4;;25982:2;;25986:6;;25996:24;;;:50;;-1:-1:-1;;;;;;26024:22:0;;;;;;:18;:22;;;;;;;;25996:50;25994:53;26049:6;25961:14;:95::i;:::-;24181:1883;;;24112:1952;;;:::o;3690:240::-;3810:7;3871:12;3863:6;;;;3855:29;;;;-1:-1:-1;;;3855:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3906:5:0;;;3690:240::o;23055:158::-;23096:7;23117:15;23134;23153:19;:17;:19::i;:::-;23116:56;;-1:-1:-1;23116:56:0;-1:-1:-1;23190:15:0;23116:56;;23190:15;:::i;:::-;23183:22;;;;23055:158;:::o;20683:434::-;20769:36;;:::i;:::-;20830:37;20842:7;20851;20860:6;20830:11;:37::i;:::-;20818:49;;21030:52;21042:9;21053:7;21062;21071:10;:8;:10::i;:::-;21030:11;:52::i;:::-;21008:18;;;20878:204;20986:20;;;20878:204;20964:20;;;20878:204;20940:22;;;20878:204;20925:14;;;20878:204;20898:25;;;20878:204;;;20683:434;;;;;:::o;3266:98::-;3324:7;3351:5;3355:1;3351;:5;:::i;9112:173::-;9168:16;9187:6;;-1:-1:-1;;;;;9204:17:0;;;-1:-1:-1;;;;;;9204:17:0;;;;;;9237:40;;9187:6;;;;;;;9237:40;;9168:16;9237:40;9157:128;9112:173;:::o;27210:137::-;13213:8;:15;;-1:-1:-1;;13213:15:0;;;;;27281:10;;27277:63:::1;;27306:24;27323:6;27306:16;:24::i;:::-;-1:-1:-1::0;13251:8:0;:16;;-1:-1:-1;;13251:16:0;;;27210:137::o;27872:1086::-;13213:8;:15;;-1:-1:-1;;13213:15:0;;;;;28056:20;;28037:16;;28016:18;;13213:15;;28056:20;28016:37:::1;::::0;::::1;:::i;:::-;:60;;;;:::i;:::-;28015:66;::::0;28080:1:::1;28015:66;:::i;:::-;27994:87;;28092:32;28157:11;28136:8;:18;;;28127:6;:27;;;;:::i;:::-;:41;;;;:::i;:::-;28092:76:::0;-1:-1:-1;28179:14:0::1;28196:33;28092:76:::0;28196:6;:33:::1;:::i;:::-;28179:50:::0;-1:-1:-1;28267:21:0::1;28301:24;28179:50:::0;28301:16:::1;:24::i;:::-;28338:20;28361:38;28385:14:::0;28361:21:::1;:38;:::i;:::-;28461:18:::0;;28338:61;;-1:-1:-1;28410:19:0::1;::::0;28447:32:::1;::::0;:11;:32:::1;:::i;:::-;28431:49;::::0;:12;:49:::1;:::i;:::-;28537:18:::0;;28410:70;;-1:-1:-1;28491:29:0::1;::::0;28523:32:::1;::::0;28410:70;28523:32:::1;:::i;:::-;28491:64:::0;-1:-1:-1;28571:25:0;;28568:161:::1;;28656:61;28669:24;28695:21;28656:12;:61::i;:::-;28821:20:::0;;28778:22:::1;::::0;28803:15:::1;:11:::0;28817:1:::1;28803:15;:::i;:::-;:38;;;;:::i;:::-;28778:63:::0;-1:-1:-1;28855:18:0;;28852:99:::1;;28895:18;::::0;28887:52:::1;::::0;-1:-1:-1;;;;;28895:18:0;;::::1;::::0;28887:52;::::1;;;::::0;28924:14;;28895:18:::1;28887:52:::0;28895:18;28887:52;28924:14;28895:18;28887:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28852:99;-1:-1:-1::0;;13251:8:0;:16;;-1:-1:-1;;13251:16:0;;;-1:-1:-1;;;;;;;27872:1086:0:o;26145:1057::-;26269:28;26300:36;26311:7;26320;26329:6;26300:10;:36::i;:::-;-1:-1:-1;;;;;26353:19:0;;;;;;:11;:19;;;;;;26269:67;;-1:-1:-1;26353:19:0;;26349:115;;;-1:-1:-1;;;;;26429:15:0;;;;;;:7;:15;;;;;;:23;;26445:7;;26429:23;:::i;:::-;-1:-1:-1;;;;;26411:15:0;;;;;;:7;:15;;;;;:41;26349:115;-1:-1:-1;;;;;26478:22:0;;;;;;:11;:22;;;;;;;;26474:130;;;26575:17;;;;-1:-1:-1;;;;;26556:18:0;;;;;;:7;:18;;;;;;:36;;26575:17;26556:36;:::i;:::-;-1:-1:-1;;;;;26535:18:0;;;;;;:7;:18;;;;;:57;26474:130;26650:9;;-1:-1:-1;;;;;26634:15:0;;26650:9;26634:15;;;:7;:15;;;;;;:25;;26650:9;26634:25;:::i;:::-;-1:-1:-1;;;;;26616:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;26710:17;;;26691:18;;;;;;;;;;:36;;26710:17;26691:36;:::i;:::-;-1:-1:-1;;;;;26670:18:0;;;;;;:7;:18;;;;;;;:57;;;;26750:6;;;26758;;;;26738:27;;26750:6;26738:11;:27::i;:::-;26776:47;26793:1;:14;;;26808:1;:14;;;26776:16;:47::i;:::-;26834:41;26849:1;:12;;;26862:1;:12;;;26834:14;:41::i;:::-;26886:42;26901:1;:12;;;26915:1;:12;;;26886:14;:42::i;:::-;26939:36;26952:1;:10;;;26964:1;:10;;;26939:12;:36::i;:::-;27008:9;-1:-1:-1;;;;;26991:46:0;27000:6;-1:-1:-1;;;;;26991:46:0;;27019:1;:17;;;26991:46;;;;1618:25:1;;1606:2;1591:18;;1472:177;26991:46:0;;;;;;;;27078:4;-1:-1:-1;;;;;27053:75:0;27062:6;-1:-1:-1;;;;;27053:75:0;;27117:1;:10;;;27100:1;:14;;;27085:1;:12;;;:29;;;;:::i;:::-;:42;;;;:::i;:::-;27053:75;;1618:25:1;;;1606:2;1591:18;27053:75:0;;;;;;;27161:16;;27179:12;;;;27144:48;;1618:25:1;;;-1:-1:-1;;;;;27161:16:0;;;;27144:48;;;;;1606:2:1;1591:18;27144:48:0;;;;;;;26256:946;26145:1057;;;;;:::o;23221:540::-;23318:7;;23354;;23271;;;;;23372:279;23396:9;:16;23392:20;;23372:279;;;23462:7;23438;:21;23446:9;23456:1;23446:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23446:12:0;23438:21;;;;;;;;;;;;;:31;;:66;;;23497:7;23473;:21;23481:9;23491:1;23481:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23481:12:0;23473:21;;;;;;;;;;;;;:31;23438:66;23434:97;;;23514:7;;23523;;23506:25;;;;;;;23221:540;;:::o;23434:97::-;23564:7;:21;23572:9;23582:1;23572:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23572:12:0;23564:21;;;;;;;;;;;;;23556:29;;:7;:29;:::i;:::-;23546:39;;23618:7;:21;23626:9;23636:1;23626:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23626:12:0;23618:21;;;;;;;;;;;;;23610:29;;:7;:29;:::i;:::-;23600:39;-1:-1:-1;23414:3:0;;;;:::i;:::-;;;;23372:279;;;;23683:7;;23675;;:15;;;;:::i;:::-;23665:7;:25;23661:56;;;23700:7;;23709;;23692:25;;;;;;23221:540;;:::o;23661:56::-;23736:7;;23745;;-1:-1:-1;23221:540:0;-1:-1:-1;23221:540:0:o;21125:1110::-;21212:28;;:::i;:::-;21259:7;21255:86;;21281:17;;;:27;;;21321:8;;21255:86;21356:6;21353:856;;;21395:12;:16;21412:4;;21387:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;21378:6;;;:38;21456:24;;21481:4;;21448:32;;:7;:32;:::i;:::-;:37;;;;:::i;:::-;21431:14;;;:54;21523:22;;21546:4;;21515:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;21500:12;;;:50;21588:22;;21611:4;;21580:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;21565:12;;;:50;21651:20;;21672:4;;21643:28;;:7;:28;:::i;:::-;:33;;;;:::i;:::-;21630:10;;;:46;;;21754:12;;;;21741;;;;21726:14;;;;21719:6;;;;21711:14;;:7;:14;:::i;:::-;:29;;;;:::i;:::-;:42;;;;:::i;:::-;:55;;;;:::i;:::-;:66;;;;:::i;:::-;21691:17;;;:86;21353:856;;;21835:8;:12;21848:4;;21827:20;;:7;:20;:::i;:::-;:25;;;;:::i;:::-;21818:6;;;:34;21892:20;;21913:4;;21884:28;;:7;:28;:::i;:::-;:33;;;;:::i;:::-;21867:14;;;:50;21955:18;;21974:4;;21947:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21932:12;;;:46;22016:18;;22035:4;;22008:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21993:12;;;:46;22075:16;;22092:4;;22067:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;22054:10;;;:42;;;22174:12;;;;22161;;;;22146:14;;;;22139:6;;;;22131:14;;:7;:14;:::i;:::-;:29;;;;:::i;:::-;:42;;;;:::i;:::-;:55;;;;:::i;:::-;:66;;;;:::i;:::-;22111:17;;;:86;21125:1110;;;;;:::o;22243:804::-;22368:15;;;;;;;22524:19;22532:11;22524:7;:19;:::i;:::-;22514:29;;22560:7;22556:73;;-1:-1:-1;22589:7:0;;-1:-1:-1;22607:1:0;;-1:-1:-1;22607:1:0;;-1:-1:-1;22607:1:0;;-1:-1:-1;22607:1:0;;-1:-1:-1;22607:1:0;22582:35;;22556:73;22655:11;22648:1;:6;;;:18;;;;:::i;:::-;22641:25;;22707:11;22692:1;:14;;;:26;;;;:::i;:::-;22677:41;;22755:11;22742:1;:12;;;:24;;;;:::i;:::-;22729:37;;22803:11;22790:1;:12;;;:24;;;;:::i;:::-;22777:37;;22847:11;22836:1;:10;;;:22;;;;:::i;:::-;22825:33;-1:-1:-1;22825:33:0;22925:10;22914;22901:12;22888;22896:4;22888:7;:12;:::i;:::-;:25;;;;:::i;:::-;:36;;;;:::i;:::-;:47;;;;:::i;:::-;:56;;;;:::i;:::-;22869:75;;22243:804;;;;;;;;;;;;;:::o;27355:509::-;27503:16;;;27517:1;27503:16;;;;;;;;27479:21;;27503:16;;;;;;;;;;-1:-1:-1;27503:16:0;27479:40;;27540:6;;;;;;;;;-1:-1:-1;;;;;27540:6:0;-1:-1:-1;;;;;27540:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27530:4;27535:1;27530:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27530:23:0;;;-1:-1:-1;;;;;27530:23:0;;;;;27582:4;27564;27569:1;27564:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27564:23:0;;;:7;;;;;;;;;:23;27625:6;;-1:-1:-1;;;27625:6:0;;;:57;27690:6;27712:1;27759:4;11800:42;27820:24;:15;27840:3;27820:19;:24::i;:::-;27625:230;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27405:459;27355:509;:::o;29469:564::-;29619:16;;;29633:1;29619:16;;;;;;;;29595:21;;29619:16;;;;;;;;;;-1:-1:-1;29619:16:0;29595:40;;29664:4;29646;29651:1;29646:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;29646:23:0;;;-1:-1:-1;;;;;29646:23:0;;;;;29690:6;;;;;;;;;-1:-1:-1;;;;;29690:6:0;-1:-1:-1;;;;;29690:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29680:4;29685:1;29680:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29680:23:0;;;:7;;;;;;;;;:23;29748:6;;29716:53;;29733:4;;-1:-1:-1;;;29748:6:0;;;29757:11;29716:8;:53::i;:::-;29808:6;;:215;;-1:-1:-1;;;29808:215:0;;-1:-1:-1;;;29808:6:0;;;-1:-1:-1;;;;;29808:6:0;;:57;;:215;;29880:11;;29906:1;;29950:4;;29977;;29997:15;;29808:6;:215;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28966:495;29146:6;;29114:53;;29131:4;;-1:-1:-1;;;29146:6:0;;-1:-1:-1;;;;;29146:6:0;29155:11;29114:8;:53::i;:::-;29210:6;;-1:-1:-1;;;;;;;;29210:6:0;;;;:22;29240:9;29273:4;29293:11;29319:1;;29405:7;8633;8660:6;-1:-1:-1;;;;;8660:6:0;;8587:87;29405:7;29210:243;;;;;;-1:-1:-1;;;;;;29210:243:0;;;-1:-1:-1;;;;;18465:15:1;;;29210:243:0;;;18447:34:1;18497:18;;;18490:34;;;;18540:18;;;18533:34;;;;18583:18;;;18576:34;18647:15;;;18626:19;;;18619:44;29427:15:0;18679:19:1;;;18672:35;18381:19;;29210:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28966:495;;:::o;19382:123::-;19460:4;19450:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;19475:11:0;:22;;19493:4;;19475:11;:15;;:22;;19493:4;;19475:22;:::i;:::-;;;;-1:-1:-1;;;;19382:123:0:o;19513:289::-;19628:12;19602:11;:23;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;19674:4:0;19654:26;;;;:11;:26;;;;;;;;19651:94;;;19713:4;19697:22;;;;:7;:22;;;;;:36;;19721:12;;19697:22;:36;;19721:12;;19697:36;:::i;:::-;;;;-1:-1:-1;;19651:94:0;19771:4;19755:22;;;;:7;:22;;;;;:37;;19780:12;;19755:22;:37;;19780:12;;19755:37;:::i;20088:284::-;20195:10;20171:11;:21;;;:34;;;;;;;:::i;20380:293::-;20487:10;20463:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;20525:16:0;;-1:-1:-1;;;;;20525:16:0;20513:29;;;;:11;:29;;;;;;;;20510:107;;;20576:16;;-1:-1:-1;;;;;20576:16:0;20568:25;;;;:7;:25;;;;;:37;;20595:10;;20568:25;:37;;20595:10;;20568:37;:::i;:::-;;;;-1:-1:-1;;20510:107:0;20635:16;;-1:-1:-1;;;;;20635:16:0;20627:25;;;;:7;:25;;;;;:38;;20655:10;;20627:25;:38;;20655:10;;20627:38;:::i;19810:270::-;19909:8;19887:11;:19;;;:30;;;;;;;:::i;3160:98::-;3218:7;3245:5;3249:1;3245;:5;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;2122:456::-;2199:6;2207;2215;2268:2;2256:9;2247:7;2243:23;2239:32;2236:52;;;2284:1;2281;2274:12;2236:52;2323:9;2310:23;2342:31;2367:5;2342:31;:::i;:::-;2392:5;-1:-1:-1;2449:2:1;2434:18;;2421:32;2462:33;2421:32;2462:33;:::i;:::-;2122:456;;2514:7;;-1:-1:-1;;;2568:2:1;2553:18;;;;2540:32;;2122:456::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:1;;2583:180;-1:-1:-1;2583:180:1:o;2957:247::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3124:9;3111:23;3143:31;3168:5;3143:31;:::i;3209:118::-;3295:5;3288:13;3281:21;3274:5;3271:32;3261:60;;3317:1;3314;3307:12;3332:309;3397:6;3405;3458:2;3446:9;3437:7;3433:23;3429:32;3426:52;;;3474:1;3471;3464:12;3426:52;3510:9;3497:23;3487:33;;3570:2;3559:9;3555:18;3542:32;3583:28;3605:5;3583:28;:::i;:::-;3630:5;3620:15;;;3332:309;;;;;:::o;3646:454::-;3741:6;3749;3757;3765;3773;3826:3;3814:9;3805:7;3801:23;3797:33;3794:53;;;3843:1;3840;3833:12;3794:53;-1:-1:-1;;3866:23:1;;;3936:2;3921:18;;3908:32;;-1:-1:-1;3987:2:1;3972:18;;3959:32;;4038:2;4023:18;;4010:32;;-1:-1:-1;4089:3:1;4074:19;4061:33;;-1:-1:-1;3646:454:1;-1:-1:-1;3646:454:1:o;4105:241::-;4161:6;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4269:9;4256:23;4288:28;4310:5;4288:28;:::i;4351:248::-;4419:6;4427;4480:2;4468:9;4459:7;4455:23;4451:32;4448:52;;;4496:1;4493;4486:12;4448:52;-1:-1:-1;;4519:23:1;;;4589:2;4574:18;;;4561:32;;-1:-1:-1;4351:248:1:o;4604:388::-;4672:6;4680;4733:2;4721:9;4712:7;4708:23;4704:32;4701:52;;;4749:1;4746;4739:12;4701:52;4788:9;4775:23;4807:31;4832:5;4807:31;:::i;:::-;4857:5;-1:-1:-1;4914:2:1;4899:18;;4886:32;4927:33;4886:32;4927:33;:::i;5220:356::-;5422:2;5404:21;;;5441:18;;;5434:30;5500:34;5495:2;5480:18;;5473:62;5567:2;5552:18;;5220:356::o;5992:127::-;6053:10;6048:3;6044:20;6041:1;6034:31;6084:4;6081:1;6074:15;6108:4;6105:1;6098:15;6124:217;6164:1;6190;6180:132;;6234:10;6229:3;6225:20;6222:1;6215:31;6269:4;6266:1;6259:15;6297:4;6294:1;6287:15;6180:132;-1:-1:-1;6326:9:1;;6124:217::o;6698:127::-;6759:10;6754:3;6750:20;6747:1;6740:31;6790:4;6787:1;6780:15;6814:4;6811:1;6804:15;6830:125;6870:4;6898:1;6895;6892:8;6889:34;;;6903:18;;:::i;:::-;-1:-1:-1;6940:9:1;;6830:125::o;6960:127::-;7021:10;7016:3;7012:20;7009:1;7002:31;7052:4;7049:1;7042:15;7076:4;7073:1;7066:15;7092:135;7131:3;-1:-1:-1;;7152:17:1;;7149:43;;;7172:18;;:::i;:::-;-1:-1:-1;7219:1:1;7208:13;;7092:135::o;7232:128::-;7272:3;7303:1;7299:6;7296:1;7293:13;7290:39;;;7309:18;;:::i;:::-;-1:-1:-1;7345:9:1;;7232:128::o;7778:251::-;7848:6;7901:2;7889:9;7880:7;7876:23;7872:32;7869:52;;;7917:1;7914;7907:12;7869:52;7949:9;7943:16;7968:31;7993:5;7968:31;:::i;9059:168::-;9099:7;9165:1;9161;9157:6;9153:14;9150:1;9147:21;9142:1;9135:9;9128:17;9124:45;9121:71;;;9172:18;;:::i;:::-;-1:-1:-1;9212:9:1;;9059:168::o;9232:184::-;9302:6;9355:2;9343:9;9334:7;9330:23;9326:32;9323:52;;;9371:1;9368;9361:12;9323:52;-1:-1:-1;9394:16:1;;9232:184;-1:-1:-1;9232:184:1:o;9700:245::-;9767:6;9820:2;9808:9;9799:7;9795:23;9791:32;9788:52;;;9836:1;9833;9826:12;9788:52;9868:9;9862:16;9887:28;9909:5;9887:28;:::i;10650:422::-;10739:1;10782:5;10739:1;10796:270;10817:7;10807:8;10804:21;10796:270;;;10876:4;10872:1;10868:6;10864:17;10858:4;10855:27;10852:53;;;10885:18;;:::i;:::-;10935:7;10925:8;10921:22;10918:55;;;10955:16;;;;10918:55;11034:22;;;;10994:15;;;;10796:270;;;10800:3;10650:422;;;;;:::o;11077:806::-;11126:5;11156:8;11146:80;;-1:-1:-1;11197:1:1;11211:5;;11146:80;11245:4;11235:76;;-1:-1:-1;11282:1:1;11296:5;;11235:76;11327:4;11345:1;11340:59;;;;11413:1;11408:130;;;;11320:218;;11340:59;11370:1;11361:10;;11384:5;;;11408:130;11445:3;11435:8;11432:17;11429:43;;;11452:18;;:::i;:::-;-1:-1:-1;;11508:1:1;11494:16;;11523:5;;11320:218;;11622:2;11612:8;11609:16;11603:3;11597:4;11594:13;11590:36;11584:2;11574:8;11571:16;11566:2;11560:4;11557:12;11553:35;11550:77;11547:159;;;-1:-1:-1;11659:19:1;;;11691:5;;11547:159;11738:34;11763:8;11757:4;11738:34;:::i;:::-;11808:6;11804:1;11800:6;11796:19;11787:7;11784:32;11781:58;;;11819:18;;:::i;:::-;11857:20;;11077:806;-1:-1:-1;;;11077:806:1:o;11888:140::-;11946:5;11975:47;12016:4;12006:8;12002:19;11996:4;11975:47;:::i;16538:461::-;16591:3;16629:5;16623:12;16656:6;16651:3;16644:19;16682:4;16711:2;16706:3;16702:12;16695:19;;16748:2;16741:5;16737:14;16769:1;16779:195;16793:6;16790:1;16787:13;16779:195;;;16858:13;;-1:-1:-1;;;;;16854:39:1;16842:52;;16914:12;;;;16949:15;;;;16890:1;16808:9;16779:195;;;-1:-1:-1;16990:3:1;;16538:461;-1:-1:-1;;;;;16538:461:1:o;17004:510::-;17275:6;17264:9;17257:25;17318:3;17313:2;17302:9;17298:18;17291:31;17238:4;17339:57;17391:3;17380:9;17376:19;17368:6;17339:57;:::i;:::-;-1:-1:-1;;;;;17432:32:1;;;;17427:2;17412:18;;17405:60;-1:-1:-1;17496:2:1;17481:18;17474:34;17331:65;17004:510;-1:-1:-1;;17004:510:1:o;17519:582::-;17818:6;17807:9;17800:25;17861:6;17856:2;17845:9;17841:18;17834:34;17904:3;17899:2;17888:9;17884:18;17877:31;17781:4;17925:57;17977:3;17966:9;17962:19;17954:6;17925:57;:::i;:::-;-1:-1:-1;;;;;18018:32:1;;;;18013:2;17998:18;;17991:60;-1:-1:-1;18082:3:1;18067:19;18060:35;17917:65;17519:582;-1:-1:-1;;;17519:582:1:o;18718:306::-;18806:6;18814;18822;18875:2;18863:9;18854:7;18850:23;18846:32;18843:52;;;18891:1;18888;18881:12;18843:52;18920:9;18914:16;18904:26;;18970:2;18959:9;18955:18;18949:25;18939:35;;19014:2;19003:9;18999:18;18993:25;18983:35;;18718:306;;;;;:::o
Swarm Source
ipfs://25892402efa9a6de8e21202e2e42dc5db46bd8343dab9c9b324e39cb9ea3807a
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.