Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
3,000,000,000 XENO
Holders
47
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,532,163 XENOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Xenodollar
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-30 */ // SPDX-License-Identifier: MIT // Developed by ContractChecker â’¸ pragma solidity 0.8.15; 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } 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; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); 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) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Xenodollar is ERC20, Ownable{ uint256 public buyFee = 6; uint256 public sellFee = 6; uint256 public ownerShare = 33; uint256 public marketingShare = 33; uint256 public stakingShare = 34; address public marketingWallet=0x3C6d413Bb0464eF84AE7446db827434F56345EcF; address public stakingWallet=0xf91Aeb579eFF543aCa829f10C5b9d0573D1cD1F5; bool public walletToWalletTransferWithoutFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address private DEAD = 0x000000000000000000000000000000000000dEaD; bool private swapping; uint256 public swapTokensAtAmount; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded); event FeesUpdated(uint256 buyFee, uint256 sellFee); event FeeSharesUpdated(uint256 marketingShare, uint256 ownerShare, uint256 stakingShare); event StakingWalletChanged(address stakingWallet); event MarketingWalletChanged(address marketingWallet); event MaxWalletLimitRateChanged(uint256 maxWalletLimitRate); event MaxWalletLimitStateChanged(bool maxWalletLimit); event MaxTransactionLimitRatesChanged(uint256 maxTransferRateBuy, uint256 maxTransferRateSell); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event SendOwner(uint256 bnbSend); event SendMarketing(uint256 bnbSend); constructor (address newOwner)ERC20("Xenodollar", "XENO") { transferOwnership(newOwner); operator = msg.sender; _totalSupply = 3_000_000_000 * (10 ** 18); _balances[owner()] = 3_000_000_000 * (10 ** 18); emit Transfer(address(0), owner(), 3_000_000_000 * (10 ** 18)); address currentRouter; if (block.chainid == 56) { currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // PCS Router } else if (block.chainid == 97) { currentRouter = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; // PCS Testnet } else if (block.chainid == 43114) { currentRouter = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; //Avax Mainnet } else if (block.chainid == 137) { currentRouter = 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff; //Polygon Ropsten } else if (block.chainid == 250) { currentRouter = 0xF491e7B69E4244ad4002BC14e878a34207E38c29; //SpookySwap FTM } else if (block.chainid == 3) { currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Ropsten } else if (block.chainid == 1 || block.chainid == 4) { currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Mainnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); _setAutomatedMarketMakerPair(_uniswapV2Pair, true); _isExcludedFromMaxTxLimit[owner()] = true; _isExcludedFromMaxTxLimit[address(0)] = true; _isExcludedFromMaxTxLimit[address(this)] = true; _isExcludedFromMaxTxLimit[DEAD] = true; _isExcludedFromMaxTxLimit[stakingWallet] = true; _isExcludedFromMaxWalletLimit[owner()] = true; _isExcludedFromMaxWalletLimit[address(0)] = true; _isExcludedFromMaxWalletLimit[address(this)] = true; _isExcludedFromMaxWalletLimit[DEAD] = true; _isExcludedFromMaxWalletLimit[stakingWallet] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[DEAD] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[stakingWallet] = true; swapTokensAtAmount = 3_000_000_000 * (10 ** 18) / 5000; maxTransactionAmountBuy = totalSupply()/50; maxTransactionAmountSell = totalSupply()/50; maxWalletAmount = totalSupply()/20; } address public operator; bool public isTradingEnabled; modifier onlyOperatorOrOwner() { require(operator == _msgSender() || _msgSender() == owner() , "Caller is not the Operator or Owner"); _; } modifier onlyOperator(){ require(operator == _msgSender(),"Caller is not the Operator"); _; } function changeOperatorWallet(address newAddress) external onlyOperator{ require(newAddress != operator,"Operator Address is already same"); operator = newAddress; } function openTrade() public onlyOperatorOrOwner { require(isTradingEnabled==false,"Trading is already open!"); isTradingEnabled = true; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim native tokens"); if (token == address(0x0)) { payable(msg.sender).transfer(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendETH(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 updateUniswapV2Router(address newAddress) external onlyOperator { require(newAddress != address(uniswapV2Router), "The router already has that address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router02(newAddress); address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); uniswapV2Pair = _uniswapV2Pair; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOperator { require(pair != uniswapV2Pair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } //=======FeeManagement=======// function excludeFromFees(address account) external onlyOwner { require(!_isExcludedFromFees[account], "Account is already the value of 'excluded'"); _isExcludedFromFees[account] = true; emit ExcludeFromFees(account, true); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner { require(_buyFee <= 25 && _sellFee <= 25, "Fees must be less than 25%"); buyFee = _buyFee; sellFee = _sellFee; emit FeesUpdated(buyFee, sellFee); } function updateFeeShares(uint256 _marketingFeeShare, uint256 _ownerShare, uint256 _stakingShare) external onlyOwner { require(_marketingFeeShare + _ownerShare + _stakingShare == 100, "Fee shares must add up to 100"); marketingShare = _marketingFeeShare; ownerShare = _ownerShare; stakingShare = _stakingShare; emit FeeSharesUpdated(marketingShare, ownerShare, stakingShare); } function enableWalletToWalletTransferWithoutFee(bool enable) external onlyOwner { require(walletToWalletTransferWithoutFee != enable, "Wallet to wallet transfer without fee is already set to that value"); walletToWalletTransferWithoutFee = enable; } function changeMarketingWallet(address _marketingWallet) external onlyOwner { require(_marketingWallet != marketingWallet, "Marketing wallet is already that address"); require(!isContract(_marketingWallet), "Marketing wallet cannot be a contract"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } function changeStakingWallet(address _stakingWallet) external onlyOwner { require(_stakingWallet != marketingWallet, "Staking wallet is already that address"); require(!isContract(_stakingWallet), "Staking wallet cannot be a contract"); require(_stakingWallet != address(0), "new stakingWallet cannot be the zero address"); stakingWallet = _stakingWallet; emit StakingWalletChanged(stakingWallet); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { require(isTradingEnabled, "Trade is not open"); } if (maxTransactionLimitEnabled) { if (_isExcludedFromMaxTxLimit[from] == false && _isExcludedFromMaxTxLimit[to] == false ) { if (from == uniswapV2Pair) { require(amount <= maxTransactionAmountBuy, "AntiWhale: Transfer amount exceeds the maxTransferAmount"); }else{ require(amount <= maxTransactionAmountSell, "AntiWhale: Transfer amount exceeds the maxTransferAmount"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && !swapping && !automatedMarketMakerPairs[from] ) { swapping = true; uint256 stakingTokens; if(stakingShare > 0) { stakingTokens = contractTokenBalance * stakingShare / 100; super._transfer(address(this), stakingWallet, stakingTokens); } contractTokenBalance -= stakingTokens; uint256 ethShare = marketingShare + ownerShare; if(contractTokenBalance > 0 && ethShare > 0) { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( contractTokenBalance, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; if(marketingShare > 0) { uint256 marketingETH = (newBalance * marketingShare) / ethShare; sendETH(payable(marketingWallet),marketingETH); emit SendMarketing(marketingETH); } if(ownerShare > 0) { uint256 ownerETH = (newBalance * ownerShare) / ethShare; sendETH(payable(owner()), ownerETH); emit SendOwner(ownerETH); } } swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if(walletToWalletTransferWithoutFee && from != uniswapV2Pair && to != uniswapV2Pair) { takeFee = false; } if(takeFee) { uint256 _totalFees; if(from == uniswapV2Pair) { _totalFees = buyFee; } else { _totalFees = sellFee; } uint256 fees = amount * _totalFees / 100; amount = amount - fees; super._transfer(from, address(this), fees); } if (maxWalletLimitEnabled) { if (_isExcludedFromMaxWalletLimit[from] == false && _isExcludedFromMaxWalletLimit[to] == false && to != uniswapV2Pair ) { uint balance = balanceOf(to); require(balance + amount <= maxWalletAmount, "MaxWallet: Transfer amount exceeds the maxWalletAmount"); } } super._transfer(from, to, amount); } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 100000, "SwapTokensAtAmount must be greater than 0.001% of total supply"); swapTokensAtAmount = newAmount; } //=======MaxWallet=======// mapping(address => bool) private _isExcludedFromMaxWalletLimit; bool public maxWalletLimitEnabled = true; uint256 public maxWalletAmount; function setEnableMaxWalletLimit(bool enable) external onlyOwner { require( enable != maxWalletLimitEnabled, "Max wallet limit is already set to that state" ); maxWalletLimitEnabled = enable; emit MaxWalletLimitStateChanged(maxWalletLimitEnabled); } function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner { require( _maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%" ); maxWalletAmount = _maxWalletAmount * (10 ** decimals()); emit MaxWalletLimitRateChanged(maxWalletAmount); } function setExcludeFromMaxWallet(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxWalletLimit[account] != exclude, "Account is already set to that state" ); _isExcludedFromMaxWalletLimit[account] = exclude; emit ExcludedFromMaxWalletLimit(account, exclude); } function isExcludedFromMaxWalletLimit(address account) public view returns(bool) { return _isExcludedFromMaxWalletLimit[account]; } //=======MaxTransaction=======// mapping(address => bool) private _isExcludedFromMaxTxLimit; bool public maxTransactionLimitEnabled = true; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; function setEnableMaxTransactionLimit(bool enable) external onlyOwner { require( enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state" ); maxTransactionLimitEnabled = enable; emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled); } function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner { require( _maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1000 && _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals()))/ 1000, "Max Transaction limis cannot be lower than 0.1% of total supply" ); maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals()); maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals()); emit MaxTransactionLimitRatesChanged(maxTransactionAmountBuy, maxTransactionAmountSell); } function setExcludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state" ); _isExcludedFromMaxTxLimit[account] = exclude; emit ExcludedFromMaxTransactionLimit(account, exclude); } function isExcludedFromMaxTransaction(address account) public view returns(bool) { return _isExcludedFromMaxTxLimit[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"newOwner","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":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ownerShare","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakingShare","type":"uint256"}],"name":"FeeSharesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransferRateBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransferRateSell","type":"uint256"}],"name":"MaxTransactionLimitRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletLimitRate","type":"uint256"}],"name":"MaxWalletLimitRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","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":"bnbSend","type":"uint256"}],"name":"SendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SendOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"stakingWallet","type":"address"}],"name":"StakingWalletChanged","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changeOperatorWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingWallet","type":"address"}],"name":"changeStakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"bool","name":"enable","type":"bool"}],"name":"enableWalletToWalletTransferWithoutFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeShare","type":"uint256"},{"internalType":"uint256","name":"_ownerShare","type":"uint256"},{"internalType":"uint256","name":"_stakingShare","type":"uint256"}],"name":"updateFeeShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferWithoutFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526006808055600755602160088190556009556022600a55600b80546001600160a01b0319908116733c6d413bb0464ef84ae7446db827434f56345ecf17909155600c8054821673f91aeb579eff543aca829f10c5b9d0573d1cd1f5179055600f805490911661dead1790556015805460ff1990811660019081179092556018805490911690911790553480156200009a57600080fd5b5060405162003f7238038062003f72833981016040819052620000bd9162000a61565b6040518060400160405280600a8152602001692c32b737b237b63630b960b11b8152506040518060400160405280600481526020016358454e4f60e01b81525081600390816200010e919062000b38565b5060046200011d828262000b38565b5050506000620001326200073760201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003f52833981519152908290a3506200017a816200073b565b601380546001600160a01b031916331790556b09b18ab5df7180b6b80000006002819055600080620001b46005546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620001e16005546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b09b18ab5df7180b6b80000006040516200023391815260200190565b60405180910390a36000466038036200026257507310ed43c718714eb63d5aa57b78b54704e256024e62000353565b46606103620002875750739ac64cc6e4415144c455bd8e4837fea55603e5c362000353565b4661a86a03620002ad57507360ae616a2155ee3d9a68541ba4544862310933d462000353565b46608903620002d2575073a5e0829caced8ffdd4de3c43696c57f7d7a678ff62000353565b4660fa03620002f7575073f491e7b69e4244ad4002bc14e878a34207e38c2962000353565b466003036200031c5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000353565b46600114806200032c5750466004145b156200034e5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000353565b600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000a61565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200040d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000433919062000a61565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000481573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a7919062000a61565b600d80546001600160a01b038086166001600160a01b03199283168117909355600e805491851691909216179055909150620004e89030906000196200084d565b620004f581600162000975565b6001601760006200050e6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560179093527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b8054851660019081179091553084528284208054861682179055600f54821684528284208054861682179055600c54909116835290822080549093168117909255601490620005b96005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560149093527f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c8054851660019081179091553084528284208054861682179055600f54821684528284208054861682179055600c54909116835290822080549093168117909255601190620006646005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600f548216815260119093528183208054851660019081179091553084528284208054861682179055600c54909116835291208054909216179055697f0e10af47c1c70000006010556032620006e760025490565b620006f3919062000c04565b60195560326200070260025490565b6200070e919062000c04565b601a5560146200071d60025490565b62000729919062000c04565b6016555062000c2792505050565b3390565b6005546001600160a01b031633146200079b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038116620008025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000792565b6005546040516001600160a01b0380841692169060008051602062003f5283398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316620008b15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000792565b6001600160a01b038216620009145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000792565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526012602052604090205481151560ff90911615150362000a0d5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840162000792565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60006020828403121562000a7457600080fd5b81516001600160a01b038116811462000a8c57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000abe57607f821691505b60208210810362000adf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b3357600081815260208120601f850160051c8101602086101562000b0e5750805b601f850160051c820191505b8181101562000b2f5782815560010162000b1a565b5050505b505050565b81516001600160401b0381111562000b545762000b5462000a93565b62000b6c8162000b65845462000aa9565b8462000ae5565b602080601f83116001811462000ba4576000841562000b8b5750858301515b600019600386901b1c1916600185901b17855562000b2f565b600085815260208120601f198616915b8281101562000bd55788860151825594840194600190910190840162000bb4565b508582101562000bf45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008262000c2257634e487b7160e01b600052601260045260246000fd5b500490565b61331b8062000c376000396000f3fe6080604052600436106103395760003560e01c806365b8dbc0116101ab578063a9059cbb116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b146109d0578063f5a82bfd146109f0578063f9d0831a14610a10578063fb201b1d14610a3057600080fd5b8063dd62ed3e14610954578063e2f456051461099a578063e57f14e1146109b057600080fd5b8063b62496f5116100d1578063b62496f5146108c4578063b6f7f681146108f4578063bb85c6d114610914578063dbb853d61461093457600080fd5b8063a9059cbb1461086e578063aa4bde281461088e578063afa4f3b2146108a457600080fd5b80638f1c3151116101645780639a7a23d61161013e5780639a7a23d6146107df578063a457c2d7146107ff578063a50f13d81461081f578063a8a69b9d1461083557600080fd5b80638f1c315114610794578063929f1360146107aa57806395d89b41146107ca57600080fd5b806365b8dbc0146106cb5780636db79437146106eb57806370a082311461070b578063715018a61461074157806375f0a874146107565780638da5cb5b1461077657600080fd5b806327a14fc21161028557806347062402116102235780635654d0b3116101fd5780635654d0b31461065557806356a6cabf14610675578063570ca7351461069557806359136fa5146106b557600080fd5b806347062402146105e657806349bd5a5e146105fc5780634fbee1931461061c57600080fd5b80632ba86bf21161025f5780632ba86bf214610570578063313ce5671461058a578063384c05bd146105a657806339509351146105c657600080fd5b806327a14fc21461051a5780632a6c7dba1461053a5780632b14ca561461055a57600080fd5b8063150c880c116102f257806318160ddd116102cc57806318160ddd1461049257806318d9ceae146104a757806321a9d82a146104e057806323b872dd146104fa57600080fd5b8063150c880c1461042f5780631529fbbf146104515780631694505e1461047257600080fd5b80630105d0fd14610345578063064a59d01461036e57806306ee6ad81461039f57806306fdde03146103d757806309218ee7146103f9578063095ea7b31461040f57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b60195481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b5060135461038f90600160a01b900460ff1681565b6040519015158152602001610365565b3480156103ab57600080fd5b50600c546103bf906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b3480156103e357600080fd5b506103ec610a45565b6040516103659190612ccf565b34801561040557600080fd5b5061035b60095481565b34801561041b57600080fd5b5061038f61042a366004612d39565b610ad7565b34801561043b57600080fd5b5061044f61044a366004612d73565b610aee565b005b34801561045d57600080fd5b50600c5461038f90600160a01b900460ff1681565b34801561047e57600080fd5b50600d546103bf906001600160a01b031681565b34801561049e57600080fd5b5060025461035b565b3480156104b357600080fd5b5061038f6104c2366004612dac565b6001600160a01b031660009081526017602052604090205460ff1690565b3480156104ec57600080fd5b5060155461038f9060ff1681565b34801561050657600080fd5b5061038f610515366004612dd0565b610bc1565b34801561052657600080fd5b5061044f610535366004612e11565b610c72565b34801561054657600080fd5b5061044f610555366004612e2a565b610d78565b34801561056657600080fd5b5061035b60075481565b34801561057c57600080fd5b5060185461038f9060ff1681565b34801561059657600080fd5b5060405160128152602001610365565b3480156105b257600080fd5b5061044f6105c1366004612dac565b610e57565b3480156105d257600080fd5b5061038f6105e1366004612d39565b61100b565b3480156105f257600080fd5b5061035b60065481565b34801561060857600080fd5b50600e546103bf906001600160a01b031681565b34801561062857600080fd5b5061038f610637366004612dac565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561066157600080fd5b5061044f610670366004612e2a565b611047565b34801561068157600080fd5b5061044f610690366004612e2a565b611122565b3480156106a157600080fd5b506013546103bf906001600160a01b031681565b3480156106c157600080fd5b5061035b601a5481565b3480156106d757600080fd5b5061044f6106e6366004612dac565b611206565b3480156106f757600080fd5b5061044f610706366004612e47565b611470565b34801561071757600080fd5b5061035b610726366004612dac565b6001600160a01b031660009081526020819052604090205490565b34801561074d57600080fd5b5061044f611540565b34801561076257600080fd5b50600b546103bf906001600160a01b031681565b34801561078257600080fd5b506005546001600160a01b03166103bf565b3480156107a057600080fd5b5061035b60085481565b3480156107b657600080fd5b5061044f6107c5366004612d73565b6115b4565b3480156107d657600080fd5b506103ec611676565b3480156107eb57600080fd5b5061044f6107fa366004612d73565b611685565b34801561080b57600080fd5b5061038f61081a366004612d39565b61174f565b34801561082b57600080fd5b5061035b600a5481565b34801561084157600080fd5b5061038f610850366004612dac565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561087a57600080fd5b5061038f610889366004612d39565b6117e8565b34801561089a57600080fd5b5061035b60165481565b3480156108b057600080fd5b5061044f6108bf366004612e11565b6117f5565b3480156108d057600080fd5b5061038f6108df366004612dac565b60126020526000908152604090205460ff1681565b34801561090057600080fd5b5061044f61090f366004612e47565b6118af565b34801561092057600080fd5b5061044f61092f366004612dac565b611a12565b34801561094057600080fd5b5061044f61094f366004612dac565b611b5f565b34801561096057600080fd5b5061035b61096f366004612e69565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109a657600080fd5b5061035b60105481565b3480156109bc57600080fd5b5061044f6109cb366004612dac565b611c09565b3480156109dc57600080fd5b5061044f6109eb366004612dac565b611d0c565b3480156109fc57600080fd5b5061044f610a0b366004612e97565b611df7565b348015610a1c57600080fd5b5061044f610a2b366004612dac565b611eda565b348015610a3c57600080fd5b5061044f61207e565b606060038054610a5490612ec3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8090612ec3565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b5050505050905090565b6000610ae4338484612168565b5060015b92915050565b6005546001600160a01b03163314610b215760405162461bcd60e51b8152600401610b1890612efd565b60405180910390fd5b6001600160a01b03821660009081526017602052604090205481151560ff909116151503610b615760405162461bcd60e51b8152600401610b1890612f32565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610c5c5782811015610c4f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b18565b610c5c8533858403612168565b610c6785858561228c565b506001949350505050565b6005546001600160a01b03163314610c9c5760405162461bcd60e51b8152600401610b1890612efd565b6064610caa6012600a613070565b600254610cb7919061307f565b610cc1919061307f565b811015610d265760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b6064820152608401610b18565b610d326012600a613070565b610d3c90826130a1565b60168190556040519081527ffbede00c52e68e7972265f0deb49773af2ec3e07ebaf22d74be3c4f0c6d56867906020015b60405180910390a150565b6005546001600160a01b03163314610da25760405162461bcd60e51b8152600401610b1890612efd565b60155460ff16151581151503610e105760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b6064820152608401610b18565b6015805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610d6d565b6005546001600160a01b03163314610e815760405162461bcd60e51b8152600401610b1890612efd565b600b546001600160a01b0390811690821603610eee5760405162461bcd60e51b815260206004820152602660248201527f5374616b696e672077616c6c657420697320616c72656164792074686174206160448201526564647265737360d01b6064820152608401610b18565b6001600160a01b0381163b15610f525760405162461bcd60e51b815260206004820152602360248201527f5374616b696e672077616c6c65742063616e6e6f74206265206120636f6e74726044820152621858dd60ea1b6064820152608401610b18565b6001600160a01b038116610fbd5760405162461bcd60e51b815260206004820152602c60248201527f6e6577207374616b696e6757616c6c65742063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b6064820152608401610b18565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feff29f22320650eef14587b44577ea92058e98f8ac4973c413f74b979a1949af90602001610d6d565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ae49185906110429086906130c0565b612168565b6005546001600160a01b031633146110715760405162461bcd60e51b8152600401610b1890612efd565b801515600c60149054906101000a900460ff161515036111045760405162461bcd60e51b815260206004820152604260248201527f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560448201527f742066656520697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401610b18565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610b1890612efd565b60185460ff161515811515036111bf5760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c72656164796044820152712073657420746f207468617420737461746560701b6064820152608401610b18565b6018805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf90602001610d6d565b6013546001600160a01b031633146112305760405162461bcd60e51b8152600401610b18906130d8565b600d546001600160a01b039081169082160361129a5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610b18565b600d546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600d80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611355919061310f565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db919061310f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061310f565b600e80546001600160a01b0319166001600160a01b03929092169190911790555050565b6005546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610b1890612efd565b601982111580156114ac575060198111155b6114f85760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203235250000000000006044820152606401610b18565b6006829055600781905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a191015b60405180910390a15050565b6005546001600160a01b0316331461156a5760405162461bcd60e51b8152600401610b1890612efd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115de5760405162461bcd60e51b8152600401610b1890612efd565b6001600160a01b03821660009081526014602052604090205481151560ff90911615150361161e5760405162461bcd60e51b8152600401610b1890612f32565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c9101610bb5565b606060048054610a5490612ec3565b6013546001600160a01b031633146116af5760405162461bcd60e51b8152600401610b18906130d8565b600e546001600160a01b03908116908316036117415760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610b18565b61174b8282612978565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117d15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b18565b6117de3385858403612168565b5060019392505050565b6000610ae433848461228c565b6005546001600160a01b0316331461181f5760405162461bcd60e51b8152600401610b1890612efd565b620186a061182c60025490565b611836919061307f565b81116118aa5760405162461bcd60e51b815260206004820152603e60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e30303125206f6620746f74616c20737570706c7900006064820152608401610b18565b601055565b6005546001600160a01b031633146118d95760405162461bcd60e51b8152600401610b1890612efd565b6103e86118e86012600a613070565b6002546118f5919061307f565b6118ff919061307f565b821015801561193357506103e86119186012600a613070565b600254611925919061307f565b61192f919061307f565b8110155b6119a55760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610b18565b6119b16012600a613070565b6119bb90836130a1565b6019556119ca6012600a613070565b6119d490826130a1565b601a8190556019546040517f2a88f79986e057b8152c19cea35cd214cf53364efbf95d5b22b37797c05be55f92611534928252602082015260400190565b6005546001600160a01b03163314611a3c5760405162461bcd60e51b8152600401610b1890612efd565b600b546001600160a01b0390811690821603611aab5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b6064820152608401610b18565b6001600160a01b0381163b15611b115760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e6044820152641d1c9858dd60da1b6064820152608401610b18565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610d6d565b6013546001600160a01b03163314611b895760405162461bcd60e51b8152600401610b18906130d8565b6013546001600160a01b0390811690821603611be75760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f72204164647265737320697320616c72656164792073616d656044820152606401610b18565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c335760405162461bcd60e51b8152600401610b1890612efd565b6001600160a01b03811660009081526011602052604090205460ff1615611caf5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610b18565b6001600160a01b038116600081815260116020908152604091829020805460ff1916600190811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a250565b6005546001600160a01b03163314611d365760405162461bcd60e51b8152600401610b1890612efd565b6001600160a01b038116611d9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b18565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e215760405162461bcd60e51b8152600401610b1890612efd565b80611e2c83856130c0565b611e3691906130c0565b606414611e855760405162461bcd60e51b815260206004820152601d60248201527f46656520736861726573206d7573742061646420757020746f203130300000006044820152606401610b18565b60098390556008829055600a81905560408051848152602081018490529081018290527f4677abe8dbff9a9de3cc464f74e0c16415fc3e839597772eb5fe5ece02a6a90a9060600160405180910390a1505050565b6005546001600160a01b03163314611f045760405162461bcd60e51b8152600401610b1890612efd565b306001600160a01b03821603611f5c5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610b18565b6001600160a01b038116611f965760405133904780156108fc02916000818181858888f1935050505015801561174b573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611fdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612003919061312c565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015612053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120779190613145565b5050505b50565b6013546001600160a01b03163314806120a157506005546001600160a01b031633145b6120f95760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865204f70657261746f72206f72204f776044820152623732b960e91b6064820152608401610b18565b601354600160a01b900460ff16156121535760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2100000000000000006044820152606401610b18565b6013805460ff60a01b1916600160a01b179055565b6001600160a01b0383166121ca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b18565b6001600160a01b03821661222b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b18565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166122b25760405162461bcd60e51b8152600401610b1890613162565b6001600160a01b0382166122d85760405162461bcd60e51b8152600401610b18906131a7565b806000036122f1576122ec83836000612a62565b505050565b6001600160a01b03831660009081526011602052604090205460ff1615801561233357506001600160a01b03821660009081526011602052604090205460ff16155b1561238557601354600160a01b900460ff166123855760405162461bcd60e51b81526020600482015260116024820152702a3930b2329034b9903737ba1037b832b760791b6044820152606401610b18565b60185460ff1615612436576001600160a01b03831660009081526017602052604090205460ff161580156123d257506001600160a01b03821660009081526017602052604090205460ff16155b1561243657600e546001600160a01b03908116908416036124145760195481111561240f5760405162461bcd60e51b8152600401610b18906131ea565b612436565b601a548111156124365760405162461bcd60e51b8152600401610b18906131ea565b30600090815260208190526040902054601054811080159081906124645750600f54600160a01b900460ff16155b801561248957506001600160a01b03851660009081526012602052604090205460ff16155b1561276257600f805460ff60a01b1916600160a01b179055600a54600090156124e1576064600a54846124bc91906130a1565b6124c6919061307f565b600c549091506124e19030906001600160a01b031683612a62565b6124eb8184613247565b925060006008546009546124ff91906130c0565b90506000841180156125115750600081115b156127525760408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061254f5761254f61325e565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc919061310f565b816001815181106125df576125df61325e565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac94790612625908990600090869030904290600401613274565b600060405180830381600087803b15801561263f57600080fd5b505af1158015612653573d6000803e3d6000fd5b50505050600082476126659190613247565b600954909150156126d9576000846009548361268191906130a1565b61268b919061307f565b600b549091506126a4906001600160a01b031682612bb6565b6040518181527fddce3d5e4f18a9c2902704a38b56baadd81a9af59b8ded8a3220b6a6c1696b6b9060200160405180910390a1505b6008541561274e57600084600854836126f291906130a1565b6126fc919061307f565b90506127196127136005546001600160a01b031690565b82612bb6565b6040518181527f8d940dd18b989b63a5beb7900169ad2fc4ba897598e10aca5cebb100e1eb18469060200160405180910390a1505b5050505b5050600f805460ff60a01b191690555b600f546001600160a01b03861660009081526011602052604090205460ff600160a01b9092048216159116806127b057506001600160a01b03851660009081526011602052604090205460ff165b156127b9575060005b600c54600160a01b900460ff1680156127e05750600e546001600160a01b03878116911614155b80156127fa5750600e546001600160a01b03868116911614155b15612803575060005b801561286457600e546000906001600160a01b039081169088160361282b5750600654612830565b506007545b6000606461283e83886130a1565b612848919061307f565b90506128548187613247565b9550612861883083612a62565b50505b60155460ff1615612965576001600160a01b03861660009081526014602052604090205460ff161580156128b157506001600160a01b03851660009081526014602052604090205460ff16155b80156128cb5750600e546001600160a01b03868116911614155b15612965576001600160a01b0385166000908152602081905260409020546016546128f686836130c0565b11156129635760405162461bcd60e51b815260206004820152603660248201527f4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565604482015275191cc81d1a19481b585e15d85b1b195d105b5bdd5b9d60521b6064820152608401610b18565b505b612970868686612a62565b505050505050565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503612a0e5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610b18565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316612a885760405162461bcd60e51b8152600401610b1890613162565b6001600160a01b038216612aae5760405162461bcd60e51b8152600401610b18906131a7565b6001600160a01b03831660009081526020819052604090205481811015612b265760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b18565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b5d9084906130c0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ba991815260200190565b60405180910390a3612077565b80471015612c065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b18565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c53576040519150601f19603f3d011682016040523d82523d6000602084013e612c58565b606091505b50509050806122ec5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b18565b600060208083528351808285015260005b81811015612cfc57858101830151858201604001528201612ce0565b81811115612d0e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461207b57600080fd5b60008060408385031215612d4c57600080fd5b8235612d5781612d24565b946020939093013593505050565b801515811461207b57600080fd5b60008060408385031215612d8657600080fd5b8235612d9181612d24565b91506020830135612da181612d65565b809150509250929050565b600060208284031215612dbe57600080fd5b8135612dc981612d24565b9392505050565b600080600060608486031215612de557600080fd5b8335612df081612d24565b92506020840135612e0081612d24565b929592945050506040919091013590565b600060208284031215612e2357600080fd5b5035919050565b600060208284031215612e3c57600080fd5b8135612dc981612d65565b60008060408385031215612e5a57600080fd5b50508035926020909101359150565b60008060408385031215612e7c57600080fd5b8235612e8781612d24565b91506020830135612da181612d24565b600080600060608486031215612eac57600080fd5b505081359360208301359350604090920135919050565b600181811c90821680612ed757607f821691505b602082108103612ef757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f4163636f756e7420697320616c72656164792073657420746f207468617420736040820152637461746560e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612fc7578160001904821115612fad57612fad612f76565b80851615612fba57918102915b93841c9390800290612f91565b509250929050565b600082612fde57506001610ae8565b81612feb57506000610ae8565b8160018114613001576002811461300b57613027565b6001915050610ae8565b60ff84111561301c5761301c612f76565b50506001821b610ae8565b5060208310610133831016604e8410600b841016171561304a575081810a610ae8565b6130548383612f8c565b806000190482111561306857613068612f76565b029392505050565b6000612dc960ff841683612fcf565b60008261309c57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130bb576130bb612f76565b500290565b600082198211156130d3576130d3612f76565b500190565b6020808252601a908201527f43616c6c6572206973206e6f7420746865204f70657261746f72000000000000604082015260600190565b60006020828403121561312157600080fd5b8151612dc981612d24565b60006020828403121561313e57600080fd5b5051919050565b60006020828403121561315757600080fd5b8151612dc981612d65565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73666572416d6f756e740000000000000000606082015260800190565b60008282101561325957613259612f76565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132c45784516001600160a01b03168352938301939183019160010161329f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202cdd5710d0651e673f89586e2ac95c9eef0b900dc6ec985e5f1cb57e0c1aa08b64736f6c634300080f00338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000de89e3981adaaf8c86bf9d04cdf6083a26269b56
Deployed Bytecode
0x6080604052600436106103395760003560e01c806365b8dbc0116101ab578063a9059cbb116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b146109d0578063f5a82bfd146109f0578063f9d0831a14610a10578063fb201b1d14610a3057600080fd5b8063dd62ed3e14610954578063e2f456051461099a578063e57f14e1146109b057600080fd5b8063b62496f5116100d1578063b62496f5146108c4578063b6f7f681146108f4578063bb85c6d114610914578063dbb853d61461093457600080fd5b8063a9059cbb1461086e578063aa4bde281461088e578063afa4f3b2146108a457600080fd5b80638f1c3151116101645780639a7a23d61161013e5780639a7a23d6146107df578063a457c2d7146107ff578063a50f13d81461081f578063a8a69b9d1461083557600080fd5b80638f1c315114610794578063929f1360146107aa57806395d89b41146107ca57600080fd5b806365b8dbc0146106cb5780636db79437146106eb57806370a082311461070b578063715018a61461074157806375f0a874146107565780638da5cb5b1461077657600080fd5b806327a14fc21161028557806347062402116102235780635654d0b3116101fd5780635654d0b31461065557806356a6cabf14610675578063570ca7351461069557806359136fa5146106b557600080fd5b806347062402146105e657806349bd5a5e146105fc5780634fbee1931461061c57600080fd5b80632ba86bf21161025f5780632ba86bf214610570578063313ce5671461058a578063384c05bd146105a657806339509351146105c657600080fd5b806327a14fc21461051a5780632a6c7dba1461053a5780632b14ca561461055a57600080fd5b8063150c880c116102f257806318160ddd116102cc57806318160ddd1461049257806318d9ceae146104a757806321a9d82a146104e057806323b872dd146104fa57600080fd5b8063150c880c1461042f5780631529fbbf146104515780631694505e1461047257600080fd5b80630105d0fd14610345578063064a59d01461036e57806306ee6ad81461039f57806306fdde03146103d757806309218ee7146103f9578063095ea7b31461040f57600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035b60195481565b6040519081526020015b60405180910390f35b34801561037a57600080fd5b5060135461038f90600160a01b900460ff1681565b6040519015158152602001610365565b3480156103ab57600080fd5b50600c546103bf906001600160a01b031681565b6040516001600160a01b039091168152602001610365565b3480156103e357600080fd5b506103ec610a45565b6040516103659190612ccf565b34801561040557600080fd5b5061035b60095481565b34801561041b57600080fd5b5061038f61042a366004612d39565b610ad7565b34801561043b57600080fd5b5061044f61044a366004612d73565b610aee565b005b34801561045d57600080fd5b50600c5461038f90600160a01b900460ff1681565b34801561047e57600080fd5b50600d546103bf906001600160a01b031681565b34801561049e57600080fd5b5060025461035b565b3480156104b357600080fd5b5061038f6104c2366004612dac565b6001600160a01b031660009081526017602052604090205460ff1690565b3480156104ec57600080fd5b5060155461038f9060ff1681565b34801561050657600080fd5b5061038f610515366004612dd0565b610bc1565b34801561052657600080fd5b5061044f610535366004612e11565b610c72565b34801561054657600080fd5b5061044f610555366004612e2a565b610d78565b34801561056657600080fd5b5061035b60075481565b34801561057c57600080fd5b5060185461038f9060ff1681565b34801561059657600080fd5b5060405160128152602001610365565b3480156105b257600080fd5b5061044f6105c1366004612dac565b610e57565b3480156105d257600080fd5b5061038f6105e1366004612d39565b61100b565b3480156105f257600080fd5b5061035b60065481565b34801561060857600080fd5b50600e546103bf906001600160a01b031681565b34801561062857600080fd5b5061038f610637366004612dac565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561066157600080fd5b5061044f610670366004612e2a565b611047565b34801561068157600080fd5b5061044f610690366004612e2a565b611122565b3480156106a157600080fd5b506013546103bf906001600160a01b031681565b3480156106c157600080fd5b5061035b601a5481565b3480156106d757600080fd5b5061044f6106e6366004612dac565b611206565b3480156106f757600080fd5b5061044f610706366004612e47565b611470565b34801561071757600080fd5b5061035b610726366004612dac565b6001600160a01b031660009081526020819052604090205490565b34801561074d57600080fd5b5061044f611540565b34801561076257600080fd5b50600b546103bf906001600160a01b031681565b34801561078257600080fd5b506005546001600160a01b03166103bf565b3480156107a057600080fd5b5061035b60085481565b3480156107b657600080fd5b5061044f6107c5366004612d73565b6115b4565b3480156107d657600080fd5b506103ec611676565b3480156107eb57600080fd5b5061044f6107fa366004612d73565b611685565b34801561080b57600080fd5b5061038f61081a366004612d39565b61174f565b34801561082b57600080fd5b5061035b600a5481565b34801561084157600080fd5b5061038f610850366004612dac565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561087a57600080fd5b5061038f610889366004612d39565b6117e8565b34801561089a57600080fd5b5061035b60165481565b3480156108b057600080fd5b5061044f6108bf366004612e11565b6117f5565b3480156108d057600080fd5b5061038f6108df366004612dac565b60126020526000908152604090205460ff1681565b34801561090057600080fd5b5061044f61090f366004612e47565b6118af565b34801561092057600080fd5b5061044f61092f366004612dac565b611a12565b34801561094057600080fd5b5061044f61094f366004612dac565b611b5f565b34801561096057600080fd5b5061035b61096f366004612e69565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109a657600080fd5b5061035b60105481565b3480156109bc57600080fd5b5061044f6109cb366004612dac565b611c09565b3480156109dc57600080fd5b5061044f6109eb366004612dac565b611d0c565b3480156109fc57600080fd5b5061044f610a0b366004612e97565b611df7565b348015610a1c57600080fd5b5061044f610a2b366004612dac565b611eda565b348015610a3c57600080fd5b5061044f61207e565b606060038054610a5490612ec3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8090612ec3565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b5050505050905090565b6000610ae4338484612168565b5060015b92915050565b6005546001600160a01b03163314610b215760405162461bcd60e51b8152600401610b1890612efd565b60405180910390fd5b6001600160a01b03821660009081526017602052604090205481151560ff909116151503610b615760405162461bcd60e51b8152600401610b1890612f32565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610c5c5782811015610c4f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b18565b610c5c8533858403612168565b610c6785858561228c565b506001949350505050565b6005546001600160a01b03163314610c9c5760405162461bcd60e51b8152600401610b1890612efd565b6064610caa6012600a613070565b600254610cb7919061307f565b610cc1919061307f565b811015610d265760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b6064820152608401610b18565b610d326012600a613070565b610d3c90826130a1565b60168190556040519081527ffbede00c52e68e7972265f0deb49773af2ec3e07ebaf22d74be3c4f0c6d56867906020015b60405180910390a150565b6005546001600160a01b03163314610da25760405162461bcd60e51b8152600401610b1890612efd565b60155460ff16151581151503610e105760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b6064820152608401610b18565b6015805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610d6d565b6005546001600160a01b03163314610e815760405162461bcd60e51b8152600401610b1890612efd565b600b546001600160a01b0390811690821603610eee5760405162461bcd60e51b815260206004820152602660248201527f5374616b696e672077616c6c657420697320616c72656164792074686174206160448201526564647265737360d01b6064820152608401610b18565b6001600160a01b0381163b15610f525760405162461bcd60e51b815260206004820152602360248201527f5374616b696e672077616c6c65742063616e6e6f74206265206120636f6e74726044820152621858dd60ea1b6064820152608401610b18565b6001600160a01b038116610fbd5760405162461bcd60e51b815260206004820152602c60248201527f6e6577207374616b696e6757616c6c65742063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b6064820152608401610b18565b600c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feff29f22320650eef14587b44577ea92058e98f8ac4973c413f74b979a1949af90602001610d6d565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ae49185906110429086906130c0565b612168565b6005546001600160a01b031633146110715760405162461bcd60e51b8152600401610b1890612efd565b801515600c60149054906101000a900460ff161515036111045760405162461bcd60e51b815260206004820152604260248201527f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560448201527f742066656520697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401610b18565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610b1890612efd565b60185460ff161515811515036111bf5760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c72656164796044820152712073657420746f207468617420737461746560701b6064820152608401610b18565b6018805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf90602001610d6d565b6013546001600160a01b031633146112305760405162461bcd60e51b8152600401610b18906130d8565b600d546001600160a01b039081169082160361129a5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610b18565b600d546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600d80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611355919061310f565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db919061310f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c919061310f565b600e80546001600160a01b0319166001600160a01b03929092169190911790555050565b6005546001600160a01b0316331461149a5760405162461bcd60e51b8152600401610b1890612efd565b601982111580156114ac575060198111155b6114f85760405162461bcd60e51b815260206004820152601a60248201527f46656573206d757374206265206c657373207468616e203235250000000000006044820152606401610b18565b6006829055600781905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a191015b60405180910390a15050565b6005546001600160a01b0316331461156a5760405162461bcd60e51b8152600401610b1890612efd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115de5760405162461bcd60e51b8152600401610b1890612efd565b6001600160a01b03821660009081526014602052604090205481151560ff90911615150361161e5760405162461bcd60e51b8152600401610b1890612f32565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c9101610bb5565b606060048054610a5490612ec3565b6013546001600160a01b031633146116af5760405162461bcd60e51b8152600401610b18906130d8565b600e546001600160a01b03908116908316036117415760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610b18565b61174b8282612978565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117d15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b18565b6117de3385858403612168565b5060019392505050565b6000610ae433848461228c565b6005546001600160a01b0316331461181f5760405162461bcd60e51b8152600401610b1890612efd565b620186a061182c60025490565b611836919061307f565b81116118aa5760405162461bcd60e51b815260206004820152603e60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e30303125206f6620746f74616c20737570706c7900006064820152608401610b18565b601055565b6005546001600160a01b031633146118d95760405162461bcd60e51b8152600401610b1890612efd565b6103e86118e86012600a613070565b6002546118f5919061307f565b6118ff919061307f565b821015801561193357506103e86119186012600a613070565b600254611925919061307f565b61192f919061307f565b8110155b6119a55760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610b18565b6119b16012600a613070565b6119bb90836130a1565b6019556119ca6012600a613070565b6119d490826130a1565b601a8190556019546040517f2a88f79986e057b8152c19cea35cd214cf53364efbf95d5b22b37797c05be55f92611534928252602082015260400190565b6005546001600160a01b03163314611a3c5760405162461bcd60e51b8152600401610b1890612efd565b600b546001600160a01b0390811690821603611aab5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b6064820152608401610b18565b6001600160a01b0381163b15611b115760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e6044820152641d1c9858dd60da1b6064820152608401610b18565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610d6d565b6013546001600160a01b03163314611b895760405162461bcd60e51b8152600401610b18906130d8565b6013546001600160a01b0390811690821603611be75760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f72204164647265737320697320616c72656164792073616d656044820152606401610b18565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c335760405162461bcd60e51b8152600401610b1890612efd565b6001600160a01b03811660009081526011602052604090205460ff1615611caf5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610b18565b6001600160a01b038116600081815260116020908152604091829020805460ff1916600190811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a250565b6005546001600160a01b03163314611d365760405162461bcd60e51b8152600401610b1890612efd565b6001600160a01b038116611d9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b18565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e215760405162461bcd60e51b8152600401610b1890612efd565b80611e2c83856130c0565b611e3691906130c0565b606414611e855760405162461bcd60e51b815260206004820152601d60248201527f46656520736861726573206d7573742061646420757020746f203130300000006044820152606401610b18565b60098390556008829055600a81905560408051848152602081018490529081018290527f4677abe8dbff9a9de3cc464f74e0c16415fc3e839597772eb5fe5ece02a6a90a9060600160405180910390a1505050565b6005546001600160a01b03163314611f045760405162461bcd60e51b8152600401610b1890612efd565b306001600160a01b03821603611f5c5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610b18565b6001600160a01b038116611f965760405133904780156108fc02916000818181858888f1935050505015801561174b573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611fdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612003919061312c565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015612053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120779190613145565b5050505b50565b6013546001600160a01b03163314806120a157506005546001600160a01b031633145b6120f95760405162461bcd60e51b815260206004820152602360248201527f43616c6c6572206973206e6f7420746865204f70657261746f72206f72204f776044820152623732b960e91b6064820152608401610b18565b601354600160a01b900460ff16156121535760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2100000000000000006044820152606401610b18565b6013805460ff60a01b1916600160a01b179055565b6001600160a01b0383166121ca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b18565b6001600160a01b03821661222b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b18565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166122b25760405162461bcd60e51b8152600401610b1890613162565b6001600160a01b0382166122d85760405162461bcd60e51b8152600401610b18906131a7565b806000036122f1576122ec83836000612a62565b505050565b6001600160a01b03831660009081526011602052604090205460ff1615801561233357506001600160a01b03821660009081526011602052604090205460ff16155b1561238557601354600160a01b900460ff166123855760405162461bcd60e51b81526020600482015260116024820152702a3930b2329034b9903737ba1037b832b760791b6044820152606401610b18565b60185460ff1615612436576001600160a01b03831660009081526017602052604090205460ff161580156123d257506001600160a01b03821660009081526017602052604090205460ff16155b1561243657600e546001600160a01b03908116908416036124145760195481111561240f5760405162461bcd60e51b8152600401610b18906131ea565b612436565b601a548111156124365760405162461bcd60e51b8152600401610b18906131ea565b30600090815260208190526040902054601054811080159081906124645750600f54600160a01b900460ff16155b801561248957506001600160a01b03851660009081526012602052604090205460ff16155b1561276257600f805460ff60a01b1916600160a01b179055600a54600090156124e1576064600a54846124bc91906130a1565b6124c6919061307f565b600c549091506124e19030906001600160a01b031683612a62565b6124eb8184613247565b925060006008546009546124ff91906130c0565b90506000841180156125115750600081115b156127525760408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061254f5761254f61325e565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc919061310f565b816001815181106125df576125df61325e565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b815291169063791ac94790612625908990600090869030904290600401613274565b600060405180830381600087803b15801561263f57600080fd5b505af1158015612653573d6000803e3d6000fd5b50505050600082476126659190613247565b600954909150156126d9576000846009548361268191906130a1565b61268b919061307f565b600b549091506126a4906001600160a01b031682612bb6565b6040518181527fddce3d5e4f18a9c2902704a38b56baadd81a9af59b8ded8a3220b6a6c1696b6b9060200160405180910390a1505b6008541561274e57600084600854836126f291906130a1565b6126fc919061307f565b90506127196127136005546001600160a01b031690565b82612bb6565b6040518181527f8d940dd18b989b63a5beb7900169ad2fc4ba897598e10aca5cebb100e1eb18469060200160405180910390a1505b5050505b5050600f805460ff60a01b191690555b600f546001600160a01b03861660009081526011602052604090205460ff600160a01b9092048216159116806127b057506001600160a01b03851660009081526011602052604090205460ff165b156127b9575060005b600c54600160a01b900460ff1680156127e05750600e546001600160a01b03878116911614155b80156127fa5750600e546001600160a01b03868116911614155b15612803575060005b801561286457600e546000906001600160a01b039081169088160361282b5750600654612830565b506007545b6000606461283e83886130a1565b612848919061307f565b90506128548187613247565b9550612861883083612a62565b50505b60155460ff1615612965576001600160a01b03861660009081526014602052604090205460ff161580156128b157506001600160a01b03851660009081526014602052604090205460ff16155b80156128cb5750600e546001600160a01b03868116911614155b15612965576001600160a01b0385166000908152602081905260409020546016546128f686836130c0565b11156129635760405162461bcd60e51b815260206004820152603660248201527f4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565604482015275191cc81d1a19481b585e15d85b1b195d105b5bdd5b9d60521b6064820152608401610b18565b505b612970868686612a62565b505050505050565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503612a0e5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610b18565b6001600160a01b038216600081815260126020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316612a885760405162461bcd60e51b8152600401610b1890613162565b6001600160a01b038216612aae5760405162461bcd60e51b8152600401610b18906131a7565b6001600160a01b03831660009081526020819052604090205481811015612b265760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b18565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b5d9084906130c0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ba991815260200190565b60405180910390a3612077565b80471015612c065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b18565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612c53576040519150601f19603f3d011682016040523d82523d6000602084013e612c58565b606091505b50509050806122ec5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b18565b600060208083528351808285015260005b81811015612cfc57858101830151858201604001528201612ce0565b81811115612d0e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461207b57600080fd5b60008060408385031215612d4c57600080fd5b8235612d5781612d24565b946020939093013593505050565b801515811461207b57600080fd5b60008060408385031215612d8657600080fd5b8235612d9181612d24565b91506020830135612da181612d65565b809150509250929050565b600060208284031215612dbe57600080fd5b8135612dc981612d24565b9392505050565b600080600060608486031215612de557600080fd5b8335612df081612d24565b92506020840135612e0081612d24565b929592945050506040919091013590565b600060208284031215612e2357600080fd5b5035919050565b600060208284031215612e3c57600080fd5b8135612dc981612d65565b60008060408385031215612e5a57600080fd5b50508035926020909101359150565b60008060408385031215612e7c57600080fd5b8235612e8781612d24565b91506020830135612da181612d24565b600080600060608486031215612eac57600080fd5b505081359360208301359350604090920135919050565b600181811c90821680612ed757607f821691505b602082108103612ef757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f4163636f756e7420697320616c72656164792073657420746f207468617420736040820152637461746560e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612fc7578160001904821115612fad57612fad612f76565b80851615612fba57918102915b93841c9390800290612f91565b509250929050565b600082612fde57506001610ae8565b81612feb57506000610ae8565b8160018114613001576002811461300b57613027565b6001915050610ae8565b60ff84111561301c5761301c612f76565b50506001821b610ae8565b5060208310610133831016604e8410600b841016171561304a575081810a610ae8565b6130548383612f8c565b806000190482111561306857613068612f76565b029392505050565b6000612dc960ff841683612fcf565b60008261309c57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130bb576130bb612f76565b500290565b600082198211156130d3576130d3612f76565b500190565b6020808252601a908201527f43616c6c6572206973206e6f7420746865204f70657261746f72000000000000604082015260600190565b60006020828403121561312157600080fd5b8151612dc981612d24565b60006020828403121561313e57600080fd5b5051919050565b60006020828403121561315757600080fd5b8151612dc981612d65565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73666572416d6f756e740000000000000000606082015260800190565b60008282101561325957613259612f76565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132c45784516001600160a01b03168352938301939183019160010161329f565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202cdd5710d0651e673f89586e2ac95c9eef0b900dc6ec985e5f1cb57e0c1aa08b64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000de89e3981adaaf8c86bf9d04cdf6083a26269b56
-----Decoded View---------------
Arg [0] : newOwner (address): 0xde89e3981aDaaf8C86bF9D04CDF6083A26269B56
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000de89e3981adaaf8c86bf9d04cdf6083a26269b56
Deployed Bytecode Sourcemap
14909:17288:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30539:39;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;30539:39:0;;;;;;;;19656:28;;;;;;;;;;-1:-1:-1;19656:28:0;;;;-1:-1:-1;;;19656:28:0;;;;;;;;;361:14:1;;354:22;336:41;;324:2;309:18;19656:28:0;196:187:1;15234:71:0;;;;;;;;;;-1:-1:-1;15234:71:0;;;;-1:-1:-1;;;;;15234:71:0;;;;;;-1:-1:-1;;;;;552:32:1;;;534:51;;522:2;507:18;15234:71:0;388:203:1;2777:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15066:36::-;;;;;;;;;;;;;;;;3691:169;;;;;;;;;;-1:-1:-1;3691:169:0;;;;;:::i;:::-;;:::i;31681:364::-;;;;;;;;;;-1:-1:-1;31681:364:0;;;;;:::i;:::-;;:::i;:::-;;15314:44;;;;;;;;;;-1:-1:-1;15314:44:0;;;;-1:-1:-1;;;15314:44:0;;;;;;15367:41;;;;;;;;;;-1:-1:-1;15367:41:0;;;;-1:-1:-1;;;;;15367:41:0;;;3098:108;;;;;;;;;;-1:-1:-1;3186:12:0;;3098:108;;32053:141;;;;;;;;;;-1:-1:-1;32053:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;32152:34:0;32128:4;32152:34;;;:25;:34;;;;;;;;;32053:141;29066:43;;;;;;;;;;-1:-1:-1;29066:43:0;;;;;;;;3868:573;;;;;;;;;;-1:-1:-1;3868:573:0;;;;;:::i;:::-;;:::i;29480:374::-;;;;;;;;;;-1:-1:-1;29480:374:0;;;;;:::i;:::-;;:::i;29155:317::-;;;;;;;;;;-1:-1:-1;29155:317:0;;;;;:::i;:::-;;:::i;14987:27::-;;;;;;;;;;;;;;;;30483:49;;;;;;;;;;-1:-1:-1;30483:49:0;;;;;;;;2997:93;;;;;;;;;;-1:-1:-1;2997:93:0;;3080:2;3685:36:1;;3673:2;3658:18;2997:93:0;3543:184:1;24180:449:0;;;;;;;;;;-1:-1:-1;24180:449:0;;;;;:::i;:::-;;:::i;4449:215::-;;;;;;;;;;-1:-1:-1;4449:215:0;;;;;:::i;:::-;;:::i;14953:27::-;;;;;;;;;;;;;;;;15415:29;;;;;;;;;;-1:-1:-1;15415:29:0;;;;-1:-1:-1;;;;;15415:29:0;;;22681:125;;;;;;;;;;-1:-1:-1;22681:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;22770:28:0;22746:4;22770:28;;;:19;:28;;;;;;;;;22681:125;23519:272;;;;;;;;;;-1:-1:-1;23519:272:0;;;;;:::i;:::-;;:::i;30634:348::-;;;;;;;;;;-1:-1:-1;30634:348:0;;;;;:::i;:::-;;:::i;19626:23::-;;;;;;;;;;-1:-1:-1;19626:23:0;;;;-1:-1:-1;;;;;19626:23:0;;;30585:40;;;;;;;;;;;;;;;;21289:497;;;;;;;;;;-1:-1:-1;21289:497:0;;;;;:::i;:::-;;:::i;22814:263::-;;;;;;;;;;-1:-1:-1;22814:263:0;;;;;:::i;:::-;;:::i;3214:127::-;;;;;;;;;;-1:-1:-1;3214:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3315:18:0;3288:7;3315:18;;;;;;;;;;;;3214:127;1962:148;;;;;;;;;;;;;:::i;15154:73::-;;;;;;;;;;-1:-1:-1;15154:73:0;;;;-1:-1:-1;;;;;15154:73:0;;;1748:79;;;;;;;;;;-1:-1:-1;1813:6:0;;-1:-1:-1;;;;;1813:6:0;1748:79;;15023:36;;;;;;;;;;;;;;;;29862:357;;;;;;;;;;-1:-1:-1;29862:357:0;;;;;:::i;:::-;;:::i;2885:104::-;;;;;;;;;;;;;:::i;21794:259::-;;;;;;;;;;-1:-1:-1;21794:259:0;;;;;:::i;:::-;;:::i;4672:413::-;;;;;;;;;;-1:-1:-1;4672:413:0;;;;;:::i;:::-;;:::i;15109:36::-;;;;;;;;;;;;;;;;30227:145;;;;;;;;;;-1:-1:-1;30227:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;30326:38:0;30302:4;30326:38;;;:29;:38;;;;;;;;;30227:145;3349:175;;;;;;;;;;-1:-1:-1;3349:175:0;;;;;:::i;:::-;;:::i;29116:30::-;;;;;;;;;;;;;;;;28719:237;;;;;;;;;;-1:-1:-1;28719:237:0;;;;;:::i;:::-;;:::i;15664:58::-;;;;;;;;;;-1:-1:-1;15664:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30990:683;;;;;;;;;;-1:-1:-1;30990:683:0;;;;;:::i;:::-;;:::i;23799:373::-;;;;;;;;;;-1:-1:-1;23799:373:0;;;;;:::i;:::-;;:::i;19987:188::-;;;;;;;;;;-1:-1:-1;19987:188:0;;;;;:::i;:::-;;:::i;3532:151::-;;;;;;;;;;-1:-1:-1;3532:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3648:18:0;;;3621:7;3648:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3532:151;15562:33;;;;;;;;;;;;;;;;22415:258;;;;;;;;;;-1:-1:-1;22415:258:0;;;;;:::i;:::-;;:::i;2118:244::-;;;;;;;;;;-1:-1:-1;2118:244:0;;;;;:::i;:::-;;:::i;23085:426::-;;;;;;;;;;-1:-1:-1;23085:426:0;;;;;:::i;:::-;;:::i;20394:441::-;;;;;;;;;;-1:-1:-1;20394:441:0;;;;;:::i;:::-;;:::i;20183:159::-;;;;;;;;;;;;;:::i;2777:100::-;2831:13;2864:5;2857:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2777:100;:::o;3691:169::-;3774:4;3791:39;1151:10;3814:7;3823:6;3791:8;:39::i;:::-;-1:-1:-1;3848:4:0;3691:169;;;;;:::o;31681:364::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;31807:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;:45;::::1;;:34;::::0;;::::1;:45;;::::0;31785:132:::1;;;;-1:-1:-1::0;;;31785:132:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31928:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;;;;:44;;-1:-1:-1;;31928:44:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31988:49;;336:41:1;;;31988:49:0::1;::::0;309:18:1;31988:49:0::1;;;;;;;;31681:364:::0;;:::o;3868:573::-;-1:-1:-1;;;;;4052:19:0;;4008:4;4052:19;;;:11;:19;;;;;;;;1151:10;4052:33;;;;;;;;-1:-1:-1;;4100:37:0;;4096:265;;4182:6;4162:16;:26;;4154:79;;;;-1:-1:-1;;;4154:79:0;;6052:2:1;4154:79:0;;;6034:21:1;6091:2;6071:18;;;6064:30;6130:34;6110:18;;;6103:62;-1:-1:-1;;;6181:18:1;;;6174:38;6229:19;;4154:79:0;5850:404:1;4154:79:0;4277:57;4286:6;1151:10;4327:6;4308:16;:25;4277:8;:57::i;:::-;4373:36;4383:6;4391:9;4402:6;4373:9;:36::i;:::-;-1:-1:-1;4429:4:0;;3868:573;-1:-1:-1;;;;3868:573:0:o;29480:374::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;29645:3:::1;29624:16;3080:2:::0;29624::::1;:16;:::i;:::-;3186:12:::0;;29607:34:::1;;;;:::i;:::-;29606:42;;;;:::i;:::-;29586:16;:62;;29564:158;;;::::0;-1:-1:-1;;;29564:158:0;;8198:2:1;29564:158:0::1;::::0;::::1;8180:21:1::0;8237:2;8217:18;;;8210:30;8276:34;8256:18;;;8249:62;-1:-1:-1;;;8327:18:1;;;8320:43;8380:19;;29564:158:0::1;7996:409:1::0;29564:158:0::1;29771:16;3080:2:::0;29771::::1;:16;:::i;:::-;29751:37;::::0;:16;:37:::1;:::i;:::-;29733:15;:55:::0;;;29804:42:::1;::::0;160:25:1;;;29804:42:0::1;::::0;148:2:1;133:18;29804:42:0::1;;;;;;;;29480:374:::0;:::o;29155:317::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;29263:21:::1;::::0;::::1;;29253:31;;::::0;::::1;;::::0;29231:127:::1;;;::::0;-1:-1:-1;;;29231:127:0;;8785:2:1;29231:127:0::1;::::0;::::1;8767:21:1::0;8824:2;8804:18;;;8797:30;8863:34;8843:18;;;8836:62;-1:-1:-1;;;8914:18:1;;;8907:43;8967:19;;29231:127:0::1;8583:409:1::0;29231:127:0::1;29369:21;:30:::0;;-1:-1:-1;;29369:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;29415:49:::1;::::0;29369:30:::1;29442:21:::0;;;361:14:1;354:22;336:41;;29415:49:0::1;::::0;324:2:1;309:18;29415:49:0::1;196:187:1::0;24180:449:0;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;24289:15:::1;::::0;-1:-1:-1;;;;;24289:15:0;;::::1;24271:33:::0;;::::1;::::0;24263:84:::1;;;::::0;-1:-1:-1;;;24263:84:0;;9199:2:1;24263:84:0::1;::::0;::::1;9181:21:1::0;9238:2;9218:18;;;9211:30;9277:34;9257:18;;;9250:62;-1:-1:-1;;;9328:18:1;;;9321:36;9374:19;;24263:84:0::1;8997:402:1::0;24263:84:0::1;-1:-1:-1::0;;;;;20927:19:0;;;:23;24358:75:::1;;;::::0;-1:-1:-1;;;24358:75:0;;9606:2:1;24358:75:0::1;::::0;::::1;9588:21:1::0;9645:2;9625:18;;;9618:30;9684:34;9664:18;;;9657:62;-1:-1:-1;;;9735:18:1;;;9728:33;9778:19;;24358:75:0::1;9404:399:1::0;24358:75:0::1;-1:-1:-1::0;;;;;24452:28:0;::::1;24444:85;;;::::0;-1:-1:-1;;;24444:85:0;;10010:2:1;24444:85:0::1;::::0;::::1;9992:21:1::0;10049:2;10029:18;;;10022:30;10088:34;10068:18;;;10061:62;-1:-1:-1;;;10139:18:1;;;10132:42;10191:19;;24444:85:0::1;9808:408:1::0;24444:85:0::1;24540:13;:30:::0;;-1:-1:-1;;;;;;24540:30:0::1;-1:-1:-1::0;;;;;24540:30:0;::::1;::::0;;::::1;::::0;;;24586:35:::1;::::0;534:51:1;;;24586:35:0::1;::::0;522:2:1;507:18;24586:35:0::1;388:203:1::0;4449:215:0;1151:10;4537:4;4586:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4586:34:0;;;;;;;;;;4537:4;;4554:80;;4577:7;;4586:47;;4623:10;;4586:47;:::i;:::-;4554:8;:80::i;23519:272::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;23654:6:::1;23618:42;;:32;;;;;;;;;;;:42;;::::0;23610:121:::1;;;::::0;-1:-1:-1;;;23610:121:0;;10556:2:1;23610:121:0::1;::::0;::::1;10538:21:1::0;10595:2;10575:18;;;10568:30;10634:34;10614:18;;;10607:62;10705:34;10685:18;;;10678:62;-1:-1:-1;;;10756:19:1;;;10749:33;10799:19;;23610:121:0::1;10354:470:1::0;23610:121:0::1;23742:32;:41:::0;;;::::1;;-1:-1:-1::0;;;23742:41:0::1;-1:-1:-1::0;;;;23742:41:0;;::::1;::::0;;;::::1;::::0;;23519:272::o;30634:348::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;30748:26:::1;::::0;::::1;;30738:36;;::::0;::::1;;::::0;30716:137:::1;;;::::0;-1:-1:-1;;;30716:137:0;;11031:2:1;30716:137:0::1;::::0;::::1;11013:21:1::0;11070:2;11050:18;;;11043:30;11109:34;11089:18;;;11082:62;-1:-1:-1;;;11160:18:1;;;11153:48;11218:19;;30716:137:0::1;10829:414:1::0;30716:137:0::1;30864:26;:35:::0;;-1:-1:-1;;30864:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30915:59:::1;::::0;30864:35:::1;30947:26:::0;;;361:14:1;354:22;336:41;;30915:59:0::1;::::0;324:2:1;309:18;30915:59:0::1;196:187:1::0;21289:497:0;19905:8;;-1:-1:-1;;;;;19905:8:0;1151:10;19905:24;19897:62;;;;-1:-1:-1;;;19897:62:0;;;;;;;:::i;:::-;21403:15:::1;::::0;-1:-1:-1;;;;;21403:15:0;;::::1;21381:38:::0;;::::1;::::0;21373:86:::1;;;::::0;-1:-1:-1;;;21373:86:0;;11805:2:1;21373:86:0::1;::::0;::::1;11787:21:1::0;11844:2;11824:18;;;11817:30;11883:34;11863:18;;;11856:62;-1:-1:-1;;;11934:18:1;;;11927:33;11977:19;;21373:86:0::1;11603:399:1::0;21373:86:0::1;21517:15;::::0;21475:59:::1;::::0;-1:-1:-1;;;;;21517:15:0;;::::1;::::0;21475:59;::::1;::::0;::::1;::::0;21517:15:::1;::::0;21475:59:::1;21545:15;:48:::0;;-1:-1:-1;;;;;;21545:48:0::1;-1:-1:-1::0;;;;;21545:48:0;::::1;::::0;;::::1;::::0;;;21647:25:::1;::::0;;-1:-1:-1;;;21647:25:0;;;;-1:-1:-1;;21545:48:0;21647:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;21545:48;21647:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21629:69:0::1;;21707:4;21714:15;;;;;;;;;-1:-1:-1::0;;;;;21714:15:0::1;-1:-1:-1::0;;;;;21714:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21629:108;::::0;-1:-1:-1;;;;;;21629:108:0::1;::::0;;;;;;-1:-1:-1;;;;;12493:15:1;;;21629:108:0::1;::::0;::::1;12475:34:1::0;12545:15;;12525:18;;;12518:43;12410:18;;21629:108:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21748:13;:30:::0;;-1:-1:-1;;;;;;21748:30:0::1;-1:-1:-1::0;;;;;21748:30:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;21289:497:0:o;22814:263::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;22918:2:::1;22907:7;:13;;:31;;;;;22936:2;22924:8;:14;;22907:31;22899:70;;;::::0;-1:-1:-1;;;22899:70:0;;12774:2:1;22899:70:0::1;::::0;::::1;12756:21:1::0;12813:2;12793:18;;;12786:30;12852:28;12832:18;;;12825:56;12898:18;;22899:70:0::1;12572:350:1::0;22899:70:0::1;22980:6;:16:::0;;;23007:7:::1;:18:::0;;;23041:28:::1;::::0;;13101:25:1;;;13157:2;13142:18;;13135:34;;;23041:28:0::1;::::0;13074:18:1;23041:28:0::1;;;;;;;;22814:263:::0;;:::o;1962:148::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;2053:6:::1;::::0;2032:40:::1;::::0;2069:1:::1;::::0;-1:-1:-1;;;;;2053:6:0::1;::::0;2032:40:::1;::::0;2069:1;;2032:40:::1;2083:6;:19:::0;;-1:-1:-1;;;;;;2083:19:0::1;::::0;;1962:148::o;29862:357::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29978:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:49;::::1;;:38;::::0;;::::1;:49;;::::0;29956:136:::1;;;;-1:-1:-1::0;;;29956:136:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30103:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;30103:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30167:44;;336:41:1;;;30167:44:0::1;::::0;309:18:1;30167:44:0::1;196:187:1::0;2885:104:0;2941:13;2974:7;2967:14;;;;;:::i;21794:259::-;19905:8;;-1:-1:-1;;;;;19905:8:0;1151:10;19905:24;19897:62;;;;-1:-1:-1;;;19897:62:0;;;;;;;:::i;:::-;21904:13:::1;::::0;-1:-1:-1;;;;;21904:13:0;;::::1;21896:21:::0;;::::1;::::0;21888:103:::1;;;::::0;-1:-1:-1;;;21888:103:0;;13382:2:1;21888:103:0::1;::::0;::::1;13364:21:1::0;13421:2;13401:18;;;13394:30;13460:34;13440:18;;;13433:62;13531:34;13511:18;;;13504:62;-1:-1:-1;;;13582:19:1;;;13575:36;13628:19;;21888:103:0::1;13180:473:1::0;21888:103:0::1;22004:41;22033:4;22039:5;22004:28;:41::i;:::-;21794:259:::0;;:::o;4672:413::-;1151:10;4765:4;4809:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4809:34:0;;;;;;;;;;4862:35;;;;4854:85;;;;-1:-1:-1;;;4854:85:0;;13860:2:1;4854:85:0;;;13842:21:1;13899:2;13879:18;;;13872:30;13938:34;13918:18;;;13911:62;-1:-1:-1;;;13989:18:1;;;13982:35;14034:19;;4854:85:0;13658:401:1;4854:85:0;4975:67;1151:10;4998:7;5026:15;5007:16;:34;4975:8;:67::i;:::-;-1:-1:-1;5073:4:0;;4672:413;-1:-1:-1;;;4672:413:0:o;3349:175::-;3435:4;3452:42;1151:10;3476:9;3487:6;3452:9;:42::i;28719:237::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;28834:6:::1;28818:13;3186:12:::0;;;3098:108;28818:13:::1;:22;;;;:::i;:::-;28806:9;:34;28798:109;;;::::0;-1:-1:-1;;;28798:109:0;;14266:2:1;28798:109:0::1;::::0;::::1;14248:21:1::0;14305:2;14285:18;;;14278:30;14344:34;14324:18;;;14317:62;14415:32;14395:18;;;14388:60;14465:19;;28798:109:0::1;14064:426:1::0;28798:109:0::1;28918:18;:30:::0;28719:237::o;30990:683::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;31213:4:::1;31192:16;3080:2:::0;31192::::1;:16;:::i;:::-;3186:12:::0;;31175:34:::1;;;;:::i;:::-;31174:43;;;;:::i;:::-;31145:24;:72;;:161;;;;-1:-1:-1::0;31302:4:0::1;31282:16;3080:2:::0;31282::::1;:16;:::i;:::-;3186:12:::0;;31265:34:::1;;;;:::i;:::-;31264:42;;;;:::i;:::-;31235:25;:71;;31145:161;31123:275;;;::::0;-1:-1:-1;;;31123:275:0;;14697:2:1;31123:275:0::1;::::0;::::1;14679:21:1::0;14736:2;14716:18;;;14709:30;14775:34;14755:18;;;14748:62;14846:33;14826:18;;;14819:61;14897:19;;31123:275:0::1;14495:427:1::0;31123:275:0::1;31466:16;3080:2:::0;31466::::1;:16;:::i;:::-;31437:46;::::0;:24;:46:::1;:::i;:::-;31410:23;:73:::0;31550:16:::1;3080:2:::0;31550::::1;:16;:::i;:::-;31521:46;::::0;:25;:46:::1;:::i;:::-;31494:24;:73:::0;;;31615:23:::1;::::0;31583:82:::1;::::0;::::1;::::0;::::1;::::0;13101:25:1;;13157:2;13142:18;;13135:34;13089:2;13074:18;;12927:248;23799:373:0;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;23914:15:::1;::::0;-1:-1:-1;;;;;23914:15:0;;::::1;23894:35:::0;;::::1;::::0;23886:88:::1;;;::::0;-1:-1:-1;;;23886:88:0;;15129:2:1;23886:88:0::1;::::0;::::1;15111:21:1::0;15168:2;15148:18;;;15141:30;15207:34;15187:18;;;15180:62;-1:-1:-1;;;15258:18:1;;;15251:38;15306:19;;23886:88:0::1;14927:404:1::0;23886:88:0::1;-1:-1:-1::0;;;;;20927:19:0;;;:23;23985:79:::1;;;::::0;-1:-1:-1;;;23985:79:0;;15538:2:1;23985:79:0::1;::::0;::::1;15520:21:1::0;15577:2;15557:18;;;15550:30;15616:34;15596:18;;;15589:62;-1:-1:-1;;;15667:18:1;;;15660:35;15712:19;;23985:79:0::1;15336:401:1::0;23985:79:0::1;24075:15;:34:::0;;-1:-1:-1;;;;;;24075:34:0::1;-1:-1:-1::0;;;;;24075:34:0;::::1;::::0;;::::1;::::0;;;24125:39:::1;::::0;534:51:1;;;24125:39:0::1;::::0;522:2:1;507:18;24125:39:0::1;388:203:1::0;19987:188:0;19905:8;;-1:-1:-1;;;;;19905:8:0;1151:10;19905:24;19897:62;;;;-1:-1:-1;;;19897:62:0;;;;;;;:::i;:::-;20091:8:::1;::::0;-1:-1:-1;;;;;20091:8:0;;::::1;20077:22:::0;;::::1;::::0;20069:66:::1;;;::::0;-1:-1:-1;;;20069:66:0;;15944:2:1;20069:66:0::1;::::0;::::1;15926:21:1::0;;;15963:18;;;15956:30;16022:34;16002:18;;;15995:62;16074:18;;20069:66:0::1;15742:356:1::0;20069:66:0::1;20146:8;:21:::0;;-1:-1:-1;;;;;;20146:21:0::1;-1:-1:-1::0;;;;;20146:21:0;;;::::1;::::0;;;::::1;::::0;;19987:188::o;22415:258::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22496:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;22495:29;22487:84;;;::::0;-1:-1:-1;;;22487:84:0;;16305:2:1;22487:84:0::1;::::0;::::1;16287:21:1::0;16344:2;16324:18;;;16317:30;16383:34;16363:18;;;16356:62;-1:-1:-1;;;16434:18:1;;;16427:40;16484:19;;22487:84:0::1;16103:406:1::0;22487:84:0::1;-1:-1:-1::0;;;;;22582:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;22582:35:0::1;22613:4;22582:35:::0;;::::1;::::0;;;22635:30;;336:41:1;;;22635:30:0::1;::::0;309:18:1;22635:30:0::1;;;;;;;22415:258:::0;:::o;2118:244::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2207:22:0;::::1;2199:73;;;::::0;-1:-1:-1;;;2199:73:0;;16716:2:1;2199:73:0::1;::::0;::::1;16698:21:1::0;16755:2;16735:18;;;16728:30;16794:34;16774:18;;;16767:62;-1:-1:-1;;;16845:18:1;;;16838:36;16891:19;;2199:73:0::1;16514:402:1::0;2199:73:0::1;2309:6;::::0;2288:38:::1;::::0;-1:-1:-1;;;;;2288:38:0;;::::1;::::0;2309:6:::1;::::0;2288:38:::1;::::0;2309:6:::1;::::0;2288:38:::1;2337:6;:17:::0;;-1:-1:-1;;;;;;2337:17:0::1;-1:-1:-1::0;;;;;2337:17:0;;;::::1;::::0;;;::::1;::::0;;2118:244::o;23085:426::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;23255:13;23220:32:::1;23241:11:::0;23220:18;:32:::1;:::i;:::-;:48;;;;:::i;:::-;23272:3;23220:55;23212:97;;;::::0;-1:-1:-1;;;23212:97:0;;17123:2:1;23212:97:0::1;::::0;::::1;17105:21:1::0;17162:2;17142:18;;;17135:30;17201:31;17181:18;;;17174:59;17250:18;;23212:97:0::1;16921:353:1::0;23212:97:0::1;23320:14;:35:::0;;;23366:10:::1;:24:::0;;;23401:12:::1;:28:::0;;;23445:58:::1;::::0;;17481:25:1;;;17537:2;17522:18;;17515:34;;;17565:18;;;17558:34;;;23445:58:0::1;::::0;17469:2:1;17454:18;23445:58:0::1;;;;;;;23085:426:::0;;;:::o;20394:441::-;1875:6;;-1:-1:-1;;;;;1875:6:0;1151:10;1875:22;1867:67;;;;-1:-1:-1;;;1867:67:0;;;;;;;:::i;:::-;20490:4:::1;-1:-1:-1::0;;;;;20473:22:0;::::1;::::0;20465:67:::1;;;::::0;-1:-1:-1;;;20465:67:0;;17805:2:1;20465:67:0::1;::::0;::::1;17787:21:1::0;;;17824:18;;;17817:30;17883:34;17863:18;;;17856:62;17935:18;;20465:67:0::1;17603:356:1::0;20465:67:0::1;-1:-1:-1::0;;;;;20547:21:0;::::1;20543:126;;20585:51;::::0;20593:10:::1;::::0;20614:21:::1;20585:51:::0;::::1;;;::::0;::::1;::::0;;;20614:21;20593:10;20585:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;20543:126;20741:35;::::0;-1:-1:-1;;;20741:35:0;;20770:4:::1;20741:35;::::0;::::1;534:51:1::0;20706:5:0;;20679:17:::1;::::0;-1:-1:-1;;;;;20741:20:0;::::1;::::0;::::1;::::0;507:18:1;;20741:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20787:40;::::0;-1:-1:-1;;;20787:40:0;;20807:10:::1;20787:40;::::0;::::1;18327:51:1::0;18394:18;;;18387:34;;;20723:53:0;;-1:-1:-1;;;;;;20787:19:0;::::1;::::0;::::1;::::0;18300:18:1;;20787:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20454:381;;1945:1;20394:441:::0;:::o;20183:159::-;19743:8;;-1:-1:-1;;;;;19743:8:0;1151:10;19743:24;;:51;;-1:-1:-1;1813:6:0;;-1:-1:-1;;;;;1813:6:0;1151:10;19771:23;19743:51;19735:100;;;;-1:-1:-1;;;19735:100:0;;18884:2:1;19735:100:0;;;18866:21:1;18923:2;18903:18;;;18896:30;18962:34;18942:18;;;18935:62;-1:-1:-1;;;19013:18:1;;;19006:33;19056:19;;19735:100:0;18682:399:1;19735:100:0;20250:16:::1;::::0;-1:-1:-1;;;20250:16:0;::::1;;;:23;20242:59;;;::::0;-1:-1:-1;;;20242:59:0;;19288:2:1;20242:59:0::1;::::0;::::1;19270:21:1::0;19327:2;19307:18;;;19300:30;19366:26;19346:18;;;19339:54;19410:18;;20242:59:0::1;19086:348:1::0;20242:59:0::1;20312:16;:23:::0;;-1:-1:-1;;;;20312:23:0::1;-1:-1:-1::0;;;20312:23:0::1;::::0;;20183:159::o;6433:380::-;-1:-1:-1;;;;;6569:19:0;;6561:68;;;;-1:-1:-1;;;6561:68:0;;19641:2:1;6561:68:0;;;19623:21:1;19680:2;19660:18;;;19653:30;19719:34;19699:18;;;19692:62;-1:-1:-1;;;19770:18:1;;;19763:34;19814:19;;6561:68:0;19439:400:1;6561:68:0;-1:-1:-1;;;;;6648:21:0;;6640:68;;;;-1:-1:-1;;;6640:68:0;;20046:2:1;6640:68:0;;;20028:21:1;20085:2;20065:18;;;20058:30;20124:34;20104:18;;;20097:62;-1:-1:-1;;;20175:18:1;;;20168:32;20217:19;;6640:68:0;19844:398:1;6640:68:0;-1:-1:-1;;;;;6721:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6773:32;;160:25:1;;;6773:32:0;;133:18:1;6773:32:0;;;;;;;6433:380;;;:::o;24637:4074::-;-1:-1:-1;;;;;24770:18:0;;24762:68;;;;-1:-1:-1;;;24762:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24849:16:0;;24841:64;;;;-1:-1:-1;;;24841:64:0;;;;;;;:::i;:::-;24928:6;24938:1;24928:11;24925:92;;24956:28;24972:4;24978:2;24982:1;24956:15;:28::i;:::-;24637:4074;;;:::o;24925:92::-;-1:-1:-1;;;;;25033:25:0;;;;;;:19;:25;;;;;;;;25032:26;:54;;;;-1:-1:-1;;;;;;25063:23:0;;;;;;:19;:23;;;;;;;;25062:24;25032:54;25029:132;;;25111:16;;-1:-1:-1;;;25111:16:0;;;;25103:46;;;;-1:-1:-1;;;25103:46:0;;21259:2:1;25103:46:0;;;21241:21:1;21298:2;21278:18;;;21271:30;-1:-1:-1;;;21317:18:1;;;21310:47;21374:18;;25103:46:0;21057:341:1;25103:46:0;25177:26;;;;25173:533;;;-1:-1:-1;;;;;25224:31:0;;;;;;:25;:31;;;;;;;;:40;;;:99;;-1:-1:-1;;;;;;25285:29:0;;;;;;:25;:29;;;;;;;;:38;25224:99;25220:475;;;25370:13;;-1:-1:-1;;;;;25370:13:0;;;25362:21;;;;25358:322;;25426:23;;25416:6;:33;;25408:102;;;;-1:-1:-1;;;25408:102:0;;;;;;;:::i;:::-;25358:322;;;25575:24;;25565:6;:34;;25557:103;;;;-1:-1:-1;;;25557:103:0;;;;;;;:::i;:::-;25761:4;25712:28;3315:18;;;;;;;;;;;25819;;25795:42;;;;;;;25854:33;;-1:-1:-1;25879:8:0;;-1:-1:-1;;;25879:8:0;;;;25878:9;25854:33;:82;;;;-1:-1:-1;;;;;;25905:31:0;;;;;;:25;:31;;;;;;;;25904:32;25854:82;25850:1722;;;25963:8;:15;;-1:-1:-1;;;;25963:15:0;-1:-1:-1;;;25963:15:0;;;26034:12;;25963:15;;26034:16;26031:193;;26125:3;26110:12;;26087:20;:35;;;;:::i;:::-;:41;;;;:::i;:::-;26179:13;;26071:57;;-1:-1:-1;26148:60:0;;26172:4;;-1:-1:-1;;;;;26179:13:0;26071:57;26148:15;:60::i;:::-;26240:37;26264:13;26240:37;;:::i;:::-;;;26292:16;26328:10;;26311:14;;:27;;;;:::i;:::-;26292:46;;26393:1;26370:20;:24;:40;;;;;26409:1;26398:8;:12;26370:40;26367:1155;;;26522:16;;;26536:1;26522:16;;;;;;;;26456:21;;26431:22;;26522:16;26536:1;26522:16;;;;;;;;;;-1:-1:-1;26522:16:0;26498:40;;26575:4;26557;26562:1;26557:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26557:23:0;;;:7;;;;;;;;;;:23;;;;26609:15;;:22;;;-1:-1:-1;;;26609:22:0;;;;:15;;;;;:20;;:22;;;;;26557:7;;26609:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26599:4;26604:1;26599:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26599:32:0;;;:7;;;;;;;;;:32;26652:15;;:235;;-1:-1:-1;;;26652:235:0;;:15;;;:66;;:235;;26741:20;;26652:15;;26808:4;;26843;;26871:15;;26652:235;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26924:18;26969:14;26945:21;:38;;;;:::i;:::-;27007:14;;26924:59;;-1:-1:-1;27007:18:0;27004:253;;27050:20;27105:8;27087:14;;27074:10;:27;;;;:::i;:::-;27073:40;;;;:::i;:::-;27152:15;;27050:63;;-1:-1:-1;27136:46:0;;-1:-1:-1;;;;;27152:15:0;27050:63;27136:7;:46::i;:::-;27210:27;;160:25:1;;;27210:27:0;;148:2:1;133:18;27210:27:0;;;;;;;27027:230;27004:253;27280:10;;:14;27277:222;;27319:16;27366:8;27352:10;;27339;:23;;;;:::i;:::-;27338:36;;;;:::i;:::-;27319:55;;27397:35;27413:7;1813:6;;-1:-1:-1;;;;;1813:6:0;;1748:79;27413:7;27423:8;27397:7;:35::i;:::-;27460:19;;160:25:1;;;27460:19:0;;148:2:1;133:18;27460:19:0;;;;;;;27296:203;27277:222;26412:1110;;;26367:1155;-1:-1:-1;;27544:8:0;:16;;-1:-1:-1;;;;27544:16:0;;;25850:1722;27600:8;;-1:-1:-1;;;;;27624:25:0;;27584:12;27624:25;;;:19;:25;;;;;;27600:8;-1:-1:-1;;;27600:8:0;;;;;27599:9;;27624:25;;:52;;-1:-1:-1;;;;;;27653:23:0;;;;;;:19;:23;;;;;;;;27624:52;27621:99;;;-1:-1:-1;27703:5:0;27621:99;27735:32;;-1:-1:-1;;;27735:32:0;;;;:57;;;;-1:-1:-1;27779:13:0;;-1:-1:-1;;;;;27771:21:0;;;27779:13;;27771:21;;27735:57;:80;;;;-1:-1:-1;27802:13:0;;-1:-1:-1;;;;;27796:19:0;;;27802:13;;27796:19;;27735:80;27732:127;;;-1:-1:-1;27842:5:0;27732:127;27874:7;27871:368;;;27942:13;;27898:18;;-1:-1:-1;;;;;27942:13:0;;;27934:21;;;;27931:141;;-1:-1:-1;27989:6:0;;27931:141;;;-1:-1:-1;28049:7:0;;27931:141;28083:12;28120:3;28098:19;28107:10;28098:6;:19;:::i;:::-;:25;;;;:::i;:::-;28083:40;-1:-1:-1;28155:13:0;28083:40;28155:6;:13;:::i;:::-;28146:22;;28185:42;28201:4;28215;28222;28185:15;:42::i;:::-;27883:356;;27871:368;28255:21;;;;28251:405;;;-1:-1:-1;;;;;28297:35:0;;;;;;:29;:35;;;;;;;;:44;;;:107;;-1:-1:-1;;;;;;28362:33:0;;;;;;:29;:33;;;;;;;;:42;28297:107;:147;;;;-1:-1:-1;28431:13:0;;-1:-1:-1;;;;;28425:19:0;;;28431:13;;28425:19;;28297:147;28293:352;;;-1:-1:-1;;;;;3315:18:0;;28479:12;3315:18;;;;;;;;;;;28555:15;;28535:16;28545:6;3315:18;28535:16;:::i;:::-;:35;;28527:102;;;;-1:-1:-1;;;28527:102:0;;23409:2:1;28527:102:0;;;23391:21:1;23448:2;23428:18;;;23421:30;23487:34;23467:18;;;23460:62;-1:-1:-1;;;23538:18:1;;;23531:52;23600:19;;28527:102:0;23207:418:1;28527:102:0;28460:185;28293:352;28668:33;28684:4;28690:2;28694:6;28668:15;:33::i;:::-;24751:3960;;;24637:4074;;;:::o;22062:308::-;-1:-1:-1;;;;;22153:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;22145:109;;;;-1:-1:-1;;;22145:109:0;;23832:2:1;22145:109:0;;;23814:21:1;23871:2;23851:18;;;23844:30;23910:34;23890:18;;;23883:62;23981:26;23961:18;;;23954:54;24025:19;;22145:109:0;23630:420:1;22145:109:0;-1:-1:-1;;;;;22265:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22265:39:0;;;;;;;;;;22322:40;;22265:39;;:31;22322:40;;;22062:308;;:::o;5093:733::-;-1:-1:-1;;;;;5233:20:0;;5225:70;;;;-1:-1:-1;;;5225:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5314:23:0;;5306:71;;;;-1:-1:-1;;;5306:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5474:17:0;;5450:21;5474:17;;;;;;;;;;;5510:23;;;;5502:74;;;;-1:-1:-1;;;5502:74:0;;24257:2:1;5502:74:0;;;24239:21:1;24296:2;24276:18;;;24269:30;24335:34;24315:18;;;24308:62;-1:-1:-1;;;24386:18:1;;;24379:36;24432:19;;5502:74:0;24055:402:1;5502:74:0;-1:-1:-1;;;;;5612:17:0;;;:9;:17;;;;;;;;;;;5632:22;;;5612:42;;5676:20;;;;;;;;:30;;5648:6;;5612:9;5676:30;;5648:6;;5676:30;:::i;:::-;;;;;;;;5741:9;-1:-1:-1;;;;;5724:35:0;5733:6;-1:-1:-1;;;;;5724:35:0;;5752:6;5724:35;;;;160:25:1;;148:2;133:18;;14:177;5724:35:0;;;;;;;;5772:46;24637:4074;20966:315;21079:6;21054:21;:31;;21046:73;;;;-1:-1:-1;;;21046:73:0;;24664:2:1;21046:73:0;;;24646:21:1;24703:2;24683:18;;;24676:30;24742:31;24722:18;;;24715:59;24791:18;;21046:73:0;24462:353:1;21046:73:0;21133:12;21151:9;-1:-1:-1;;;;;21151:14:0;21173:6;21151:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21132:52;;;21203:7;21195:78;;;;-1:-1:-1;;;21195:78:0;;25232:2:1;21195:78:0;;;25214:21:1;25271:2;25251:18;;;25244:30;25310:34;25290:18;;;25283:62;25381:28;25361:18;;;25354:56;25427:19;;21195:78:0;25030:422:1;596:597;708:4;737:2;766;755:9;748:21;798:6;792:13;841:6;836:2;825:9;821:18;814:34;866:1;876:140;890:6;887:1;884:13;876:140;;;985:14;;;981:23;;975:30;951:17;;;970:2;947:26;940:66;905:10;;876:140;;;1034:6;1031:1;1028:13;1025:91;;;1104:1;1099:2;1090:6;1079:9;1075:22;1071:31;1064:42;1025:91;-1:-1:-1;1177:2:1;1156:15;-1:-1:-1;;1152:29:1;1137:45;;;;1184:2;1133:54;;596:597;-1:-1:-1;;;596:597:1:o;1198:131::-;-1:-1:-1;;;;;1273:31:1;;1263:42;;1253:70;;1319:1;1316;1309:12;1334:315;1402:6;1410;1463:2;1451:9;1442:7;1438:23;1434:32;1431:52;;;1479:1;1476;1469:12;1431:52;1518:9;1505:23;1537:31;1562:5;1537:31;:::i;:::-;1587:5;1639:2;1624:18;;;;1611:32;;-1:-1:-1;;;1334:315:1:o;1654:118::-;1740:5;1733:13;1726:21;1719:5;1716:32;1706:60;;1762:1;1759;1752:12;1777:382;1842:6;1850;1903:2;1891:9;1882:7;1878:23;1874:32;1871:52;;;1919:1;1916;1909:12;1871:52;1958:9;1945:23;1977:31;2002:5;1977:31;:::i;:::-;2027:5;-1:-1:-1;2084:2:1;2069:18;;2056:32;2097:30;2056:32;2097:30;:::i;:::-;2146:7;2136:17;;;1777:382;;;;;:::o;2399:247::-;2458:6;2511:2;2499:9;2490:7;2486:23;2482:32;2479:52;;;2527:1;2524;2517:12;2479:52;2566:9;2553:23;2585:31;2610:5;2585:31;:::i;:::-;2635:5;2399:247;-1:-1:-1;;;2399:247:1:o;2651:456::-;2728:6;2736;2744;2797:2;2785:9;2776:7;2772:23;2768:32;2765:52;;;2813:1;2810;2803:12;2765:52;2852:9;2839:23;2871:31;2896:5;2871:31;:::i;:::-;2921:5;-1:-1:-1;2978:2:1;2963:18;;2950:32;2991:33;2950:32;2991:33;:::i;:::-;2651:456;;3043:7;;-1:-1:-1;;;3097:2:1;3082:18;;;;3069:32;;2651:456::o;3112:180::-;3171:6;3224:2;3212:9;3203:7;3199:23;3195:32;3192:52;;;3240:1;3237;3230:12;3192:52;-1:-1:-1;3263:23:1;;3112:180;-1:-1:-1;3112:180:1:o;3297:241::-;3353:6;3406:2;3394:9;3385:7;3381:23;3377:32;3374:52;;;3422:1;3419;3412:12;3374:52;3461:9;3448:23;3480:28;3502:5;3480:28;:::i;3732:248::-;3800:6;3808;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;-1:-1:-1;;3900:23:1;;;3970:2;3955:18;;;3942:32;;-1:-1:-1;3732:248:1:o;3985:388::-;4053:6;4061;4114:2;4102:9;4093:7;4089:23;4085:32;4082:52;;;4130:1;4127;4120:12;4082:52;4169:9;4156:23;4188:31;4213:5;4188:31;:::i;:::-;4238:5;-1:-1:-1;4295:2:1;4280:18;;4267:32;4308:33;4267:32;4308:33;:::i;4378:316::-;4455:6;4463;4471;4524:2;4512:9;4503:7;4499:23;4495:32;4492:52;;;4540:1;4537;4530:12;4492:52;-1:-1:-1;;4563:23:1;;;4633:2;4618:18;;4605:32;;-1:-1:-1;4684:2:1;4669:18;;;4656:32;;4378:316;-1:-1:-1;4378:316:1:o;4699:380::-;4778:1;4774:12;;;;4821;;;4842:61;;4896:4;4888:6;4884:17;4874:27;;4842:61;4949:2;4941:6;4938:14;4918:18;4915:38;4912:161;;4995:10;4990:3;4986:20;4983:1;4976:31;5030:4;5027:1;5020:15;5058:4;5055:1;5048:15;4912:161;;4699:380;;;:::o;5084:356::-;5286:2;5268:21;;;5305:18;;;5298:30;5364:34;5359:2;5344:18;;5337:62;5431:2;5416:18;;5084:356::o;5445:400::-;5647:2;5629:21;;;5686:2;5666:18;;;5659:30;5725:34;5720:2;5705:18;;5698:62;-1:-1:-1;;;5791:2:1;5776:18;;5769:34;5835:3;5820:19;;5445:400::o;6259:127::-;6320:10;6315:3;6311:20;6308:1;6301:31;6351:4;6348:1;6341:15;6375:4;6372:1;6365:15;6391:422;6480:1;6523:5;6480:1;6537:270;6558:7;6548:8;6545:21;6537:270;;;6617:4;6613:1;6609:6;6605:17;6599:4;6596:27;6593:53;;;6626:18;;:::i;:::-;6676:7;6666:8;6662:22;6659:55;;;6696:16;;;;6659:55;6775:22;;;;6735:15;;;;6537:270;;;6541:3;6391:422;;;;;:::o;6818:806::-;6867:5;6897:8;6887:80;;-1:-1:-1;6938:1:1;6952:5;;6887:80;6986:4;6976:76;;-1:-1:-1;7023:1:1;7037:5;;6976:76;7068:4;7086:1;7081:59;;;;7154:1;7149:130;;;;7061:218;;7081:59;7111:1;7102:10;;7125:5;;;7149:130;7186:3;7176:8;7173:17;7170:43;;;7193:18;;:::i;:::-;-1:-1:-1;;7249:1:1;7235:16;;7264:5;;7061:218;;7363:2;7353:8;7350:16;7344:3;7338:4;7335:13;7331:36;7325:2;7315:8;7312:16;7307:2;7301:4;7298:12;7294:35;7291:77;7288:159;;;-1:-1:-1;7400:19:1;;;7432:5;;7288:159;7479:34;7504:8;7498:4;7479:34;:::i;:::-;7549:6;7545:1;7541:6;7537:19;7528:7;7525:32;7522:58;;;7560:18;;:::i;:::-;7598:20;;6818:806;-1:-1:-1;;;6818:806:1:o;7629:140::-;7687:5;7716:47;7757:4;7747:8;7743:19;7737:4;7716:47;:::i;7774:217::-;7814:1;7840;7830:132;;7884:10;7879:3;7875:20;7872:1;7865:31;7919:4;7916:1;7909:15;7947:4;7944:1;7937:15;7830:132;-1:-1:-1;7976:9:1;;7774:217::o;8410:168::-;8450:7;8516:1;8512;8508:6;8504:14;8501:1;8498:21;8493:1;8486:9;8479:17;8475:45;8472:71;;;8523:18;;:::i;:::-;-1:-1:-1;8563:9:1;;8410:168::o;10221:128::-;10261:3;10292:1;10288:6;10285:1;10282:13;10279:39;;;10298:18;;:::i;:::-;-1:-1:-1;10334:9:1;;10221:128::o;11248:350::-;11450:2;11432:21;;;11489:2;11469:18;;;11462:30;11528:28;11523:2;11508:18;;11501:56;11589:2;11574:18;;11248:350::o;12007:251::-;12077:6;12130:2;12118:9;12109:7;12105:23;12101:32;12098:52;;;12146:1;12143;12136:12;12098:52;12178:9;12172:16;12197:31;12222:5;12197:31;:::i;17964:184::-;18034:6;18087:2;18075:9;18066:7;18062:23;18058:32;18055:52;;;18103:1;18100;18093:12;18055:52;-1:-1:-1;18126:16:1;;17964:184;-1:-1:-1;17964:184:1:o;18432:245::-;18499:6;18552:2;18540:9;18531:7;18527:23;18523:32;18520:52;;;18568:1;18565;18558:12;18520:52;18600:9;18594:16;18619:28;18641:5;18619:28;:::i;20247:401::-;20449:2;20431:21;;;20488:2;20468:18;;;20461:30;20527:34;20522:2;20507:18;;20500:62;-1:-1:-1;;;20593:2:1;20578:18;;20571:35;20638:3;20623:19;;20247:401::o;20653:399::-;20855:2;20837:21;;;20894:2;20874:18;;;20867:30;20933:34;20928:2;20913:18;;20906:62;-1:-1:-1;;;20999:2:1;20984:18;;20977:33;21042:3;21027:19;;20653:399::o;21403:420::-;21605:2;21587:21;;;21644:2;21624:18;;;21617:30;21683:34;21678:2;21663:18;;21656:62;21754:26;21749:2;21734:18;;21727:54;21813:3;21798:19;;21403:420::o;21828:125::-;21868:4;21896:1;21893;21890:8;21887:34;;;21901:18;;:::i;:::-;-1:-1:-1;21938:9:1;;21828:125::o;22090:127::-;22151:10;22146:3;22142:20;22139:1;22132:31;22182:4;22179:1;22172:15;22206:4;22203:1;22196:15;22222:980;22484:4;22532:3;22521:9;22517:19;22563:6;22552:9;22545:25;22589:2;22627:6;22622:2;22611:9;22607:18;22600:34;22670:3;22665:2;22654:9;22650:18;22643:31;22694:6;22729;22723:13;22760:6;22752;22745:22;22798:3;22787:9;22783:19;22776:26;;22837:2;22829:6;22825:15;22811:29;;22858:1;22868:195;22882:6;22879:1;22876:13;22868:195;;;22947:13;;-1:-1:-1;;;;;22943:39:1;22931:52;;23038:15;;;;23003:12;;;;22979:1;22897:9;22868:195;;;-1:-1:-1;;;;;;;23119:32:1;;;;23114:2;23099:18;;23092:60;-1:-1:-1;;;23183:3:1;23168:19;23161:35;23080:3;22222:980;-1:-1:-1;;;22222:980:1:o
Swarm Source
ipfs://2cdd5710d0651e673f89586e2ac95c9eef0b900dc6ec985e5f1cb57e0c1aa08b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.