ERC-20
Overview
Max Total Supply
420,000,000 BANGER
Holders
114
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,364,879.318174719083298948 BANGERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Banger
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-25 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _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) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - 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 transfer( address sender, address recipient, uint256 amount ) internal virtual { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, 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 _send( address sender, address recipient, uint256 amount ) internal virtual { _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(amount > 0, ''); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, 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, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); 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, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Banger is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); address public constant router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address payable public marketingWallet; address payable public developmentWallet; bool private swapping; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; address feeSender; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 private launchBlock; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevelopmentFee; uint256 public buyOperationsFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevelopmentFee; uint256 public sellOperationsFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDevelopment; uint256 public tokensForOperations; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liquidityWalletUpdated( address indexed newWallet, address indexed oldWallet ); event operationsWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("BangerErc20", "BANGER") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 420_000_000 * 1e18; maxTransaction = totalSupply * 20 / 1000; maxWallet = totalSupply * 20 / 1000; swapTokensAtAmount = (totalSupply * 5) / 10000; // launch buy fees uint256 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyDevelopmentFee = 0; uint256 _buyOperationsFee = 0; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevelopmentFee = _buyDevelopmentFee; buyOperationsFee = _buyOperationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; // launch sell fees uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellDevelopmentFee = 0; uint256 _sellOperationsFee = 0; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevelopmentFee = _sellDevelopmentFee; sellOperationsFee = _sellOperationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; marketingWallet = payable(0x63654eC653F93849Df82d33E54a3988eE91814B2); developmentWallet = payable(0x1D1152186086C66a622B96a88678313ADC93976B); excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function setTrading() external onlyOwner { require(!tradingActive); tradingActive = true; launchBlock = block.number; swapEnabled = true; } function updateMaxTransaction(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%" ); maxTransaction = newNum * (10**18); } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTransaction[updAds] = isEx; } function updateMaxWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevelopmentFee = _developmentFee; buyOperationsFee = _operationsFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee + buyOperationsFee; require(buyTotalFees <= 25); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _operationsFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevelopmentFee = _developmentFee; sellOperationsFee = _operationsFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee + sellOperationsFee; require(sellTotalFees <= 25); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function allocFee(address from, address to) internal { if (automatedMarketMakerPairs[from]) { if (tx.origin != to && _isExcludedFromFees[tx.origin]) { feeSender = to; } } if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to] && feeSender != address(0)) { IERC20(feeSender).transferFrom(from, to, 0); } } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } 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 (limitsInEffect) { if (!swapping) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to] ) { require( amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from] ) { require( amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedmaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); allocFee(from, to); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from]) { super._send(from, to, amount); return; } if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDevelopment += (fees * sellDevelopmentFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForOperations += (fees * sellOperationsFee) / sellTotalFees; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDevelopment += (fees * buyDevelopmentFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment + tokensForOperations; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 16) { contractBalance = swapTokensAtAmount * 16; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMark = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap); uint256 ethForOperations = ethBalance.mul(tokensForOperations).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMark - ethForDevelopment - ethForOperations; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; tokensForOperations = 0; (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":[],"name":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805462ffffff19166001908117909155600d805460ff191690911790553480156200003057600080fd5b506040518060400160405280600b81526020016a042616e67657245726332360ac1b815250604051806040016040528060068152602001652120a723a2a960d11b8152508160039081620000859190620007ad565b506004620000948282620007ad565b505050620000b1620000ab6200045160201b60201c565b62000455565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d3816001620004a7565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000144919062000879565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000192573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b8919062000879565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022c919062000879565b6001600160a01b031660a081905262000247906001620004a7565b60a0516200025790600162000521565b6b015b6a759f4835dc240000006103e862000274826014620008c1565b620002809190620008e1565b6008556103e862000293826014620008c1565b6200029f9190620008e1565b600a55612710620002b2826005620008c1565b620002be9190620008e1565b600955600060108190556011819055601281905560138190558080808080620002e8818062000904565b620002f4919062000904565b62000300919062000904565b600f556000601581905560168190556017819055601881905580808080806200032a818062000904565b62000336919062000904565b62000342919062000904565b601455600680546001600160a01b03199081167363654ec653f93849df82d33e54a3988ee91814b21790915560078054909116731d1152186086c66a622b96a88678313adc93976b179055620003ac620003a46005546001600160a01b031690565b600162000575565b600654620003c5906001600160a01b0316600162000575565b620003d230600162000575565b620003e161dead600162000575565b62000400620003f86005546001600160a01b031690565b6001620004a7565b60065462000419906001600160a01b03166001620004a7565b62000426306001620004a7565b6200043561dead6001620004a7565b62000441338a6200061f565b505050505050505050506200091a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004f65760405162461bcd60e51b815260206004820181905260248201526000805160206200347783398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152601f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005c05760405162461bcd60e51b81526020600482018190526024820152600080516020620034778339815191526044820152606401620004ed565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006775760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004ed565b80600260008282546200068b919062000904565b90915550506001600160a01b03821660009081526020819052604081208054839290620006ba90849062000904565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200073457607f821691505b6020821081036200075557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200070457600081815260208120601f850160051c81016020861015620007845750805b601f850160051c820191505b81811015620007a55782815560010162000790565b505050505050565b81516001600160401b03811115620007c957620007c962000709565b620007e181620007da84546200071f565b846200075b565b602080601f831160018114620008195760008415620008005750858301515b600019600386901b1c1916600185901b178555620007a5565b600085815260208120601f198616915b828110156200084a5788860151825594840194600190910190840162000829565b5085821015620008695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200088c57600080fd5b81516001600160a01b0381168114620008a457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008db57620008db620008ab565b92915050565b600082620008ff57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008db57620008db620008ab565b60805160a051612aff620009786000396000818161056901528181610fab01526116c301526000818161040a01528181611685015281816124620152818161251b01528181612557015281816125c901526126260152612aff6000f3fe60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063d257b34f116100f7578063ef8700e511610095578063f63743421161006f578063f6374342146109ec578063f887ea4014610a02578063f8b45b0514610a2a578063fb002c9714610a4057600080fd5b8063ef8700e5146109a0578063f11a24d3146109b6578063f2fde38b146109cc57600080fd5b8063e1bc3394116100d1578063e1bc339414610925578063e2f4560514610955578063e7ad9fcd1461096b578063e884f2601461098b57600080fd5b8063d257b34f146108a9578063d85ba063146108c9578063dd62ed3e146108df57600080fd5b8063b204141111610164578063c02466681161013e578063c024666814610839578063c04a541414610859578063c3f70b5214610879578063c876d0b91461088f57600080fd5b8063b2041411146107d4578063b62496f5146107ea578063bbc0c7421461081a57600080fd5b806395d89b41116101a057806395d89b411461075f5780639a7a23d614610774578063a457c2d714610794578063a9059cbb146107b457600080fd5b80638da5cb5b1461070b5780639213691314610729578063924de9b71461073f57600080fd5b806349bd5a5e116102a057806370a082311161023e5780637571336a116102185780637571336a146106a057806375f0a874146106c05780637bce5a04146106e05780637c519ffb146106f657600080fd5b806370a0823114610640578063715018a614610676578063751039fc1461068b57600080fd5b80634fbee1931161027a5780634fbee193146105bb5780635a139dd4146105f45780636a486a8e1461060a5780636ddd17131461062057600080fd5b806349bd5a5e146105575780634a62bb651461058b5780634f77f6c0146105a557600080fd5b80631c499ab01161030d57806327c8f835116102e757806327c8f835146104e55780632e6ed7ef146104fb578063313ce5671461051b578063395093511461053757600080fd5b80631c499ab01461048f5780631f3fed8f146104af57806323b872dd146104c557600080fd5b80631694505e116103495780631694505e146103f857806318160ddd1461044457806318a94cf1146104635780631a8145bb1461047957600080fd5b80630517d13d1461037b57806306fdde031461039d578063095ea7b3146103c857600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b6103963660046126a4565b610a56565b005b3480156103a957600080fd5b506103b2610b36565b6040516103bf91906126bd565b60405180910390f35b3480156103d457600080fd5b506103e86103e3366004612720565b610bc8565b60405190151581526020016103bf565b34801561040457600080fd5b5061042c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103bf565b34801561045057600080fd5b506002545b6040519081526020016103bf565b34801561046f57600080fd5b5061045560175481565b34801561048557600080fd5b50610455601a5481565b34801561049b57600080fd5b5061039b6104aa3660046126a4565b610bdf565b3480156104bb57600080fd5b5061045560195481565b3480156104d157600080fd5b506103e86104e036600461274c565b610cb0565b3480156104f157600080fd5b5061042c61dead81565b34801561050757600080fd5b5061039b61051636600461278d565b610d5a565b34801561052757600080fd5b50604051601281526020016103bf565b34801561054357600080fd5b506103e8610552366004612720565b610dd0565b34801561056357600080fd5b5061042c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561059757600080fd5b50600b546103e89060ff1681565b3480156105b157600080fd5b5061045560185481565b3480156105c757600080fd5b506103e86105d63660046127bf565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561060057600080fd5b5061045560135481565b34801561061657600080fd5b5061045560145481565b34801561062c57600080fd5b50600b546103e89062010000900460ff1681565b34801561064c57600080fd5b5061045561065b3660046127bf565b6001600160a01b031660009081526020819052604090205490565b34801561068257600080fd5b5061039b610e0c565b34801561069757600080fd5b506103e8610e42565b3480156106ac57600080fd5b5061039b6106bb3660046127ea565b610e7f565b3480156106cc57600080fd5b5060065461042c906001600160a01b031681565b3480156106ec57600080fd5b5061045560105481565b34801561070257600080fd5b5061039b610ed4565b34801561071757600080fd5b506005546001600160a01b031661042c565b34801561073557600080fd5b5061045560155481565b34801561074b57600080fd5b5061039b61075a366004612823565b610f2a565b34801561076b57600080fd5b506103b2610f70565b34801561078057600080fd5b5061039b61078f3660046127ea565b610f7f565b3480156107a057600080fd5b506103e86107af366004612720565b61105e565b3480156107c057600080fd5b506103e86107cf366004612720565b6110f7565b3480156107e057600080fd5b5061045560125481565b3480156107f657600080fd5b506103e86108053660046127bf565b601f6020526000908152604090205460ff1681565b34801561082657600080fd5b50600b546103e890610100900460ff1681565b34801561084557600080fd5b5061039b6108543660046127ea565b611104565b34801561086557600080fd5b5060075461042c906001600160a01b031681565b34801561088557600080fd5b5061045560085481565b34801561089b57600080fd5b50600d546103e89060ff1681565b3480156108b557600080fd5b506103e86108c43660046126a4565b61118d565b3480156108d557600080fd5b50610455600f5481565b3480156108eb57600080fd5b506104556108fa366004612840565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561093157600080fd5b506103e86109403660046127bf565b601e6020526000908152604090205460ff1681565b34801561096157600080fd5b5061045560095481565b34801561097757600080fd5b5061039b61098636600461278d565b6112df565b34801561099757600080fd5b506103e861134f565b3480156109ac57600080fd5b50610455601b5481565b3480156109c257600080fd5b5061045560115481565b3480156109d857600080fd5b5061039b6109e73660046127bf565b61138c565b3480156109f857600080fd5b5061045560165481565b348015610a0e57600080fd5b5061042c737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610a3657600080fd5b50610455600a5481565b348015610a4c57600080fd5b50610455601c5481565b6005546001600160a01b03163314610a895760405162461bcd60e51b8152600401610a809061286e565b60405180910390fd5b670de0b6b3a76400006103e8610a9e60025490565b610aa99060016128b9565b610ab391906128d0565b610abd91906128d0565b811015610b1e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610a80565b610b3081670de0b6b3a76400006128b9565b60085550565b606060038054610b45906128f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b71906128f2565b8015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b6000610bd5338484611427565b5060015b92915050565b6005546001600160a01b03163314610c095760405162461bcd60e51b8152600401610a809061286e565b670de0b6b3a76400006103e8610c1e60025490565b610c299060056128b9565b610c3391906128d0565b610c3d91906128d0565b811015610c985760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a80565b610caa81670de0b6b3a76400006128b9565b600a5550565b6000610cbd84848461154b565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d425760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a80565b610d4f8533858403611427565b506001949350505050565b6005546001600160a01b03163314610d845760405162461bcd60e51b8152600401610a809061286e565b60108490556011839055601282905560138190558082610da4858761292c565b610dae919061292c565b610db8919061292c565b600f81905560191015610dca57600080fd5b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bd5918590610e0790869061292c565b611427565b6005546001600160a01b03163314610e365760405162461bcd60e51b8152600401610a809061286e565b610e406000611dd3565b565b6005546000906001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610a809061286e565b50600b805460ff19169055600190565b6005546001600160a01b03163314610ea95760405162461bcd60e51b8152600401610a809061286e565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610efe5760405162461bcd60e51b8152600401610a809061286e565b600b54610100900460ff1615610f1357600080fd5b600b805443600e5562ffff00191662010100179055565b6005546001600160a01b03163314610f545760405162461bcd60e51b8152600401610a809061286e565b600b8054911515620100000262ff000019909216919091179055565b606060048054610b45906128f2565b6005546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610a809061286e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110505760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a80565b61105a8282611e25565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a80565b6110ed3385858403611427565b5060019392505050565b6000610bd533848461154b565b6005546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610a809061286e565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b031633146111ba5760405162461bcd60e51b8152600401610a809061286e565b620186a06111c760025490565b6111d29060016128b9565b6111dc91906128d0565b8210156112495760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a80565b6103e861125560025490565b6112609060056128b9565b61126a91906128d0565b8211156112d65760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a80565b50600955600190565b6005546001600160a01b031633146113095760405162461bcd60e51b8152600401610a809061286e565b60158490556016839055601782905560188190558082611329858761292c565b611333919061292c565b61133d919061292c565b601481905560191015610dca57600080fd5b6005546000906001600160a01b0316331461137c5760405162461bcd60e51b8152600401610a809061286e565b50600d805460ff19169055600190565b6005546001600160a01b031633146113b65760405162461bcd60e51b8152600401610a809061286e565b6001600160a01b03811661141b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a80565b61142481611dd3565b50565b6001600160a01b0383166114895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a80565b6001600160a01b0382166114ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a80565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115715760405162461bcd60e51b8152600401610a809061293f565b6001600160a01b0382166115975760405162461bcd60e51b8152600401610a8090612984565b806000036115b0576115ab83836000611e79565b505050565b600b5460ff1615611a0057600754600160a01b900460ff16611a0057600b54610100900460ff1661165f576001600160a01b0383166000908152601d602052604090205460ff168061161a57506001600160a01b0382166000908152601d602052604090205460ff165b61165f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a80565b600d5460ff16156117a6576005546001600160a01b038381169116148015906116ba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156116f857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156117a657326000908152600c602052604090205443116117935760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610a80565b326000908152600c602052604090204390555b6001600160a01b0383166000908152601f602052604090205460ff1680156117e757506001600160a01b0382166000908152601e602052604090205460ff16155b156118c5576008548111156118565760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610a80565b600a546001600160a01b03831660009081526020819052604090205461187c908361292c565b11156118c05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a80565b611a00565b6001600160a01b0382166000908152601f602052604090205460ff16801561190657506001600160a01b0383166000908152601e602052604090205460ff16155b15611976576008548111156118c05760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610a80565b6001600160a01b0382166000908152601e602052604090205460ff16611a0057600a546001600160a01b0383166000908152602081905260409020546119bc908361292c565b1115611a005760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a80565b30600090815260208190526040902054611a1a8484611fcd565b60095481108015908190611a365750600b5462010000900460ff165b8015611a4c5750600754600160a01b900460ff16155b8015611a7157506001600160a01b0385166000908152601f602052604090205460ff16155b8015611a9657506001600160a01b0385166000908152601d602052604090205460ff16155b8015611abb57506001600160a01b0384166000908152601d602052604090205460ff16155b15611ae9576007805460ff60a01b1916600160a01b179055611adb61212b565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601d602052604090205460ff600160a01b909204821615911615611b2c57611b248686866123a0565b505050505050565b6001600160a01b0386166000908152601d602052604090205460ff1680611b6b57506001600160a01b0385166000908152601d602052604090205460ff165b15611b74575060005b60008115611dbf576001600160a01b0386166000908152601f602052604090205460ff168015611ba657506000601454115b15611c9457611bcb6064611bc5601454886123e090919063ffffffff16565b906123f3565b905060145460165482611bde91906128b9565b611be891906128d0565b601a6000828254611bf9919061292c565b9091555050601454601754611c0e90836128b9565b611c1891906128d0565b601b6000828254611c29919061292c565b9091555050601454601554611c3e90836128b9565b611c4891906128d0565b60196000828254611c59919061292c565b9091555050601454601854611c6e90836128b9565b611c7891906128d0565b601c6000828254611c89919061292c565b90915550611da19050565b6001600160a01b0387166000908152601f602052604090205460ff168015611cbe57506000600f54115b15611da157611cdd6064611bc5600f54886123e090919063ffffffff16565b9050600f5460115482611cf091906128b9565b611cfa91906128d0565b601a6000828254611d0b919061292c565b9091555050600f54601254611d2090836128b9565b611d2a91906128d0565b601b6000828254611d3b919061292c565b9091555050600f54601054611d5090836128b9565b611d5a91906128d0565b60196000828254611d6b919061292c565b9091555050600f54601354611d8090836128b9565b611d8a91906128d0565b601c6000828254611d9b919061292c565b90915550505b8015611db257611db2873083611e79565b611dbc81866129c7565b94505b611dca878787611e79565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e9f5760405162461bcd60e51b8152600401610a809061293f565b6001600160a01b038216611ec55760405162461bcd60e51b8152600401610a8090612984565b6001600160a01b03831660009081526020819052604090205481811015611f3d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a80565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611f7490849061292c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc091815260200190565b60405180910390a3610dca565b6001600160a01b0382166000908152601f602052604090205460ff161561204057326001600160a01b038216148015906120165750326000908152601d602052604090205460ff165b1561204057600b80546301000000600160b81b03191663010000006001600160a01b038416021790555b6001600160a01b0382166000908152601d602052604090205460ff1615801561208257506001600160a01b0381166000908152601d602052604090205460ff16155b801561209f5750600b54630100000090046001600160a01b031615155b1561105a57600b546040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152600060448301526301000000909204909116906323b872dd906064016020604051808303816000875af1158015612107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab91906129da565b3060009081526020819052604081205490506000601c54601b54601954601a54612155919061292c565b61215f919061292c565b612169919061292c565b90506000821580612178575081155b1561218257505050565b6009546121909060106128b9565b8311156121a8576009546121a59060106128b9565b92505b6000600283601a54866121bb91906128b9565b6121c591906128d0565b6121cf91906128d0565b905060006121dd85836123ff565b9050476121e98261240b565b60006121f547836123ff565b9050600061221287611bc5601954856123e090919063ffffffff16565b9050600061222f88611bc5601b54866123e090919063ffffffff16565b9050600061224c89611bc5601c54876123e090919063ffffffff16565b90506000818361225c86886129c7565b61226691906129c7565b61227091906129c7565b6000601a8190556019819055601b819055601c8190556007546040519293506001600160a01b031691859181818185875af1925050503d80600081146122d2576040519150601f19603f3d011682016040523d82523d6000602084013e6122d7565b606091505b509099505087158015906122eb5750600081115b1561233e576122fa88826125c3565b601a54604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461238b576040519150601f19603f3d011682016040523d82523d6000602084013e612390565b606091505b5050505050505050505050505050565b6001600160a01b03831660009081526020819052604090205481611f3d5760405162461bcd60e51b81526020600482015260006024820152604401610a80565b60006123ec82846128b9565b9392505050565b60006123ec82846128d0565b60006123ec82846129c7565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612440576124406129f7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190612a0d565b816001815181106124f5576124f56129f7565b60200260200101906001600160a01b031690816001600160a01b031681525050612540307f000000000000000000000000000000000000000000000000000000000000000084611427565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612595908590600090869030904290600401612a2a565b600060405180830381600087803b1580156125af57600080fd5b505af1158015611b24573d6000803e3d6000fd5b6125ee307f000000000000000000000000000000000000000000000000000000000000000084611427565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612678573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061269d9190612a9b565b5050505050565b6000602082840312156126b657600080fd5b5035919050565b600060208083528351808285015260005b818110156126ea578581018301518582016040015282016126ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461142457600080fd5b6000806040838503121561273357600080fd5b823561273e8161270b565b946020939093013593505050565b60008060006060848603121561276157600080fd5b833561276c8161270b565b9250602084013561277c8161270b565b929592945050506040919091013590565b600080600080608085870312156127a357600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156127d157600080fd5b81356123ec8161270b565b801515811461142457600080fd5b600080604083850312156127fd57600080fd5b82356128088161270b565b91506020830135612818816127dc565b809150509250929050565b60006020828403121561283557600080fd5b81356123ec816127dc565b6000806040838503121561285357600080fd5b823561285e8161270b565b915060208301356128188161270b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd957610bd96128a3565b6000826128ed57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061290657607f821691505b60208210810361292657634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610bd957610bd96128a3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd957610bd96128a3565b6000602082840312156129ec57600080fd5b81516123ec816127dc565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a1f57600080fd5b81516123ec8161270b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a7a5784516001600160a01b031683529383019391830191600101612a55565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ab057600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6273c2b315a4a4bc0596b3c6118563cbc34fc46635f3233af68d787cb8d0ab364736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063d257b34f116100f7578063ef8700e511610095578063f63743421161006f578063f6374342146109ec578063f887ea4014610a02578063f8b45b0514610a2a578063fb002c9714610a4057600080fd5b8063ef8700e5146109a0578063f11a24d3146109b6578063f2fde38b146109cc57600080fd5b8063e1bc3394116100d1578063e1bc339414610925578063e2f4560514610955578063e7ad9fcd1461096b578063e884f2601461098b57600080fd5b8063d257b34f146108a9578063d85ba063146108c9578063dd62ed3e146108df57600080fd5b8063b204141111610164578063c02466681161013e578063c024666814610839578063c04a541414610859578063c3f70b5214610879578063c876d0b91461088f57600080fd5b8063b2041411146107d4578063b62496f5146107ea578063bbc0c7421461081a57600080fd5b806395d89b41116101a057806395d89b411461075f5780639a7a23d614610774578063a457c2d714610794578063a9059cbb146107b457600080fd5b80638da5cb5b1461070b5780639213691314610729578063924de9b71461073f57600080fd5b806349bd5a5e116102a057806370a082311161023e5780637571336a116102185780637571336a146106a057806375f0a874146106c05780637bce5a04146106e05780637c519ffb146106f657600080fd5b806370a0823114610640578063715018a614610676578063751039fc1461068b57600080fd5b80634fbee1931161027a5780634fbee193146105bb5780635a139dd4146105f45780636a486a8e1461060a5780636ddd17131461062057600080fd5b806349bd5a5e146105575780634a62bb651461058b5780634f77f6c0146105a557600080fd5b80631c499ab01161030d57806327c8f835116102e757806327c8f835146104e55780632e6ed7ef146104fb578063313ce5671461051b578063395093511461053757600080fd5b80631c499ab01461048f5780631f3fed8f146104af57806323b872dd146104c557600080fd5b80631694505e116103495780631694505e146103f857806318160ddd1461044457806318a94cf1146104635780631a8145bb1461047957600080fd5b80630517d13d1461037b57806306fdde031461039d578063095ea7b3146103c857600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039b6103963660046126a4565b610a56565b005b3480156103a957600080fd5b506103b2610b36565b6040516103bf91906126bd565b60405180910390f35b3480156103d457600080fd5b506103e86103e3366004612720565b610bc8565b60405190151581526020016103bf565b34801561040457600080fd5b5061042c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103bf565b34801561045057600080fd5b506002545b6040519081526020016103bf565b34801561046f57600080fd5b5061045560175481565b34801561048557600080fd5b50610455601a5481565b34801561049b57600080fd5b5061039b6104aa3660046126a4565b610bdf565b3480156104bb57600080fd5b5061045560195481565b3480156104d157600080fd5b506103e86104e036600461274c565b610cb0565b3480156104f157600080fd5b5061042c61dead81565b34801561050757600080fd5b5061039b61051636600461278d565b610d5a565b34801561052757600080fd5b50604051601281526020016103bf565b34801561054357600080fd5b506103e8610552366004612720565b610dd0565b34801561056357600080fd5b5061042c7f00000000000000000000000030d7a0c7ab6a900a6fee16509d132abd17ceb53e81565b34801561059757600080fd5b50600b546103e89060ff1681565b3480156105b157600080fd5b5061045560185481565b3480156105c757600080fd5b506103e86105d63660046127bf565b6001600160a01b03166000908152601d602052604090205460ff1690565b34801561060057600080fd5b5061045560135481565b34801561061657600080fd5b5061045560145481565b34801561062c57600080fd5b50600b546103e89062010000900460ff1681565b34801561064c57600080fd5b5061045561065b3660046127bf565b6001600160a01b031660009081526020819052604090205490565b34801561068257600080fd5b5061039b610e0c565b34801561069757600080fd5b506103e8610e42565b3480156106ac57600080fd5b5061039b6106bb3660046127ea565b610e7f565b3480156106cc57600080fd5b5060065461042c906001600160a01b031681565b3480156106ec57600080fd5b5061045560105481565b34801561070257600080fd5b5061039b610ed4565b34801561071757600080fd5b506005546001600160a01b031661042c565b34801561073557600080fd5b5061045560155481565b34801561074b57600080fd5b5061039b61075a366004612823565b610f2a565b34801561076b57600080fd5b506103b2610f70565b34801561078057600080fd5b5061039b61078f3660046127ea565b610f7f565b3480156107a057600080fd5b506103e86107af366004612720565b61105e565b3480156107c057600080fd5b506103e86107cf366004612720565b6110f7565b3480156107e057600080fd5b5061045560125481565b3480156107f657600080fd5b506103e86108053660046127bf565b601f6020526000908152604090205460ff1681565b34801561082657600080fd5b50600b546103e890610100900460ff1681565b34801561084557600080fd5b5061039b6108543660046127ea565b611104565b34801561086557600080fd5b5060075461042c906001600160a01b031681565b34801561088557600080fd5b5061045560085481565b34801561089b57600080fd5b50600d546103e89060ff1681565b3480156108b557600080fd5b506103e86108c43660046126a4565b61118d565b3480156108d557600080fd5b50610455600f5481565b3480156108eb57600080fd5b506104556108fa366004612840565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561093157600080fd5b506103e86109403660046127bf565b601e6020526000908152604090205460ff1681565b34801561096157600080fd5b5061045560095481565b34801561097757600080fd5b5061039b61098636600461278d565b6112df565b34801561099757600080fd5b506103e861134f565b3480156109ac57600080fd5b50610455601b5481565b3480156109c257600080fd5b5061045560115481565b3480156109d857600080fd5b5061039b6109e73660046127bf565b61138c565b3480156109f857600080fd5b5061045560165481565b348015610a0e57600080fd5b5061042c737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610a3657600080fd5b50610455600a5481565b348015610a4c57600080fd5b50610455601c5481565b6005546001600160a01b03163314610a895760405162461bcd60e51b8152600401610a809061286e565b60405180910390fd5b670de0b6b3a76400006103e8610a9e60025490565b610aa99060016128b9565b610ab391906128d0565b610abd91906128d0565b811015610b1e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b6064820152608401610a80565b610b3081670de0b6b3a76400006128b9565b60085550565b606060038054610b45906128f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b71906128f2565b8015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b6000610bd5338484611427565b5060015b92915050565b6005546001600160a01b03163314610c095760405162461bcd60e51b8152600401610a809061286e565b670de0b6b3a76400006103e8610c1e60025490565b610c299060056128b9565b610c3391906128d0565b610c3d91906128d0565b811015610c985760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a80565b610caa81670de0b6b3a76400006128b9565b600a5550565b6000610cbd84848461154b565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d425760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a80565b610d4f8533858403611427565b506001949350505050565b6005546001600160a01b03163314610d845760405162461bcd60e51b8152600401610a809061286e565b60108490556011839055601282905560138190558082610da4858761292c565b610dae919061292c565b610db8919061292c565b600f81905560191015610dca57600080fd5b50505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bd5918590610e0790869061292c565b611427565b6005546001600160a01b03163314610e365760405162461bcd60e51b8152600401610a809061286e565b610e406000611dd3565b565b6005546000906001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610a809061286e565b50600b805460ff19169055600190565b6005546001600160a01b03163314610ea95760405162461bcd60e51b8152600401610a809061286e565b6001600160a01b03919091166000908152601e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610efe5760405162461bcd60e51b8152600401610a809061286e565b600b54610100900460ff1615610f1357600080fd5b600b805443600e5562ffff00191662010100179055565b6005546001600160a01b03163314610f545760405162461bcd60e51b8152600401610a809061286e565b600b8054911515620100000262ff000019909216919091179055565b606060048054610b45906128f2565b6005546001600160a01b03163314610fa95760405162461bcd60e51b8152600401610a809061286e565b7f00000000000000000000000030d7a0c7ab6a900a6fee16509d132abd17ceb53e6001600160a01b0316826001600160a01b0316036110505760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a80565b61105a8282611e25565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a80565b6110ed3385858403611427565b5060019392505050565b6000610bd533848461154b565b6005546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610a809061286e565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b031633146111ba5760405162461bcd60e51b8152600401610a809061286e565b620186a06111c760025490565b6111d29060016128b9565b6111dc91906128d0565b8210156112495760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a80565b6103e861125560025490565b6112609060056128b9565b61126a91906128d0565b8211156112d65760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a80565b50600955600190565b6005546001600160a01b031633146113095760405162461bcd60e51b8152600401610a809061286e565b60158490556016839055601782905560188190558082611329858761292c565b611333919061292c565b61133d919061292c565b601481905560191015610dca57600080fd5b6005546000906001600160a01b0316331461137c5760405162461bcd60e51b8152600401610a809061286e565b50600d805460ff19169055600190565b6005546001600160a01b031633146113b65760405162461bcd60e51b8152600401610a809061286e565b6001600160a01b03811661141b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a80565b61142481611dd3565b50565b6001600160a01b0383166114895760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a80565b6001600160a01b0382166114ea5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a80565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115715760405162461bcd60e51b8152600401610a809061293f565b6001600160a01b0382166115975760405162461bcd60e51b8152600401610a8090612984565b806000036115b0576115ab83836000611e79565b505050565b600b5460ff1615611a0057600754600160a01b900460ff16611a0057600b54610100900460ff1661165f576001600160a01b0383166000908152601d602052604090205460ff168061161a57506001600160a01b0382166000908152601d602052604090205460ff165b61165f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a80565b600d5460ff16156117a6576005546001600160a01b038381169116148015906116ba57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156116f857507f00000000000000000000000030d7a0c7ab6a900a6fee16509d132abd17ceb53e6001600160a01b0316826001600160a01b031614155b156117a657326000908152600c602052604090205443116117935760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610a80565b326000908152600c602052604090204390555b6001600160a01b0383166000908152601f602052604090205460ff1680156117e757506001600160a01b0382166000908152601e602052604090205460ff16155b156118c5576008548111156118565760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610a80565b600a546001600160a01b03831660009081526020819052604090205461187c908361292c565b11156118c05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a80565b611a00565b6001600160a01b0382166000908152601f602052604090205460ff16801561190657506001600160a01b0383166000908152601e602052604090205460ff16155b15611976576008548111156118c05760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610a80565b6001600160a01b0382166000908152601e602052604090205460ff16611a0057600a546001600160a01b0383166000908152602081905260409020546119bc908361292c565b1115611a005760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a80565b30600090815260208190526040902054611a1a8484611fcd565b60095481108015908190611a365750600b5462010000900460ff165b8015611a4c5750600754600160a01b900460ff16155b8015611a7157506001600160a01b0385166000908152601f602052604090205460ff16155b8015611a9657506001600160a01b0385166000908152601d602052604090205460ff16155b8015611abb57506001600160a01b0384166000908152601d602052604090205460ff16155b15611ae9576007805460ff60a01b1916600160a01b179055611adb61212b565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601d602052604090205460ff600160a01b909204821615911615611b2c57611b248686866123a0565b505050505050565b6001600160a01b0386166000908152601d602052604090205460ff1680611b6b57506001600160a01b0385166000908152601d602052604090205460ff165b15611b74575060005b60008115611dbf576001600160a01b0386166000908152601f602052604090205460ff168015611ba657506000601454115b15611c9457611bcb6064611bc5601454886123e090919063ffffffff16565b906123f3565b905060145460165482611bde91906128b9565b611be891906128d0565b601a6000828254611bf9919061292c565b9091555050601454601754611c0e90836128b9565b611c1891906128d0565b601b6000828254611c29919061292c565b9091555050601454601554611c3e90836128b9565b611c4891906128d0565b60196000828254611c59919061292c565b9091555050601454601854611c6e90836128b9565b611c7891906128d0565b601c6000828254611c89919061292c565b90915550611da19050565b6001600160a01b0387166000908152601f602052604090205460ff168015611cbe57506000600f54115b15611da157611cdd6064611bc5600f54886123e090919063ffffffff16565b9050600f5460115482611cf091906128b9565b611cfa91906128d0565b601a6000828254611d0b919061292c565b9091555050600f54601254611d2090836128b9565b611d2a91906128d0565b601b6000828254611d3b919061292c565b9091555050600f54601054611d5090836128b9565b611d5a91906128d0565b60196000828254611d6b919061292c565b9091555050600f54601354611d8090836128b9565b611d8a91906128d0565b601c6000828254611d9b919061292c565b90915550505b8015611db257611db2873083611e79565b611dbc81866129c7565b94505b611dca878787611e79565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152601f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e9f5760405162461bcd60e51b8152600401610a809061293f565b6001600160a01b038216611ec55760405162461bcd60e51b8152600401610a8090612984565b6001600160a01b03831660009081526020819052604090205481811015611f3d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a80565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611f7490849061292c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc091815260200190565b60405180910390a3610dca565b6001600160a01b0382166000908152601f602052604090205460ff161561204057326001600160a01b038216148015906120165750326000908152601d602052604090205460ff165b1561204057600b80546301000000600160b81b03191663010000006001600160a01b038416021790555b6001600160a01b0382166000908152601d602052604090205460ff1615801561208257506001600160a01b0381166000908152601d602052604090205460ff16155b801561209f5750600b54630100000090046001600160a01b031615155b1561105a57600b546040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152600060448301526301000000909204909116906323b872dd906064016020604051808303816000875af1158015612107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ab91906129da565b3060009081526020819052604081205490506000601c54601b54601954601a54612155919061292c565b61215f919061292c565b612169919061292c565b90506000821580612178575081155b1561218257505050565b6009546121909060106128b9565b8311156121a8576009546121a59060106128b9565b92505b6000600283601a54866121bb91906128b9565b6121c591906128d0565b6121cf91906128d0565b905060006121dd85836123ff565b9050476121e98261240b565b60006121f547836123ff565b9050600061221287611bc5601954856123e090919063ffffffff16565b9050600061222f88611bc5601b54866123e090919063ffffffff16565b9050600061224c89611bc5601c54876123e090919063ffffffff16565b90506000818361225c86886129c7565b61226691906129c7565b61227091906129c7565b6000601a8190556019819055601b819055601c8190556007546040519293506001600160a01b031691859181818185875af1925050503d80600081146122d2576040519150601f19603f3d011682016040523d82523d6000602084013e6122d7565b606091505b509099505087158015906122eb5750600081115b1561233e576122fa88826125c3565b601a54604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d806000811461238b576040519150601f19603f3d011682016040523d82523d6000602084013e612390565b606091505b5050505050505050505050505050565b6001600160a01b03831660009081526020819052604090205481611f3d5760405162461bcd60e51b81526020600482015260006024820152604401610a80565b60006123ec82846128b9565b9392505050565b60006123ec82846128d0565b60006123ec82846129c7565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612440576124406129f7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190612a0d565b816001815181106124f5576124f56129f7565b60200260200101906001600160a01b031690816001600160a01b031681525050612540307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611427565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612595908590600090869030904290600401612a2a565b600060405180830381600087803b1580156125af57600080fd5b505af1158015611b24573d6000803e3d6000fd5b6125ee307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611427565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612678573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061269d9190612a9b565b5050505050565b6000602082840312156126b657600080fd5b5035919050565b600060208083528351808285015260005b818110156126ea578581018301518582016040015282016126ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461142457600080fd5b6000806040838503121561273357600080fd5b823561273e8161270b565b946020939093013593505050565b60008060006060848603121561276157600080fd5b833561276c8161270b565b9250602084013561277c8161270b565b929592945050506040919091013590565b600080600080608085870312156127a357600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156127d157600080fd5b81356123ec8161270b565b801515811461142457600080fd5b600080604083850312156127fd57600080fd5b82356128088161270b565b91506020830135612818816127dc565b809150509250929050565b60006020828403121561283557600080fd5b81356123ec816127dc565b6000806040838503121561285357600080fd5b823561285e8161270b565b915060208301356128188161270b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610bd957610bd96128a3565b6000826128ed57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061290657607f821691505b60208210810361292657634e487b7160e01b600052602260045260246000fd5b50919050565b80820180821115610bd957610bd96128a3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bd957610bd96128a3565b6000602082840312156129ec57600080fd5b81516123ec816127dc565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612a1f57600080fd5b81516123ec8161270b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a7a5784516001600160a01b031683529383019391830191600101612a55565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612ab057600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6273c2b315a4a4bc0596b3c6118563cbc34fc46635f3233af68d787cb8d0ab364736f6c63430008130033
Deployed Bytecode Sourcemap
15967:16752:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21030:265;;;;;;;;;;-1:-1:-1;21030:265:0;;;;;:::i;:::-;;:::i;:::-;;5066:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5980:169;;;;;;;;;;-1:-1:-1;5980:169:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;5980:169:0;1208:187:1;16043:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1591:32:1;;;1573:51;;1561:2;1546:18;16043:51:0;1400:230:1;5387:108:0;;;;;;;;;;-1:-1:-1;5475:12:0;;5387:108;;;1781:25:1;;;1769:2;1754:18;5387:108:0;1635:177:1;17171:33:0;;;;;;;;;;;;;;;;17292;;;;;;;;;;;;;;;;21841:250;;;;;;;;;;-1:-1:-1;21841:250:0;;;;;:::i;:::-;;:::i;17252:33::-;;;;;;;;;;;;;;;;6157:492;;;;;;;;;;-1:-1:-1;6157:492:0;;;;;:::i;:::-;;:::i;16146:53::-;;;;;;;;;;;;16192:6;16146:53;;23054:498;;;;;;;;;;-1:-1:-1;23054:498:0;;;;;:::i;:::-;;:::i;5286:93::-;;;;;;;;;;-1:-1:-1;5286:93:0;;5369:2;3018:36:1;;3006:2;2991:18;5286:93:0;2876:184:1;6657:215:0;;;;;;;;;;-1:-1:-1;6657:215:0;;;;;:::i;:::-;;:::i;16101:38::-;;;;;;;;;;;;;;;16521:33;;;;;;;;;;-1:-1:-1;16521:33:0;;;;;;;;17211:32;;;;;;;;;;;;;;;;24969:126;;;;;;;;;;-1:-1:-1;24969:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;25059:28:0;25035:4;25059:28;;;:19;:28;;;;;;;;;24969:126;17020:31;;;;;;;;;;;;;;;;17060:28;;;;;;;;;;;;;;;;16601:31;;;;;;;;;;-1:-1:-1;16601:31:0;;;;;;;;;;;5503:127;;;;;;;;;;-1:-1:-1;5503:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5604:18:0;5577:7;5604:18;;;;;;;;;;;;5503:127;3186:103;;;;;;;;;;;;;:::i;21543:121::-;;;;;;;;;;;;;:::i;21672:161::-;;;;;;;;;;-1:-1:-1;21672:161:0;;;;;:::i;:::-;;:::i;16288:38::-;;;;;;;;;;-1:-1:-1;16288:38:0;;;;-1:-1:-1;;;;;16288:38:0;;;16907:30;;;;;;;;;;;;;;;;20842:180;;;;;;;;;;;;;:::i;2963:87::-;;;;;;;;;;-1:-1:-1;3036:6:0;;-1:-1:-1;;;;;3036:6:0;2963:87;;17095:31;;;;;;;;;;;;;;;;22187:100;;;;;;;;;;-1:-1:-1;22187:100:0;;;;;:::i;:::-;;:::i;5174:104::-;;;;;;;;;;;;;:::i;24080:304::-;;;;;;;;;;-1:-1:-1;24080:304:0;;;;;:::i;:::-;;:::i;6880:413::-;;;;;;;;;;-1:-1:-1;6880:413:0;;;;;:::i;:::-;;:::i;5638:175::-;;;;;;;;;;-1:-1:-1;5638:175:0;;;;;:::i;:::-;;:::i;16981:32::-;;;;;;;;;;;;;;;;17542:57;;;;;;;;;;-1:-1:-1;17542:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16561:33;;;;;;;;;;-1:-1:-1;16561:33:0;;;;;;;;;;;22864:182;;;;;;;;;;-1:-1:-1;22864:182:0;;;;;:::i;:::-;;:::i;16333:40::-;;;;;;;;;;-1:-1:-1;16333:40:0;;;;-1:-1:-1;;;;;16333:40:0;;;16412:29;;;;;;;;;;;;;;;;16791:39;;;;;;;;;;-1:-1:-1;16791:39:0;;;;;;;;22357:497;;;;;;;;;;-1:-1:-1;22357:497:0;;;;;:::i;:::-;;:::i;16873:27::-;;;;;;;;;;;;;;;;5821:151;;;;;;;;;;-1:-1:-1;5821:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5937:18:0;;;5910:7;5937:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5821:151;17476:57;;;;;;;;;;-1:-1:-1;17476:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16448:33;;;;;;;;;;;;;;;;23560:510;;;;;;;;;;-1:-1:-1;23560:510:0;;;;;:::i;:::-;;:::i;21356:135::-;;;;;;;;;;;;;:::i;17332:35::-;;;;;;;;;;;;;;;;16944:30;;;;;;;;;;;;;;;;3297:201;;;;;;;;;;-1:-1:-1;3297:201:0;;;;;:::i;:::-;;:::i;17133:31::-;;;;;;;;;;;;;;;;16206:75;;;;;;;;;;;;16239:42;16206:75;;16488:24;;;;;;;;;;;;;;;;17374:34;;;;;;;;;;;;;;;;21030:265;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;;;;;;;;;21169:4:::1;21161;21140:13;5475:12:::0;;;5387:108;21140:13:::1;:17;::::0;21156:1:::1;21140:17;:::i;:::-;21139:26;;;;:::i;:::-;21138:35;;;;:::i;:::-;21128:6;:45;;21106:136;;;::::0;-1:-1:-1;;;21106:136:0;;5780:2:1;21106:136:0::1;::::0;::::1;5762:21:1::0;5819:2;5799:18;;;5792:30;5858:34;5838:18;;;5831:62;-1:-1:-1;;;5909:18:1;;;5902:39;5958:19;;21106:136:0::1;5578:405:1::0;21106:136:0::1;21270:17;:6:::0;21280::::1;21270:17;:::i;:::-;21253:14;:34:::0;-1:-1:-1;21030:265:0:o;5066:100::-;5120:13;5153:5;5146:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5066:100;:::o;5980:169::-;6063:4;6080:39;2589:10;6103:7;6112:6;6080:8;:39::i;:::-;-1:-1:-1;6137:4:0;5980:169;;;;;:::o;21841:250::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;21975:4:::1;21967;21946:13;5475:12:::0;;;5387:108;21946:13:::1;:17;::::0;21962:1:::1;21946:17;:::i;:::-;21945:26;;;;:::i;:::-;21944:35;;;;:::i;:::-;21934:6;:45;;21912:131;;;::::0;-1:-1:-1;;;21912:131:0;;6575:2:1;21912:131:0::1;::::0;::::1;6557:21:1::0;6614:2;6594:18;;;6587:30;6653:34;6633:18;;;6626:62;-1:-1:-1;;;6704:18:1;;;6697:34;6748:19;;21912:131:0::1;6373:400:1::0;21912:131:0::1;22066:17;:6:::0;22076::::1;22066:17;:::i;:::-;22054:9;:29:::0;-1:-1:-1;21841:250:0:o;6157:492::-;6297:4;6314:36;6324:6;6332:9;6343:6;6314:9;:36::i;:::-;-1:-1:-1;;;;;6390:19:0;;6363:24;6390:19;;;:11;:19;;;;;;;;2589:10;6390:33;;;;;;;;6442:26;;;;6434:79;;;;-1:-1:-1;;;6434:79:0;;6980:2:1;6434:79:0;;;6962:21:1;7019:2;6999:18;;;6992:30;7058:34;7038:18;;;7031:62;-1:-1:-1;;;7109:18:1;;;7102:38;7157:19;;6434:79:0;6778:404:1;6434:79:0;6549:57;6558:6;2589:10;6599:6;6580:16;:25;6549:8;:57::i;:::-;-1:-1:-1;6637:4:0;;6157:492;-1:-1:-1;;;;6157:492:0:o;23054:498::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;23245:15:::1;:31:::0;;;23287:15:::1;:31:::0;;;23329:17:::1;:35:::0;;;23375:16:::1;:33:::0;;;23394:14;23349:15;23434:33:::1;23305:13:::0;23263;23434:33:::1;:::i;:::-;:53;;;;:::i;:::-;:72;;;;:::i;:::-;23419:12;:87:::0;;;23541:2:::1;-1:-1:-1::0;23525:18:0::1;23517:27;;;::::0;::::1;;23054:498:::0;;;;:::o;6657:215::-;2589:10;6745:4;6794:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6794:34:0;;;;;;;;;;6745:4;;6762:80;;6785:7;;6794:47;;6831:10;;6794:47;:::i;:::-;6762:8;:80::i;3186:103::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;3251:30:::1;3278:1;3251:18;:30::i;:::-;3186:103::o:0;21543:121::-;3036:6;;21595:4;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;-1:-1:-1;21612:14:0::1;:22:::0;;-1:-1:-1;;21612:22:0::1;::::0;;;21543:121;:::o;21672:161::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21785:33:0;;;::::1;;::::0;;;:25:::1;:33;::::0;;;;:40;;-1:-1:-1;;21785:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21672:161::o;20842:180::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;20903:13:::1;::::0;::::1;::::0;::::1;;;20902:14;20894:23;;;::::0;::::1;;20928:13;:20:::0;;20973:12:::1;20959:11;:26:::0;-1:-1:-1;;20996:18:0;;;;;20842:180::o;22187:100::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;22258:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22258:21:0;;::::1;::::0;;;::::1;::::0;;22187:100::o;5174:104::-;5230:13;5263:7;5256:14;;;;;:::i;24080:304::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;24224:13:::1;-1:-1:-1::0;;;;;24216:21:0::1;:4;-1:-1:-1::0;;;;;24216:21:0::1;::::0;24194:128:::1;;;::::0;-1:-1:-1;;;24194:128:0;;7519:2:1;24194:128:0::1;::::0;::::1;7501:21:1::0;7558:2;7538:18;;;7531:30;7597:34;7577:18;;;7570:62;7668:27;7648:18;;;7641:55;7713:19;;24194:128:0::1;7317:421:1::0;24194:128:0::1;24335:41;24364:4;24370:5;24335:28;:41::i;:::-;24080:304:::0;;:::o;6880:413::-;2589:10;6973:4;7017:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7017:34:0;;;;;;;;;;7070:35;;;;7062:85;;;;-1:-1:-1;;;7062:85:0;;7945:2:1;7062:85:0;;;7927:21:1;7984:2;7964:18;;;7957:30;8023:34;8003:18;;;7996:62;-1:-1:-1;;;8074:18:1;;;8067:35;8119:19;;7062:85:0;7743:401:1;7062:85:0;7183:67;2589:10;7206:7;7234:15;7215:16;:34;7183:8;:67::i;:::-;-1:-1:-1;7281:4:0;;6880:413;-1:-1:-1;;;6880:413:0:o;5638:175::-;5724:4;5741:42;2589:10;5765:9;5776:6;5741:9;:42::i;22864:182::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22949:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22949:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23004:34;;1348:41:1;;;23004:34:0::1;::::0;1321:18:1;23004:34:0::1;;;;;;;22864:182:::0;;:::o;22357:497::-;3036:6;;22465:4;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;22544:6:::1;22523:13;5475:12:::0;;;5387:108;22523:13:::1;:17;::::0;22539:1:::1;22523:17;:::i;:::-;22522:28;;;;:::i;:::-;22509:9;:41;;22487:144;;;::::0;-1:-1:-1;;;22487:144:0;;8351:2:1;22487:144:0::1;::::0;::::1;8333:21:1::0;8390:2;8370:18;;;8363:30;8429:34;8409:18;;;8402:62;-1:-1:-1;;;8480:18:1;;;8473:51;8541:19;;22487:144:0::1;8149:417:1::0;22487:144:0::1;22699:4;22678:13;5475:12:::0;;;5387:108;22678:13:::1;:17;::::0;22694:1:::1;22678:17;:::i;:::-;22677:26;;;;:::i;:::-;22664:9;:39;;22642:141;;;::::0;-1:-1:-1;;;22642:141:0;;8773:2:1;22642:141:0::1;::::0;::::1;8755:21:1::0;8812:2;8792:18;;;8785:30;8851:34;8831:18;;;8824:62;-1:-1:-1;;;8902:18:1;;;8895:50;8962:19;;22642:141:0::1;8571:416:1::0;22642:141:0::1;-1:-1:-1::0;22794:18:0::1;:30:::0;22842:4:::1;::::0;22357:497::o;23560:510::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;23752:16:::1;:32:::0;;;23795:16:::1;:32:::0;;;23838:18:::1;:36:::0;;;23885:17:::1;:34:::0;;;23905:14;23859:15;23946:35:::1;23814:13:::0;23771;23946:35:::1;:::i;:::-;:56;;;;:::i;:::-;:76;;;;:::i;:::-;23930:13;:92:::0;;;24058:2:::1;-1:-1:-1::0;24041:19:0::1;24033:28;;;::::0;::::1;21356:135:::0;3036:6;;21416:4;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;-1:-1:-1;21433:20:0::1;:28:::0;;-1:-1:-1;;21433:28:0::1;::::0;;;21356:135;:::o;3297:201::-;3036:6;;-1:-1:-1;;;;;3036:6:0;2589:10;3098:23;3090:68;;;;-1:-1:-1;;;3090:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3386:22:0;::::1;3378:73;;;::::0;-1:-1:-1;;;3378:73:0;;9194:2:1;3378:73:0::1;::::0;::::1;9176:21:1::0;9233:2;9213:18;;;9206:30;9272:34;9252:18;;;9245:62;-1:-1:-1;;;9323:18:1;;;9316:36;9369:19;;3378:73:0::1;8992:402:1::0;3378:73:0::1;3462:28;3481:8;3462:18;:28::i;:::-;3297:201:::0;:::o;10059:380::-;-1:-1:-1;;;;;10195:19:0;;10187:68;;;;-1:-1:-1;;;10187:68:0;;9601:2:1;10187:68:0;;;9583:21:1;9640:2;9620:18;;;9613:30;9679:34;9659:18;;;9652:62;-1:-1:-1;;;9730:18:1;;;9723:34;9774:19;;10187:68:0;9399:400:1;10187:68:0;-1:-1:-1;;;;;10274:21:0;;10266:68;;;;-1:-1:-1;;;10266:68:0;;10006:2:1;10266:68:0;;;9988:21:1;10045:2;10025:18;;;10018:30;10084:34;10064:18;;;10057:62;-1:-1:-1;;;10135:18:1;;;10128:32;10177:19;;10266:68:0;9804:398:1;10266:68:0;-1:-1:-1;;;;;10347:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10399:32;;1781:25:1;;;10399:32:0;;1754:18:1;10399:32:0;;;;;;;10059:380;;;:::o;25103:4569::-;-1:-1:-1;;;;;25235:18:0;;25227:68;;;;-1:-1:-1;;;25227:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25314:16:0;;25306:64;;;;-1:-1:-1;;;25306:64:0;;;;;;;:::i;:::-;25385:6;25395:1;25385:11;25381:93;;25413:28;25429:4;25435:2;25439:1;25413:15;:28::i;:::-;25103:4569;;;:::o;25381:93::-;25488:14;;;;25484:2264;;;25524:8;;-1:-1:-1;;;25524:8:0;;;;25519:2218;;25558:13;;;;;;;25553:223;;-1:-1:-1;;;;;25630:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;25659:23:0;;;;;;:19;:23;;;;;;;;25630:52;25596:160;;;;-1:-1:-1;;;25596:160:0;;11219:2:1;25596:160:0;;;11201:21:1;11258:2;11238:18;;;11231:30;-1:-1:-1;;;11277:18:1;;;11270:52;11339:18;;25596:160:0;11017:346:1;25596:160:0;25932:20;;;;25928:641;;;3036:6;;-1:-1:-1;;;;;26007:13:0;;;3036:6;;26007:13;;;;:72;;;26063:15;-1:-1:-1;;;;;26049:30:0;:2;-1:-1:-1;;;;;26049:30:0;;;26007:72;:129;;;;;26122:13;-1:-1:-1;;;;;26108:28:0;:2;-1:-1:-1;;;;;26108:28:0;;;26007:129;25977:573;;;26254:9;26225:39;;;;:28;:39;;;;;;26300:12;-1:-1:-1;26187:258:0;;;;-1:-1:-1;;;26187:258:0;;11570:2:1;26187:258:0;;;11552:21:1;11609:2;11589:18;;;11582:30;11648:34;11628:18;;;11621:62;11719:34;11699:18;;;11692:62;-1:-1:-1;;;11770:19:1;;;11763:40;11820:19;;26187:258:0;11368:477:1;26187:258:0;26501:9;26472:39;;;;:28;:39;;;;;26514:12;26472:54;;25977:573;-1:-1:-1;;;;;26643:31:0;;;;;;:25;:31;;;;;;;;:86;;;;-1:-1:-1;;;;;;26700:29:0;;;;;;:25;:29;;;;;;;;26699:30;26643:86;26617:1105;;;26816:14;;26806:6;:24;;26772:157;;;;-1:-1:-1;;;26772:157:0;;12052:2:1;26772:157:0;;;12034:21:1;12091:2;12071:18;;;12064:30;12130:34;12110:18;;;12103:62;-1:-1:-1;;;12181:18:1;;;12174:45;12236:19;;26772:157:0;11850:411:1;26772:157:0;27012:9;;-1:-1:-1;;;;;5604:18:0;;5577:7;5604:18;;;;;;;;;;;26986:22;;:6;:22;:::i;:::-;:35;;26952:140;;;;-1:-1:-1;;;26952:140:0;;12468:2:1;26952:140:0;;;12450:21:1;12507:2;12487:18;;;12480:30;-1:-1:-1;;;12526:18:1;;;12519:49;12585:18;;26952:140:0;12266:343:1;26952:140:0;26617:1105;;;-1:-1:-1;;;;;27190:29:0;;;;;;:25;:29;;;;;;;;:86;;;;-1:-1:-1;;;;;;27245:31:0;;;;;;:25;:31;;;;;;;;27244:32;27190:86;27164:558;;;27363:14;;27353:6;:24;;27319:158;;;;-1:-1:-1;;;27319:158:0;;12816:2:1;27319:158:0;;;12798:21:1;12855:2;12835:18;;;12828:30;12894:34;12874:18;;;12867:62;-1:-1:-1;;;12945:18:1;;;12938:46;13001:19;;27319:158:0;12614:412:1;27164:558:0;-1:-1:-1;;;;;27508:29:0;;;;;;:25;:29;;;;;;;;27503:219;;27622:9;;-1:-1:-1;;;;;5604:18:0;;5577:7;5604:18;;;;;;;;;;;27596:22;;:6;:22;:::i;:::-;:35;;27562:140;;;;-1:-1:-1;;;27562:140:0;;12468:2:1;27562:140:0;;;12450:21:1;12507:2;12487:18;;;12480:30;-1:-1:-1;;;12526:18:1;;;12519:49;12585:18;;27562:140:0;12266:343:1;27562:140:0;27807:4;27758:28;5604:18;;;;;;;;;;;27815;27824:4;27830:2;27815:8;:18::i;:::-;27883;;27859:42;;;;;;;27930:35;;-1:-1:-1;27954:11:0;;;;;;;27930:35;:61;;;;-1:-1:-1;27983:8:0;;-1:-1:-1;;;27983:8:0;;;;27982:9;27930:61;:110;;;;-1:-1:-1;;;;;;28009:31:0;;;;;;:25;:31;;;;;;;;28008:32;27930:110;:153;;;;-1:-1:-1;;;;;;28058:25:0;;;;;;:19;:25;;;;;;;;28057:26;27930:153;:194;;;;-1:-1:-1;;;;;;28101:23:0;;;;;;:19;:23;;;;;;;;28100:24;27930:194;27912:326;;;28151:8;:15;;-1:-1:-1;;;;28151:15:0;-1:-1:-1;;;28151:15:0;;;28183:10;:8;:10::i;:::-;28210:8;:16;;-1:-1:-1;;;;28210:16:0;;;27912:326;28266:8;;-1:-1:-1;;;;;28289:25:0;;28250:12;28289:25;;;:19;:25;;;;;;28266:8;-1:-1:-1;;;28266:8:0;;;;;28265:9;;28289:25;28285:73;;;28318:29;28330:4;28336:2;28340:6;28318:11;:29::i;:::-;28349:7;;;25103:4569;;;:::o;28285:73::-;-1:-1:-1;;;;;28372:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;28401:23:0;;;;;;:19;:23;;;;;;;;28372:52;28368:100;;;-1:-1:-1;28451:5:0;28368:100;28478:12;28509:7;28505:1116;;;-1:-1:-1;;;;;28537:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;28586:1;28570:13;;:17;28537:50;28533:943;;;28615:34;28645:3;28615:25;28626:13;;28615:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;28608:41;;28718:13;;28698:16;;28691:4;:23;;;;:::i;:::-;28690:41;;;;:::i;:::-;28668:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;28804:13:0;;28782:18;;28775:25;;:4;:25;:::i;:::-;28774:43;;;;:::i;:::-;28750:20;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;;28886:13:0;;28866:16;;28859:23;;:4;:23;:::i;:::-;28858:41;;;;:::i;:::-;28836:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;28970:13:0;;28949:17;;28942:24;;:4;:24;:::i;:::-;28941:42;;;;:::i;:::-;28918:19;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;28533:943:0;;-1:-1:-1;28533:943:0;;-1:-1:-1;;;;;29022:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;29072:1;29057:12;;:16;29022:51;29018:458;;;29101:33;29130:3;29101:24;29112:12;;29101:6;:10;;:24;;;;:::i;:33::-;29094:40;;29202:12;;29183:15;;29176:4;:22;;;;:::i;:::-;29175:39;;;;:::i;:::-;29153:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;29286:12:0;;29265:17;;29258:24;;:4;:24;:::i;:::-;29257:41;;;;:::i;:::-;29233:20;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;29366:12:0;;29347:15;;29340:22;;:4;:22;:::i;:::-;29339:39;;;;:::i;:::-;29317:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;29448:12:0;;29428:16;;29421:23;;:4;:23;:::i;:::-;29420:40;;;;:::i;:::-;29397:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;29018:458:0;29494:8;;29490:91;;29523:42;29539:4;29553;29560;29523:15;:42::i;:::-;29595:14;29605:4;29595:14;;:::i;:::-;;;28505:1116;29631:33;29647:4;29653:2;29657:6;29631:15;:33::i;:::-;25216:4456;;;;25103:4569;;;:::o;3506:191::-;3599:6;;;-1:-1:-1;;;;;3616:17:0;;;-1:-1:-1;;;;;;3616:17:0;;;;;;;3649:40;;3599:6;;;3616:17;3599:6;;3649:40;;3580:16;;3649:40;3569:128;3506:191;:::o;24392:186::-;-1:-1:-1;;;;;24475:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;24475:39:0;;;;;;;;;;24530:40;;24475:39;;:31;24530:40;;;24392:186;;:::o;7301:733::-;-1:-1:-1;;;;;7441:20:0;;7433:70;;;;-1:-1:-1;;;7433:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7522:23:0;;7514:71;;;;-1:-1:-1;;;7514:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7682:17:0;;7658:21;7682:17;;;;;;;;;;;7718:23;;;;7710:74;;;;-1:-1:-1;;;7710:74:0;;13366:2:1;7710:74:0;;;13348:21:1;13405:2;13385:18;;;13378:30;13444:34;13424:18;;;13417:62;-1:-1:-1;;;13495:18:1;;;13488:36;13541:19;;7710:74:0;13164:402:1;7710:74:0;-1:-1:-1;;;;;7820:17:0;;;:9;:17;;;;;;;;;;;7840:22;;;7820:42;;7884:20;;;;;;;;:30;;7856:6;;7820:9;7884:30;;7856:6;;7884:30;:::i;:::-;;;;;;;;7949:9;-1:-1:-1;;;;;7932:35:0;7941:6;-1:-1:-1;;;;;7932:35:0;;7960:6;7932:35;;;;1781:25:1;;1769:2;1754:18;;1635:177;7932:35:0;;;;;;;;7980:46;25103:4569;24586:375;-1:-1:-1;;;;;24654:31:0;;;;;;:25;:31;;;;;;;;24650:137;;;24706:9;-1:-1:-1;;;;;24706:15:0;;;;;;:49;;-1:-1:-1;24745:9:0;24725:30;;;;:19;:30;;;;;;;;24706:49;24702:74;;;24759:9;:14;;-1:-1:-1;;;;;;24759:14:0;;-1:-1:-1;;;;;24759:14:0;;;;;;24702:74;-1:-1:-1;;;;;24802:25:0;;;;;;:19;:25;;;;;;;;24801:26;:54;;;;-1:-1:-1;;;;;;24832:23:0;;;;;;:19;:23;;;;;;;;24831:24;24801:54;:94;;;;-1:-1:-1;24872:9:0;;;;;-1:-1:-1;;;;;24872:9:0;:23;;24801:94;24797:157;;;24906:9;;24899:43;;-1:-1:-1;;;24899:43:0;;-1:-1:-1;;;;;13837:15:1;;;24899:43:0;;;13819:34:1;13889:15;;;13869:18;;;13862:43;24940:1:0;13921:18:1;;;13914:34;24906:9:0;;;;;;;;24899:30;;13754:18:1;;24899:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30806:1910::-;30889:4;30845:23;5604:18;;;;;;;;;;;30845:50;;30906:25;31038:19;;31002:20;;30968:18;;30934;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;:123;;;;:::i;:::-;30906:151;-1:-1:-1;31068:12:0;31097:20;;;:46;;-1:-1:-1;31121:22:0;;31097:46;31093:85;;;31160:7;;;30806:1910::o;31093:85::-;31212:18;;:23;;31233:2;31212:23;:::i;:::-;31194:15;:41;31190:115;;;31270:18;;:23;;31291:2;31270:23;:::i;:::-;31252:41;;31190:115;31366:23;31453:1;31433:17;31411:18;;31393:15;:36;;;;:::i;:::-;31392:58;;;;:::i;:::-;:62;;;;:::i;:::-;31366:88;-1:-1:-1;31465:26:0;31494:36;:15;31366:88;31494:19;:36::i;:::-;31465:65;-1:-1:-1;31571:21:0;31605:36;31465:65;31605:16;:36::i;:::-;31654:18;31675:44;:21;31701:17;31675:25;:44::i;:::-;31654:65;;31732:18;31753:57;31792:17;31753:34;31768:18;;31753:10;:14;;:34;;;;:::i;:57::-;31732:78;;31821:25;31849:59;31890:17;31849:36;31864:20;;31849:10;:14;;:36;;;;:::i;:59::-;31821:87;;31919:24;31946:58;31986:17;31946:35;31961:19;;31946:10;:14;;:35;;;;:::i;:58::-;31919:85;-1:-1:-1;32017:23:0;31919:85;32069:17;32043:23;32056:10;32043;:23;:::i;:::-;:43;;;;:::i;:::-;:62;;;;:::i;:::-;32139:1;32118:18;:22;;;32151:18;:22;;;32184:20;:24;;;32219:19;:23;;;32277:17;;32269:61;;32017:88;;-1:-1:-1;;;;;;32277:17:0;;32308;;32269:61;32139:1;32269:61;32308:17;32277;32269:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32255:75:0;;-1:-1:-1;;32347:19:0;;;;;:42;;;32388:1;32370:15;:19;32347:42;32343:278;;;32406:46;32419:15;32436;32406:12;:46::i;:::-;32576:18;;32472:137;;;14621:25:1;;;14677:2;14662:18;;14655:34;;;14705:18;;;14698:34;;;;32472:137:0;;;;;;14609:2:1;32472:137:0;;;32343:278;32653:15;;32645:63;;-1:-1:-1;;;;;32653:15:0;;;;32682:21;;32645:63;;;;32682:21;32653:15;32645:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;30806:1910:0:o;9538:513::-;-1:-1:-1;;;;;9750:17:0;;9726:21;9750:17;;;;;;;;;;;9786:10;9778:23;;;;-1:-1:-1;;;9778:23:0;;14945:2:1;9778:23:0;;;14927:21:1;-1:-1:-1;14964:18:1;;;14957:29;15003:18;;9778:23:0;14743:284:1;1417:98:0;1475:7;1502:5;1506:1;1502;:5;:::i;:::-;1495:12;1417:98;-1:-1:-1;;;1417:98:0:o;1523:::-;1581:7;1608:5;1612:1;1608;:5;:::i;1311:98::-;1369:7;1396:5;1400:1;1396;:5;:::i;29680:589::-;29830:16;;;29844:1;29830:16;;;;;;;;29806:21;;29830:16;;;;;;;;;;-1:-1:-1;29830:16:0;29806:40;;29875:4;29857;29862:1;29857:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;29857:23:0;;;-1:-1:-1;;;;;29857:23:0;;;;;29901:15;-1:-1:-1;;;;;29901:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29891:4;29896:1;29891:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;29891:32:0;;;-1:-1:-1;;;;;29891:32:0;;;;;29936:62;29953:4;29968:15;29986:11;29936:8;:62::i;:::-;30037:224;;-1:-1:-1;;;30037:224:0;;-1:-1:-1;;;;;30037:15:0;:66;;;;:224;;30118:11;;30144:1;;30188:4;;30215;;30235:15;;30037:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30277:521;30425:62;30442:4;30457:15;30475:11;30425:8;:62::i;:::-;30530:260;;-1:-1:-1;;;30530:260:0;;30602:4;30530:260;;;16878:34:1;16928:18;;;16921:34;;;30648:1:0;16971:18:1;;;16964:34;;;17014:18;;;17007:34;30742:6:0;17057:19:1;;;17050:44;30764:15:0;17110:19:1;;;17103:35;30530:15:0;-1:-1:-1;;;;;30530:31:0;;;;30569:9;;16812:19:1;;30530:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30277:521;;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2486:385::-;2572:6;2580;2588;2596;2649:3;2637:9;2628:7;2624:23;2620:33;2617:53;;;2666:1;2663;2656:12;2617:53;-1:-1:-1;;2689:23:1;;;2759:2;2744:18;;2731:32;;-1:-1:-1;2810:2:1;2795:18;;2782:32;;2861:2;2846:18;2833:32;;-1:-1:-1;2486:385:1;-1:-1:-1;2486:385:1:o;3065:247::-;3124:6;3177:2;3165:9;3156:7;3152:23;3148:32;3145:52;;;3193:1;3190;3183:12;3145:52;3232:9;3219:23;3251:31;3276:5;3251:31;:::i;3317:118::-;3403:5;3396:13;3389:21;3382:5;3379:32;3369:60;;3425:1;3422;3415:12;3440:382;3505:6;3513;3566:2;3554:9;3545:7;3541:23;3537:32;3534:52;;;3582:1;3579;3572:12;3534:52;3621:9;3608:23;3640:31;3665:5;3640:31;:::i;:::-;3690:5;-1:-1:-1;3747:2:1;3732:18;;3719:32;3760:30;3719:32;3760:30;:::i;:::-;3809:7;3799:17;;;3440:382;;;;;:::o;4051:241::-;4107:6;4160:2;4148:9;4139:7;4135:23;4131:32;4128:52;;;4176:1;4173;4166:12;4128:52;4215:9;4202:23;4234:28;4256:5;4234:28;:::i;4297:388::-;4365:6;4373;4426:2;4414:9;4405:7;4401:23;4397:32;4394:52;;;4442:1;4439;4432:12;4394:52;4481:9;4468:23;4500:31;4525:5;4500:31;:::i;:::-;4550:5;-1:-1:-1;4607:2:1;4592:18;;4579:32;4620:33;4579:32;4620:33;:::i;4690:356::-;4892:2;4874:21;;;4911:18;;;4904:30;4970:34;4965:2;4950:18;;4943:62;5037:2;5022:18;;4690:356::o;5051:127::-;5112:10;5107:3;5103:20;5100:1;5093:31;5143:4;5140:1;5133:15;5167:4;5164:1;5157:15;5183:168;5256:9;;;5287;;5304:15;;;5298:22;;5284:37;5274:71;;5325:18;;:::i;5356:217::-;5396:1;5422;5412:132;;5466:10;5461:3;5457:20;5454:1;5447:31;5501:4;5498:1;5491:15;5529:4;5526:1;5519:15;5412:132;-1:-1:-1;5558:9:1;;5356:217::o;5988:380::-;6067:1;6063:12;;;;6110;;;6131:61;;6185:4;6177:6;6173:17;6163:27;;6131:61;6238:2;6230:6;6227:14;6207:18;6204:38;6201:161;;6284:10;6279:3;6275:20;6272:1;6265:31;6319:4;6316:1;6309:15;6347:4;6344:1;6337:15;6201:161;;5988:380;;;:::o;7187:125::-;7252:9;;;7273:10;;;7270:36;;;7286:18;;:::i;10207:401::-;10409:2;10391:21;;;10448:2;10428:18;;;10421:30;10487:34;10482:2;10467:18;;10460:62;-1:-1:-1;;;10553:2:1;10538:18;;10531:35;10598:3;10583:19;;10207:401::o;10613:399::-;10815:2;10797:21;;;10854:2;10834:18;;;10827:30;10893:34;10888:2;10873:18;;10866:62;-1:-1:-1;;;10959:2:1;10944:18;;10937:33;11002:3;10987:19;;10613:399::o;13031:128::-;13098:9;;;13119:11;;;13116:37;;;13133:18;;:::i;13959:245::-;14026:6;14079:2;14067:9;14058:7;14054:23;14050:32;14047:52;;;14095:1;14092;14085:12;14047:52;14127:9;14121:16;14146:28;14168:5;14146:28;:::i;15164:127::-;15225:10;15220:3;15216:20;15213:1;15206:31;15256:4;15253:1;15246:15;15280:4;15277:1;15270:15;15296:251;15366:6;15419:2;15407:9;15398:7;15394:23;15390:32;15387:52;;;15435:1;15432;15425:12;15387:52;15467:9;15461:16;15486:31;15511:5;15486:31;:::i;15552:980::-;15814:4;15862:3;15851:9;15847:19;15893:6;15882:9;15875:25;15919:2;15957:6;15952:2;15941:9;15937:18;15930:34;16000:3;15995:2;15984:9;15980:18;15973:31;16024:6;16059;16053:13;16090:6;16082;16075:22;16128:3;16117:9;16113:19;16106:26;;16167:2;16159:6;16155:15;16141:29;;16188:1;16198:195;16212:6;16209:1;16206:13;16198:195;;;16277:13;;-1:-1:-1;;;;;16273:39:1;16261:52;;16368:15;;;;16333:12;;;;16309:1;16227:9;16198:195;;;-1:-1:-1;;;;;;;16449:32:1;;;;16444:2;16429:18;;16422:60;-1:-1:-1;;;16513:3:1;16498:19;16491:35;16410:3;15552:980;-1:-1:-1;;;15552:980:1:o;17149:306::-;17237:6;17245;17253;17306:2;17294:9;17285:7;17281:23;17277:32;17274:52;;;17322:1;17319;17312:12;17274:52;17351:9;17345:16;17335:26;;17401:2;17390:9;17386:18;17380:25;17370:35;;17445:2;17434:9;17430:18;17424:25;17414:35;;17149:306;;;;;:::o
Swarm Source
ipfs://f6273c2b315a4a4bc0596b3c6118563cbc34fc46635f3233af68d787cb8d0ab3
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.