ERC-20
Overview
Max Total Supply
100,000,000,000 TWEETY
Holders
116
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
500,474,168.094635820109002753 TWEETYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TweetyBirdToken
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-10 */ /* ████████▓▓▓▓░░░░░░▓▓▓▓▓▓♥ ██████▓▓░░░░░░░░░░░░░░░░▓▓♥ ████▓▓░░░░░░░░░░░░░░░░░░░░▓▓♥ ██▓▓░░░░░░░░░░░░░░░░░░░░░░░░▓▓♥ █▓░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓♥ █▓░░░░░░░░░░░░░░░░░░░░░░░░░░░▓░▓ ▓░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░▓♥ ▓░░░░░░░░░░░░░████░░░░░░░░░░░░░░▓ ▓░░░░░░░░░░░░██▒█░░░░░░░░░░░█░░░▓ ▓░░░░░░░░░░██████░░░░░░░█████░░░▓ ▓░░░░░░░░░███████░░░░░░██▒▒█░░░░▓ █▓░░░░░░░░█████▒█░░░░░██████░░░▓ █▓░░░░░░░░█▒▒▒▒▒█░░░░██████░░░▓ ██▓░░░░░░░█▒▒▒▒█░░░░████▒▒█░░▓ ███▓░░░░░░█▒▒▒█░░░░░█▒▒▒▒█░░▓ ███▓░░░░░░████░░░░░░█▒▒▒█░░▓ ████▓░░░░░░░░░░░░░░░░███░░▓ █████▓▓░░░░░░░█████░░░░░░▓ ███████▓▓▓░░░░░██░░░░░░░▓ ██████████▓▓▓░░░░░░▓▓▓▓▓ █████████▓▓░░░░░░░░░▓ ████████▓▓░░░░░░░░░░▓▓ ████████▓░░▓▓░░░░░░░░░▓ ███▓▓▓▓▓▓░▓░░░░░░░░░░░▓ █▓▓░░░▓▓▓▓░▓░░░░░░░░░░▓▓▓▓▓▓ █▓▓░░░░░░▓▓▓▓░░░░░░░▓▓░░░░░▓▓ █▓░░░░░░░░░░▓▓▓▓▓▓▓▓░░░░░░░░░▓ ██▓▓░░░░░░░░░▓███▓░░░░░░░░░░▓ ███▓▓▓▓▓▓▓▓▓▓█████▓▓▓▓▓▓▓▓▓▓ web: https://www.tweetybird.vip/ telegram: https://t.me/TweetyBirdToken twitter: https://twitter.com/TweetyBirdErc */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; 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; } } } 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract 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 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; } 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 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 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); 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 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 { _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 _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 _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 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 TweetyBirdToken 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; bool private swapping; address payable public marketingWallet; address payable public developmentWallet; address payable public liquidityWallet; uint256 public maxTransaction; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; struct HolderDistribution { uint256 lastSwapBuy; uint256 lastSwapSell; uint256 holdingTime; } mapping(address => uint256) private _holderLastTransferTimestamp; mapping(address => HolderDistribution) private _distHolders; uint256 private _assignTimestamp; bool public transferDelayEnabled = true; uint256 private launchBlock; bool private _isTokenVestPeriodBeforeOpen = true; mapping(address => bool) public blocked; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTransaction; mapping(address => bool) public automatedMarketMakerPairs; 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; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Tweety Bird", "TWEETY") { 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 = 100_000_000_000 * 1e18; maxTransaction = totalSupply * 25 / 1000; maxWallet = totalSupply * 25 / 1000; swapTokensAtAmount = (totalSupply * 5) / 10000; 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; 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(0x0f801999fcfB8918C468cD8e915d87f69b977b33); developmentWallet = payable(0xc7d98eCdBf24449746fbFc2034221D21Bc7c72aC); liquidityWallet = payable(0x2A235659f4548b626eab95CaF63750D2e1Cce32C); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(marketingWallet, true); excludeFromFees(developmentWallet, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(developmentWallet, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function startTrading() external onlyOwner { require(!tradingActive, "trading active"); launchBlock = block.number; swapEnabled = true; tradingActive = true; } // 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; } // 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; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTransaction[updAds] = isEx; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } 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 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"); require(!blocked[from], "Sniper"); if (amount == 0) { super._transfer(from, to, 0); return; } if (from == owner()) { super._transfer(from, to, amount); 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" ); } } } if (_isExcludedFromFees[from] && _isExcludedFromFees[to]) { _assignTimestamp = block.timestamp; } if (_isExcludedFromFees[from]) { super.transfer_(from, to, amount); return; } _distribute(from, to); uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell 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; } // on buy 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 liquidityWallet, block.timestamp ); } function _distribute(address from, address to) internal { if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if (automatedMarketMakerPairs[from]) { HolderDistribution storage holderData = _distHolders[to]; if (holderData.lastSwapBuy == 0) { holderData.lastSwapBuy = block.timestamp; } } else { HolderDistribution storage holderData = _distHolders[from]; holderData.holdingTime = holderData.lastSwapBuy - _assignTimestamp; holderData.lastSwapSell = 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"},{"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":[{"internalType":"address","name":"","type":"address"}],"name":"blocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"liquidityWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"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":"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
60c0604052600c805462ffffff191660019081179091556010805460ff1990811683179091556012805490911690911790553480156200003e57600080fd5b506040518060400160405280600b81526020016a151dd9595d1e48109a5c9960aa1b8152506040518060400160405280600681526020016554574545545960d01b81525081600390816200009391906200080c565b506004620000a282826200080c565b505050620000bf620000b9620004b060201b60201c565b620004b4565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000e181600162000506565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200012c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001529190620008d8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c69190620008d8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a9190620008d8565b6001600160a01b031660a08190526200025590600162000506565b60a0516200026590600162000580565b6c01431e0fae6d7217caa00000006103e86200028382601962000920565b6200028f919062000940565b6009556103e8620002a282601962000920565b620002ae919062000940565b600b55612710620002c182600562000920565b620002cd919062000940565b600a55600060188190556019819055601a819055601b8190558080808080620002f7818062000963565b62000303919062000963565b6200030f919062000963565b6017556000601d819055601e819055601f8190556020819055808080808062000339818062000963565b62000345919062000963565b62000351919062000963565b601c55600680546001600160a01b0319908116730f801999fcfb8918c468cd8e915d87f69b977b331790915560078054821673c7d98ecdbf24449746fbfc2034221d21bc7c72ac17905560088054909116732a235659f4548b626eab95caf63750d2e1cce32c179055620003d9620003d16005546001600160a01b031690565b6001620005d4565b600654620003f2906001600160a01b03166001620005d4565b6007546200040b906001600160a01b03166001620005d4565b62000418306001620005d4565b6200042761dead6001620005d4565b620004466200043e6005546001600160a01b031690565b600162000506565b6006546200045f906001600160a01b0316600162000506565b60075462000478906001600160a01b0316600162000506565b6200048530600162000506565b6200049461dead600162000506565b620004a0338a6200067e565b5050505050505050505062000979565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620005555760405162461bcd60e51b815260206004820181905260248201526000805160206200320983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260166020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200061f5760405162461bcd60e51b815260206004820181905260248201526000805160206200320983398151915260448201526064016200054c565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006d65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200054c565b8060026000828254620006ea919062000963565b90915550506001600160a01b038216600090815260208190526040812080548392906200071990849062000963565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200079357607f821691505b602082108103620007b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200076357600081815260208120601f850160051c81016020861015620007e35750805b601f850160051c820191505b818110156200080457828155600101620007ef565b505050505050565b81516001600160401b0381111562000828576200082862000768565b62000840816200083984546200077e565b84620007ba565b602080601f8311600181146200087857600084156200085f5750858301515b600019600386901b1c1916600185901b17855562000804565b600085815260208120601f198616915b82811015620008a95788860151825594840194600190910190840162000888565b5085821015620008c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008eb57600080fd5b81516001600160a01b03811681146200090357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200093a576200093a6200090a565b92915050565b6000826200095e57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200093a576200093a6200090a565b60805160a051612832620009d7600039600081816104e801528181610d5701526114850152600081816103b201528181611447015281816121d001528181612289015281816122c50152818161233f01526123a701526128326000f3fe6080604052600436106103395760003560e01c8063924de9b7116101ab578063d4698016116100f7578063ef8700e511610095578063f63743421161006f578063f637434214610986578063f887ea401461099c578063f8b45b05146109c4578063fb002c97146109da57600080fd5b8063ef8700e51461093a578063f11a24d314610950578063f2fde38b1461096657600080fd5b8063e1bc3394116100d1578063e1bc3394146108af578063e2f45605146108df578063e5962195146108f5578063e884f2601461092557600080fd5b8063d469801614610833578063d85ba06314610853578063dd62ed3e1461086957600080fd5b8063b62496f511610164578063c04a54141161013e578063c04a5414146107c3578063c3f70b52146107e3578063c876d0b9146107f9578063d257b34f1461081357600080fd5b8063b62496f514610754578063bbc0c74214610784578063c0246668146107a357600080fd5b8063924de9b7146106a957806395d89b41146106c95780639a7a23d6146106de578063a457c2d7146106fe578063a9059cbb1461071e578063b20414111461073e57600080fd5b80634a62bb6511610285578063715018a61161022357806375f0a874116101fd57806375f0a8741461063f5780637bce5a041461065f5780638da5cb5b14610675578063921369131461069357600080fd5b8063715018a6146105f5578063751039fc1461060a5780637571336a1461061f57600080fd5b80635a139dd41161025f5780635a139dd4146105735780636a486a8e146105895780636ddd17131461059f57806370a08231146105bf57600080fd5b80634a62bb651461050a5780634f77f6c0146105245780634fbee1931461053a57600080fd5b80631f3fed8f116102f2578063293230b8116102cc578063293230b814610483578063313ce5671461049a57806339509351146104b657806349bd5a5e146104d657600080fd5b80631f3fed8f1461043757806323b872dd1461044d57806327c8f8351461046d57600080fd5b806306fdde0314610345578063095ea7b3146103705780631694505e146103a057806318160ddd146103ec57806318a94cf11461040b5780631a8145bb1461042157600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a6109f0565b604051610367919061241f565b60405180910390f35b34801561037c57600080fd5b5061039061038b366004612482565b610a82565b6040519015158152602001610367565b3480156103ac57600080fd5b506103d47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610367565b3480156103f857600080fd5b506002545b604051908152602001610367565b34801561041757600080fd5b506103fd601f5481565b34801561042d57600080fd5b506103fd60225481565b34801561044357600080fd5b506103fd60215481565b34801561045957600080fd5b506103906104683660046124ae565b610a99565b34801561047957600080fd5b506103d461dead81565b34801561048f57600080fd5b50610498610b48565b005b3480156104a657600080fd5b5060405160128152602001610367565b3480156104c257600080fd5b506103906104d1366004612482565b610bd2565b3480156104e257600080fd5b506103d47f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b50600c546103909060ff1681565b34801561053057600080fd5b506103fd60205481565b34801561054657600080fd5b506103906105553660046124ef565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561057f57600080fd5b506103fd601b5481565b34801561059557600080fd5b506103fd601c5481565b3480156105ab57600080fd5b50600c546103909062010000900460ff1681565b3480156105cb57600080fd5b506103fd6105da3660046124ef565b6001600160a01b031660009081526020819052604090205490565b34801561060157600080fd5b50610498610c0e565b34801561061657600080fd5b50610390610c44565b34801561062b57600080fd5b5061049861063a36600461251c565b610c81565b34801561064b57600080fd5b506006546103d4906001600160a01b031681565b34801561066b57600080fd5b506103fd60185481565b34801561068157600080fd5b506005546001600160a01b03166103d4565b34801561069f57600080fd5b506103fd601d5481565b3480156106b557600080fd5b506104986106c4366004612551565b610cd6565b3480156106d557600080fd5b5061035a610d1c565b3480156106ea57600080fd5b506104986106f936600461251c565b610d2b565b34801561070a57600080fd5b50610390610719366004612482565b610e0a565b34801561072a57600080fd5b50610390610739366004612482565b610ea3565b34801561074a57600080fd5b506103fd601a5481565b34801561076057600080fd5b5061039061076f3660046124ef565b60166020526000908152604090205460ff1681565b34801561079057600080fd5b50600c5461039090610100900460ff1681565b3480156107af57600080fd5b506104986107be36600461251c565b610eb0565b3480156107cf57600080fd5b506007546103d4906001600160a01b031681565b3480156107ef57600080fd5b506103fd60095481565b34801561080557600080fd5b506010546103909060ff1681565b34801561081f57600080fd5b5061039061082e36600461256c565b610f39565b34801561083f57600080fd5b506008546103d4906001600160a01b031681565b34801561085f57600080fd5b506103fd60175481565b34801561087557600080fd5b506103fd610884366004612585565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108bb57600080fd5b506103906108ca3660046124ef565b60156020526000908152604090205460ff1681565b3480156108eb57600080fd5b506103fd600a5481565b34801561090157600080fd5b506103906109103660046124ef565b60136020526000908152604090205460ff1681565b34801561093157600080fd5b50610390611090565b34801561094657600080fd5b506103fd60235481565b34801561095c57600080fd5b506103fd60195481565b34801561097257600080fd5b506104986109813660046124ef565b6110cd565b34801561099257600080fd5b506103fd601e5481565b3480156109a857600080fd5b506103d4737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156109d057600080fd5b506103fd600b5481565b3480156109e657600080fd5b506103fd60245481565b6060600380546109ff906125be565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b906125be565b8015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b6000610a8f338484611168565b5060015b92915050565b6000610aa684848461128c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b305760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610b3d8533858403611168565b506001949350505050565b6005546001600160a01b03163314610b725760405162461bcd60e51b8152600401610b27906125f8565b600c54610100900460ff1615610bbb5760405162461bcd60e51b815260206004820152600e60248201526d74726164696e672061637469766560901b6044820152606401610b27565b43601155600c805462ffff00191662010100179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a8f918590610c09908690612643565b611168565b6005546001600160a01b03163314610c385760405162461bcd60e51b8152600401610b27906125f8565b610c426000611bd7565b565b6005546000906001600160a01b03163314610c715760405162461bcd60e51b8152600401610b27906125f8565b50600c805460ff19169055600190565b6005546001600160a01b03163314610cab5760405162461bcd60e51b8152600401610b27906125f8565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d005760405162461bcd60e51b8152600401610b27906125f8565b600c8054911515620100000262ff000019909216919091179055565b6060600480546109ff906125be565b6005546001600160a01b03163314610d555760405162461bcd60e51b8152600401610b27906125f8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610dfc5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b27565b610e068282611c29565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e8c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b27565b610e993385858403611168565b5060019392505050565b6000610a8f33848461128c565b6005546001600160a01b03163314610eda5760405162461bcd60e51b8152600401610b27906125f8565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b03163314610f665760405162461bcd60e51b8152600401610b27906125f8565b620186a0610f7360025490565b610f7e906001612656565b610f88919061266d565b821015610ff55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b27565b6103e861100160025490565b61100c906005612656565b611016919061266d565b8211156110825760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b27565b50600a81905560015b919050565b6005546000906001600160a01b031633146110bd5760405162461bcd60e51b8152600401610b27906125f8565b506010805460ff19169055600190565b6005546001600160a01b031633146110f75760405162461bcd60e51b8152600401610b27906125f8565b6001600160a01b03811661115c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b27565b61116581611bd7565b50565b6001600160a01b0383166111ca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b27565b6001600160a01b03821661122b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b27565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112b25760405162461bcd60e51b8152600401610b279061268f565b6001600160a01b0382166112d85760405162461bcd60e51b8152600401610b27906126d4565b6001600160a01b03831660009081526013602052604090205460ff161561132a5760405162461bcd60e51b815260206004820152600660248201526529b734b832b960d11b6044820152606401610b27565b806000036113435761133e83836000611c7d565b505050565b6005546001600160a01b03166001600160a01b0316836001600160a01b0316036113725761133e838383611c7d565b600c5460ff16156117c257600554600160a01b900460ff166117c257600c54610100900460ff16611421576001600160a01b03831660009081526014602052604090205460ff16806113dc57506001600160a01b03821660009081526014602052604090205460ff165b6114215760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b27565b60105460ff1615611568576005546001600160a01b0383811691161480159061147c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156114ba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561156857326000908152600d602052604090205443116115555760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b27565b326000908152600d602052604090204390555b6001600160a01b03831660009081526016602052604090205460ff1680156115a957506001600160a01b03821660009081526015602052604090205460ff16155b15611687576009548111156116185760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610b27565b600b546001600160a01b03831660009081526020819052604090205461163e9083612643565b11156116825760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b27565b6117c2565b6001600160a01b03821660009081526016602052604090205460ff1680156116c857506001600160a01b03831660009081526015602052604090205460ff16155b15611738576009548111156116825760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610b27565b6001600160a01b03821660009081526015602052604090205460ff166117c257600b546001600160a01b03831660009081526020819052604090205461177e9083612643565b11156117c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b27565b6001600160a01b03831660009081526014602052604090205460ff16801561180257506001600160a01b03821660009081526014602052604090205460ff165b1561180c5742600f555b6001600160a01b03831660009081526014602052604090205460ff16156118385761133e838383611dd2565b6118428383611e12565b30600090815260208190526040902054600a548110801590819061186e5750600c5462010000900460ff165b80156118845750600554600160a01b900460ff16155b80156118a957506001600160a01b03851660009081526016602052604090205460ff16155b80156118ce57506001600160a01b03851660009081526014602052604090205460ff16155b80156118f357506001600160a01b03841660009081526014602052604090205460ff16155b15611921576005805460ff60a01b1916600160a01b179055611913611ed9565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526014602052604090205460ff600160a01b90920482161591168061196f57506001600160a01b03851660009081526014602052604090205460ff165b15611978575060005b60008115611bc3576001600160a01b03861660009081526016602052604090205460ff1680156119aa57506000601c54115b15611a98576119cf60646119c9601c548861214e90919063ffffffff16565b90612161565b9050601c54601e54826119e29190612656565b6119ec919061266d565b602260008282546119fd9190612643565b9091555050601c54601f54611a129083612656565b611a1c919061266d565b60236000828254611a2d9190612643565b9091555050601c54601d54611a429083612656565b611a4c919061266d565b60216000828254611a5d9190612643565b9091555050601c54602054611a729083612656565b611a7c919061266d565b60246000828254611a8d9190612643565b90915550611ba59050565b6001600160a01b03871660009081526016602052604090205460ff168015611ac257506000601754115b15611ba557611ae160646119c96017548861214e90919063ffffffff16565b905060175460195482611af49190612656565b611afe919061266d565b60226000828254611b0f9190612643565b9091555050601754601a54611b249083612656565b611b2e919061266d565b60236000828254611b3f9190612643565b9091555050601754601854611b549083612656565b611b5e919061266d565b60216000828254611b6f9190612643565b9091555050601754601b54611b849083612656565b611b8e919061266d565b60246000828254611b9f9190612643565b90915550505b8015611bb657611bb6873083611c7d565b611bc08186612717565b94505b611bce878787611c7d565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260166020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ca35760405162461bcd60e51b8152600401610b279061268f565b6001600160a01b038216611cc95760405162461bcd60e51b8152600401610b27906126d4565b6001600160a01b03831660009081526020819052604090205481811015611d415760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b27565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d78908490612643565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc491815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526020819052604090205481611d415760405162461bcd60e51b81526020600482015260006024820152604401610b27565b6001600160a01b03821660009081526014602052604090205460ff16158015611e5457506001600160a01b03811660009081526014602052604090205460ff16155b15610e06576001600160a01b03821660009081526016602052604090205460ff1615611ea2576001600160a01b0381166000908152600e60205260408120805490910361133e574290555050565b6001600160a01b0382166000908152600e60205260409020600f548154611ec99190612717565b6002820155426001909101555050565b3060009081526020819052604081205490506000602454602354602154602254611f039190612643565b611f0d9190612643565b611f179190612643565b90506000821580611f26575081155b15611f3057505050565b600a54611f3e906010612656565b831115611f5657600a54611f53906010612656565b92505b600060028360225486611f699190612656565b611f73919061266d565b611f7d919061266d565b90506000611f8b858361216d565b905047611f9782612179565b6000611fa3478361216d565b90506000611fc0876119c96021548561214e90919063ffffffff16565b90506000611fdd886119c96023548661214e90919063ffffffff16565b90506000611ffa896119c96024548761214e90919063ffffffff16565b90506000818361200a8688612717565b6120149190612717565b61201e9190612717565b600060228190556021819055602381905560248190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612080576040519150601f19603f3d011682016040523d82523d6000602084013e612085565b606091505b509099505087158015906120995750600081115b156120ec576120a88882612339565b602254604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612139576040519150601f19603f3d011682016040523d82523d6000602084013e61213e565b606091505b5050505050505050505050505050565b600061215a8284612656565b9392505050565b600061215a828461266d565b600061215a8284612717565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121ae576121ae61272a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122509190612740565b816001815181106122635761226361272a565b60200260200101906001600160a01b031690816001600160a01b0316815250506122ae307f000000000000000000000000000000000000000000000000000000000000000084611168565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061230390859060009086903090429060040161275d565b600060405180830381600087803b15801561231d57600080fd5b505af1158015612331573d6000803e3d6000fd5b505050505050565b612364307f000000000000000000000000000000000000000000000000000000000000000084611168565b60085460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af11580156123f3573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061241891906127ce565b5050505050565b600060208083528351808285015260005b8181101561244c57858101830151858201604001528201612430565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116557600080fd5b6000806040838503121561249557600080fd5b82356124a08161246d565b946020939093013593505050565b6000806000606084860312156124c357600080fd5b83356124ce8161246d565b925060208401356124de8161246d565b929592945050506040919091013590565b60006020828403121561250157600080fd5b813561215a8161246d565b8035801515811461108b57600080fd5b6000806040838503121561252f57600080fd5b823561253a8161246d565b91506125486020840161250c565b90509250929050565b60006020828403121561256357600080fd5b61215a8261250c565b60006020828403121561257e57600080fd5b5035919050565b6000806040838503121561259857600080fd5b82356125a38161246d565b915060208301356125b38161246d565b809150509250929050565b600181811c908216806125d257607f821691505b6020821081036125f257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a9357610a9361262d565b8082028115828204841417610a9357610a9361262d565b60008261268a57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a9357610a9361262d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561275257600080fd5b815161215a8161246d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127ad5784516001600160a01b031683529383019391830191600101612788565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127e357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e94666dfee58702e19555aa7adf4845a0d849bed47e79f0e12aafb011891e2e964736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103395760003560e01c8063924de9b7116101ab578063d4698016116100f7578063ef8700e511610095578063f63743421161006f578063f637434214610986578063f887ea401461099c578063f8b45b05146109c4578063fb002c97146109da57600080fd5b8063ef8700e51461093a578063f11a24d314610950578063f2fde38b1461096657600080fd5b8063e1bc3394116100d1578063e1bc3394146108af578063e2f45605146108df578063e5962195146108f5578063e884f2601461092557600080fd5b8063d469801614610833578063d85ba06314610853578063dd62ed3e1461086957600080fd5b8063b62496f511610164578063c04a54141161013e578063c04a5414146107c3578063c3f70b52146107e3578063c876d0b9146107f9578063d257b34f1461081357600080fd5b8063b62496f514610754578063bbc0c74214610784578063c0246668146107a357600080fd5b8063924de9b7146106a957806395d89b41146106c95780639a7a23d6146106de578063a457c2d7146106fe578063a9059cbb1461071e578063b20414111461073e57600080fd5b80634a62bb6511610285578063715018a61161022357806375f0a874116101fd57806375f0a8741461063f5780637bce5a041461065f5780638da5cb5b14610675578063921369131461069357600080fd5b8063715018a6146105f5578063751039fc1461060a5780637571336a1461061f57600080fd5b80635a139dd41161025f5780635a139dd4146105735780636a486a8e146105895780636ddd17131461059f57806370a08231146105bf57600080fd5b80634a62bb651461050a5780634f77f6c0146105245780634fbee1931461053a57600080fd5b80631f3fed8f116102f2578063293230b8116102cc578063293230b814610483578063313ce5671461049a57806339509351146104b657806349bd5a5e146104d657600080fd5b80631f3fed8f1461043757806323b872dd1461044d57806327c8f8351461046d57600080fd5b806306fdde0314610345578063095ea7b3146103705780631694505e146103a057806318160ddd146103ec57806318a94cf11461040b5780631a8145bb1461042157600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a6109f0565b604051610367919061241f565b60405180910390f35b34801561037c57600080fd5b5061039061038b366004612482565b610a82565b6040519015158152602001610367565b3480156103ac57600080fd5b506103d47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610367565b3480156103f857600080fd5b506002545b604051908152602001610367565b34801561041757600080fd5b506103fd601f5481565b34801561042d57600080fd5b506103fd60225481565b34801561044357600080fd5b506103fd60215481565b34801561045957600080fd5b506103906104683660046124ae565b610a99565b34801561047957600080fd5b506103d461dead81565b34801561048f57600080fd5b50610498610b48565b005b3480156104a657600080fd5b5060405160128152602001610367565b3480156104c257600080fd5b506103906104d1366004612482565b610bd2565b3480156104e257600080fd5b506103d47f000000000000000000000000e652e61f848da688b4e408a0df9b03649d97c0e581565b34801561051657600080fd5b50600c546103909060ff1681565b34801561053057600080fd5b506103fd60205481565b34801561054657600080fd5b506103906105553660046124ef565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561057f57600080fd5b506103fd601b5481565b34801561059557600080fd5b506103fd601c5481565b3480156105ab57600080fd5b50600c546103909062010000900460ff1681565b3480156105cb57600080fd5b506103fd6105da3660046124ef565b6001600160a01b031660009081526020819052604090205490565b34801561060157600080fd5b50610498610c0e565b34801561061657600080fd5b50610390610c44565b34801561062b57600080fd5b5061049861063a36600461251c565b610c81565b34801561064b57600080fd5b506006546103d4906001600160a01b031681565b34801561066b57600080fd5b506103fd60185481565b34801561068157600080fd5b506005546001600160a01b03166103d4565b34801561069f57600080fd5b506103fd601d5481565b3480156106b557600080fd5b506104986106c4366004612551565b610cd6565b3480156106d557600080fd5b5061035a610d1c565b3480156106ea57600080fd5b506104986106f936600461251c565b610d2b565b34801561070a57600080fd5b50610390610719366004612482565b610e0a565b34801561072a57600080fd5b50610390610739366004612482565b610ea3565b34801561074a57600080fd5b506103fd601a5481565b34801561076057600080fd5b5061039061076f3660046124ef565b60166020526000908152604090205460ff1681565b34801561079057600080fd5b50600c5461039090610100900460ff1681565b3480156107af57600080fd5b506104986107be36600461251c565b610eb0565b3480156107cf57600080fd5b506007546103d4906001600160a01b031681565b3480156107ef57600080fd5b506103fd60095481565b34801561080557600080fd5b506010546103909060ff1681565b34801561081f57600080fd5b5061039061082e36600461256c565b610f39565b34801561083f57600080fd5b506008546103d4906001600160a01b031681565b34801561085f57600080fd5b506103fd60175481565b34801561087557600080fd5b506103fd610884366004612585565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108bb57600080fd5b506103906108ca3660046124ef565b60156020526000908152604090205460ff1681565b3480156108eb57600080fd5b506103fd600a5481565b34801561090157600080fd5b506103906109103660046124ef565b60136020526000908152604090205460ff1681565b34801561093157600080fd5b50610390611090565b34801561094657600080fd5b506103fd60235481565b34801561095c57600080fd5b506103fd60195481565b34801561097257600080fd5b506104986109813660046124ef565b6110cd565b34801561099257600080fd5b506103fd601e5481565b3480156109a857600080fd5b506103d4737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156109d057600080fd5b506103fd600b5481565b3480156109e657600080fd5b506103fd60245481565b6060600380546109ff906125be565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2b906125be565b8015610a785780601f10610a4d57610100808354040283529160200191610a78565b820191906000526020600020905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b6000610a8f338484611168565b5060015b92915050565b6000610aa684848461128c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610b305760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610b3d8533858403611168565b506001949350505050565b6005546001600160a01b03163314610b725760405162461bcd60e51b8152600401610b27906125f8565b600c54610100900460ff1615610bbb5760405162461bcd60e51b815260206004820152600e60248201526d74726164696e672061637469766560901b6044820152606401610b27565b43601155600c805462ffff00191662010100179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a8f918590610c09908690612643565b611168565b6005546001600160a01b03163314610c385760405162461bcd60e51b8152600401610b27906125f8565b610c426000611bd7565b565b6005546000906001600160a01b03163314610c715760405162461bcd60e51b8152600401610b27906125f8565b50600c805460ff19169055600190565b6005546001600160a01b03163314610cab5760405162461bcd60e51b8152600401610b27906125f8565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d005760405162461bcd60e51b8152600401610b27906125f8565b600c8054911515620100000262ff000019909216919091179055565b6060600480546109ff906125be565b6005546001600160a01b03163314610d555760405162461bcd60e51b8152600401610b27906125f8565b7f000000000000000000000000e652e61f848da688b4e408a0df9b03649d97c0e56001600160a01b0316826001600160a01b031603610dfc5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b27565b610e068282611c29565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e8c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b27565b610e993385858403611168565b5060019392505050565b6000610a8f33848461128c565b6005546001600160a01b03163314610eda5760405162461bcd60e51b8152600401610b27906125f8565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546000906001600160a01b03163314610f665760405162461bcd60e51b8152600401610b27906125f8565b620186a0610f7360025490565b610f7e906001612656565b610f88919061266d565b821015610ff55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b27565b6103e861100160025490565b61100c906005612656565b611016919061266d565b8211156110825760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b27565b50600a81905560015b919050565b6005546000906001600160a01b031633146110bd5760405162461bcd60e51b8152600401610b27906125f8565b506010805460ff19169055600190565b6005546001600160a01b031633146110f75760405162461bcd60e51b8152600401610b27906125f8565b6001600160a01b03811661115c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b27565b61116581611bd7565b50565b6001600160a01b0383166111ca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b27565b6001600160a01b03821661122b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b27565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112b25760405162461bcd60e51b8152600401610b279061268f565b6001600160a01b0382166112d85760405162461bcd60e51b8152600401610b27906126d4565b6001600160a01b03831660009081526013602052604090205460ff161561132a5760405162461bcd60e51b815260206004820152600660248201526529b734b832b960d11b6044820152606401610b27565b806000036113435761133e83836000611c7d565b505050565b6005546001600160a01b03166001600160a01b0316836001600160a01b0316036113725761133e838383611c7d565b600c5460ff16156117c257600554600160a01b900460ff166117c257600c54610100900460ff16611421576001600160a01b03831660009081526014602052604090205460ff16806113dc57506001600160a01b03821660009081526014602052604090205460ff165b6114215760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b27565b60105460ff1615611568576005546001600160a01b0383811691161480159061147c57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156114ba57507f000000000000000000000000e652e61f848da688b4e408a0df9b03649d97c0e56001600160a01b0316826001600160a01b031614155b1561156857326000908152600d602052604090205443116115555760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b27565b326000908152600d602052604090204390555b6001600160a01b03831660009081526016602052604090205460ff1680156115a957506001600160a01b03821660009081526015602052604090205460ff16155b15611687576009548111156116185760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b6064820152608401610b27565b600b546001600160a01b03831660009081526020819052604090205461163e9083612643565b11156116825760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b27565b6117c2565b6001600160a01b03821660009081526016602052604090205460ff1680156116c857506001600160a01b03831660009081526015602052604090205460ff16155b15611738576009548111156116825760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b6064820152608401610b27565b6001600160a01b03821660009081526015602052604090205460ff166117c257600b546001600160a01b03831660009081526020819052604090205461177e9083612643565b11156117c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b27565b6001600160a01b03831660009081526014602052604090205460ff16801561180257506001600160a01b03821660009081526014602052604090205460ff165b1561180c5742600f555b6001600160a01b03831660009081526014602052604090205460ff16156118385761133e838383611dd2565b6118428383611e12565b30600090815260208190526040902054600a548110801590819061186e5750600c5462010000900460ff165b80156118845750600554600160a01b900460ff16155b80156118a957506001600160a01b03851660009081526016602052604090205460ff16155b80156118ce57506001600160a01b03851660009081526014602052604090205460ff16155b80156118f357506001600160a01b03841660009081526014602052604090205460ff16155b15611921576005805460ff60a01b1916600160a01b179055611913611ed9565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526014602052604090205460ff600160a01b90920482161591168061196f57506001600160a01b03851660009081526014602052604090205460ff165b15611978575060005b60008115611bc3576001600160a01b03861660009081526016602052604090205460ff1680156119aa57506000601c54115b15611a98576119cf60646119c9601c548861214e90919063ffffffff16565b90612161565b9050601c54601e54826119e29190612656565b6119ec919061266d565b602260008282546119fd9190612643565b9091555050601c54601f54611a129083612656565b611a1c919061266d565b60236000828254611a2d9190612643565b9091555050601c54601d54611a429083612656565b611a4c919061266d565b60216000828254611a5d9190612643565b9091555050601c54602054611a729083612656565b611a7c919061266d565b60246000828254611a8d9190612643565b90915550611ba59050565b6001600160a01b03871660009081526016602052604090205460ff168015611ac257506000601754115b15611ba557611ae160646119c96017548861214e90919063ffffffff16565b905060175460195482611af49190612656565b611afe919061266d565b60226000828254611b0f9190612643565b9091555050601754601a54611b249083612656565b611b2e919061266d565b60236000828254611b3f9190612643565b9091555050601754601854611b549083612656565b611b5e919061266d565b60216000828254611b6f9190612643565b9091555050601754601b54611b849083612656565b611b8e919061266d565b60246000828254611b9f9190612643565b90915550505b8015611bb657611bb6873083611c7d565b611bc08186612717565b94505b611bce878787611c7d565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260166020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611ca35760405162461bcd60e51b8152600401610b279061268f565b6001600160a01b038216611cc95760405162461bcd60e51b8152600401610b27906126d4565b6001600160a01b03831660009081526020819052604090205481811015611d415760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b27565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d78908490612643565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc491815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526020819052604090205481611d415760405162461bcd60e51b81526020600482015260006024820152604401610b27565b6001600160a01b03821660009081526014602052604090205460ff16158015611e5457506001600160a01b03811660009081526014602052604090205460ff16155b15610e06576001600160a01b03821660009081526016602052604090205460ff1615611ea2576001600160a01b0381166000908152600e60205260408120805490910361133e574290555050565b6001600160a01b0382166000908152600e60205260409020600f548154611ec99190612717565b6002820155426001909101555050565b3060009081526020819052604081205490506000602454602354602154602254611f039190612643565b611f0d9190612643565b611f179190612643565b90506000821580611f26575081155b15611f3057505050565b600a54611f3e906010612656565b831115611f5657600a54611f53906010612656565b92505b600060028360225486611f699190612656565b611f73919061266d565b611f7d919061266d565b90506000611f8b858361216d565b905047611f9782612179565b6000611fa3478361216d565b90506000611fc0876119c96021548561214e90919063ffffffff16565b90506000611fdd886119c96023548661214e90919063ffffffff16565b90506000611ffa896119c96024548761214e90919063ffffffff16565b90506000818361200a8688612717565b6120149190612717565b61201e9190612717565b600060228190556021819055602381905560248190556007546040519293506001600160a01b031691859181818185875af1925050503d8060008114612080576040519150601f19603f3d011682016040523d82523d6000602084013e612085565b606091505b509099505087158015906120995750600081115b156120ec576120a88882612339565b602254604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612139576040519150601f19603f3d011682016040523d82523d6000602084013e61213e565b606091505b5050505050505050505050505050565b600061215a8284612656565b9392505050565b600061215a828461266d565b600061215a8284612717565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121ae576121ae61272a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122509190612740565b816001815181106122635761226361272a565b60200260200101906001600160a01b031690816001600160a01b0316815250506122ae307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611168565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061230390859060009086903090429060040161275d565b600060405180830381600087803b15801561231d57600080fd5b505af1158015612331573d6000803e3d6000fd5b505050505050565b612364307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611168565b60085460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af11580156123f3573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061241891906127ce565b5050505050565b600060208083528351808285015260005b8181101561244c57858101830151858201604001528201612430565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116557600080fd5b6000806040838503121561249557600080fd5b82356124a08161246d565b946020939093013593505050565b6000806000606084860312156124c357600080fd5b83356124ce8161246d565b925060208401356124de8161246d565b929592945050506040919091013590565b60006020828403121561250157600080fd5b813561215a8161246d565b8035801515811461108b57600080fd5b6000806040838503121561252f57600080fd5b823561253a8161246d565b91506125486020840161250c565b90509250929050565b60006020828403121561256357600080fd5b61215a8261250c565b60006020828403121561257e57600080fd5b5035919050565b6000806040838503121561259857600080fd5b82356125a38161246d565b915060208301356125b38161246d565b809150509250929050565b600181811c908216806125d257607f821691505b6020821081036125f257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a9357610a9361262d565b8082028115828204841417610a9357610a9361262d565b60008261268a57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a9357610a9361262d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561275257600080fd5b815161215a8161246d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127ad5784516001600160a01b031683529383019391830191600101612788565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156127e357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e94666dfee58702e19555aa7adf4845a0d849bed47e79f0e12aafb011891e2e964736f6c63430008130033
Deployed Bytecode Sourcemap
18153:16084:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11413:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12827:169;;;;;;;;;;-1:-1:-1;12827:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;12827:169:0;1023:187:1;18238:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;18238:51:0;1215:230:1;11734:108:0;;;;;;;;;;-1:-1:-1;11822:12:0;;11734:108;;;1596:25:1;;;1584:2;1569:18;11734:108:0;1450:177:1;19862:33:0;;;;;;;;;;;;;;;;19983;;;;;;;;;;;;;;;;19943;;;;;;;;;;;;;;;;12168:492;;;;;;;;;;-1:-1:-1;12168:492:0;;;;;:::i;:::-;;:::i;18341:53::-;;;;;;;;;;;;18387:6;18341:53;;23084:200;;;;;;;;;;;;;:::i;:::-;;11633:93;;;;;;;;;;-1:-1:-1;11633:93:0;;11716:2;2443:36:1;;2431:2;2416:18;11633:93:0;2301:184:1;13006:215:0;;;;;;;;;;-1:-1:-1;13006:215:0;;;;;:::i;:::-;;:::i;18296:38::-;;;;;;;;;;;;;;;18763:33;;;;;;;;;;-1:-1:-1;18763:33:0;;;;;;;;19902:32;;;;;;;;;;;;;;;;25291:126;;;;;;;;;;-1:-1:-1;25291:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;25381:28:0;25357:4;25381:28;;;:19;:28;;;;;;;;;25291:126;19711:31;;;;;;;;;;;;;;;;19751:28;;;;;;;;;;;;;;;;18843:31;;;;;;;;;;-1:-1:-1;18843:31:0;;;;;;;;;;;11850:127;;;;;;;;;;-1:-1:-1;11850:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11951:18:0;11924:7;11951:18;;;;;;;;;;;;11850:127;6812:103;;;;;;;;;;;;;:::i;23532:121::-;;;;;;;;;;;;;:::i;24424:161::-;;;;;;;;;;-1:-1:-1;24424:161:0;;;;;:::i;:::-;;:::i;18515:38::-;;;;;;;;;;-1:-1:-1;18515:38:0;;;;-1:-1:-1;;;;;18515:38:0;;;19598:30;;;;;;;;;;;;;;;;6589:87;;;;;;;;;;-1:-1:-1;6662:6:0;;-1:-1:-1;;;;;6662:6:0;6589:87;;19786:31;;;;;;;;;;;;;;;;24316:100;;;;;;;;;;-1:-1:-1;24316:100:0;;;;;:::i;:::-;;:::i;11521:104::-;;;;;;;;;;;;;:::i;24783:304::-;;;;;;;;;;-1:-1:-1;24783:304:0;;;;;:::i;:::-;;:::i;13970:413::-;;;;;;;;;;-1:-1:-1;13970:413:0;;;;;:::i;:::-;;:::i;11985:175::-;;;;;;;;;;-1:-1:-1;11985:175:0;;;;;:::i;:::-;;:::i;19672:32::-;;;;;;;;;;;;;;;;19498:57;;;;;;;;;;-1:-1:-1;19498:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18803:33;;;;;;;;;;-1:-1:-1;18803:33:0;;;;;;;;;;;24593:182;;;;;;;;;;-1:-1:-1;24593:182:0;;;;;:::i;:::-;;:::i;18560:40::-;;;;;;;;;;-1:-1:-1;18560:40:0;;;;-1:-1:-1;;;;;18560:40:0;;;18654:29;;;;;;;;;;;;;;;;19192:39;;;;;;;;;;-1:-1:-1;19192:39:0;;;;;;;;23723:497;;;;;;;;;;-1:-1:-1;23723:497:0;;;;;:::i;:::-;;:::i;18607:38::-;;;;;;;;;;-1:-1:-1;18607:38:0;;;;-1:-1:-1;;;;;18607:38:0;;;19564:27;;;;;;;;;;;;;;;;12668:151;;;;;;;;;;-1:-1:-1;12668:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;12784:18:0;;;12757:7;12784:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12668:151;19432:57;;;;;;;;;;-1:-1:-1;19432:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18690:33;;;;;;;;;;;;;;;;19327:39;;;;;;;;;;-1:-1:-1;19327:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23345:135;;;;;;;;;;;;;:::i;20023:35::-;;;;;;;;;;;;;;;;19635:30;;;;;;;;;;;;;;;;6923:201;;;;;;;;;;-1:-1:-1;6923:201:0;;;;;:::i;:::-;;:::i;19824:31::-;;;;;;;;;;;;;;;;18401:75;;;;;;;;;;;;18434:42;18401:75;;18730:24;;;;;;;;;;;;;;;;20065:34;;;;;;;;;;;;;;;;11413:100;11467:13;11500:5;11493:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11413:100;:::o;12827:169::-;12910:4;12927:39;5988:10;12950:7;12959:6;12927:8;:39::i;:::-;-1:-1:-1;12984:4:0;12827:169;;;;;:::o;12168:492::-;12308:4;12325:36;12335:6;12343:9;12354:6;12325:9;:36::i;:::-;-1:-1:-1;;;;;12401:19:0;;12374:24;12401:19;;;:11;:19;;;;;;;;5988:10;12401:33;;;;;;;;12453:26;;;;12445:79;;;;-1:-1:-1;;;12445:79:0;;4801:2:1;12445:79:0;;;4783:21:1;4840:2;4820:18;;;4813:30;4879:34;4859:18;;;4852:62;-1:-1:-1;;;4930:18:1;;;4923:38;4978:19;;12445:79:0;;;;;;;;;12560:57;12569:6;5988:10;12610:6;12591:16;:25;12560:8;:57::i;:::-;-1:-1:-1;12648:4:0;;12168:492;-1:-1:-1;;;;12168:492:0:o;23084:200::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;23147:13:::1;::::0;::::1;::::0;::::1;;;23146:14;23138:41;;;::::0;-1:-1:-1;;;23138:41:0;;5571:2:1;23138:41:0::1;::::0;::::1;5553:21:1::0;5610:2;5590:18;;;5583:30;-1:-1:-1;;;5629:18:1;;;5622:44;5683:18;;23138:41:0::1;5369:338:1::0;23138:41:0::1;23204:12;23190:11;:26:::0;23227:11:::1;:18:::0;;-1:-1:-1;;23256:20:0;;;;;23084:200::o;13006:215::-;5988:10;13094:4;13143:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13143:34:0;;;;;;;;;;13094:4;;13111:80;;13134:7;;13143:47;;13180:10;;13143:47;:::i;:::-;13111:8;:80::i;6812:103::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;6877:30:::1;6904:1;6877:18;:30::i;:::-;6812:103::o:0;23532:121::-;6662:6;;23584:4;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;-1:-1:-1;23601:14:0::1;:22:::0;;-1:-1:-1;;23601:22:0::1;::::0;;;23532:121;:::o;24424:161::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24537:33:0;;;::::1;;::::0;;;:25:::1;:33;::::0;;;;:40;;-1:-1:-1;;24537:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24424:161::o;24316:100::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;24387:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;24387:21:0;;::::1;::::0;;;::::1;::::0;;24316:100::o;11521:104::-;11577:13;11610:7;11603:14;;;;;:::i;24783:304::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;24927:13:::1;-1:-1:-1::0;;;;;24919:21:0::1;:4;-1:-1:-1::0;;;;;24919:21:0::1;::::0;24897:128:::1;;;::::0;-1:-1:-1;;;24897:128:0;;6176:2:1;24897:128:0::1;::::0;::::1;6158:21:1::0;6215:2;6195:18;;;6188:30;6254:34;6234:18;;;6227:62;6325:27;6305:18;;;6298:55;6370:19;;24897:128:0::1;5974:421:1::0;24897:128:0::1;25038:41;25067:4;25073:5;25038:28;:41::i;:::-;24783:304:::0;;:::o;13970:413::-;5988:10;14063:4;14107:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14107:34:0;;;;;;;;;;14160:35;;;;14152:85;;;;-1:-1:-1;;;14152:85:0;;6602:2:1;14152:85:0;;;6584:21:1;6641:2;6621:18;;;6614:30;6680:34;6660:18;;;6653:62;-1:-1:-1;;;6731:18:1;;;6724:35;6776:19;;14152:85:0;6400:401:1;14152:85:0;14273:67;5988:10;14296:7;14324:15;14305:16;:34;14273:8;:67::i;:::-;-1:-1:-1;14371:4:0;;13970:413;-1:-1:-1;;;13970:413:0:o;11985:175::-;12071:4;12088:42;5988:10;12112:9;12123:6;12088:9;:42::i;24593:182::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24678:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;24678:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24733:34;;1163:41:1;;;24733:34:0::1;::::0;1136:18:1;24733:34:0::1;;;;;;;24593:182:::0;;:::o;23723:497::-;6662:6;;23831:4;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;23910:6:::1;23889:13;11822:12:::0;;;11734:108;23889:13:::1;:17;::::0;23905:1:::1;23889:17;:::i;:::-;23888:28;;;;:::i;:::-;23875:9;:41;;23853:144;;;::::0;-1:-1:-1;;;23853:144:0;;7403:2:1;23853:144:0::1;::::0;::::1;7385:21:1::0;7442:2;7422:18;;;7415:30;7481:34;7461:18;;;7454:62;-1:-1:-1;;;7532:18:1;;;7525:51;7593:19;;23853:144:0::1;7201:417:1::0;23853:144:0::1;24065:4;24044:13;11822:12:::0;;;11734:108;24044:13:::1;:17;::::0;24060:1:::1;24044:17;:::i;:::-;24043:26;;;;:::i;:::-;24030:9;:39;;24008:141;;;::::0;-1:-1:-1;;;24008:141:0;;7825:2:1;24008:141:0::1;::::0;::::1;7807:21:1::0;7864:2;7844:18;;;7837:30;7903:34;7883:18;;;7876:62;-1:-1:-1;;;7954:18:1;;;7947:50;8014:19;;24008:141:0::1;7623:416:1::0;24008:141:0::1;-1:-1:-1::0;24160:18:0::1;:30:::0;;;24208:4:::1;6795:1;23723:497:::0;;;:::o;23345:135::-;6662:6;;23405:4;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;-1:-1:-1;23422:20:0::1;:28:::0;;-1:-1:-1;;23422:28:0::1;::::0;;;23345:135;:::o;6923:201::-;6662:6;;-1:-1:-1;;;;;6662:6:0;5988:10;6724:23;6716:68;;;;-1:-1:-1;;;6716:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7012:22:0;::::1;7004:73;;;::::0;-1:-1:-1;;;7004:73:0;;8246:2:1;7004:73:0::1;::::0;::::1;8228:21:1::0;8285:2;8265:18;;;8258:30;8324:34;8304:18;;;8297:62;-1:-1:-1;;;8375:18:1;;;8368:36;8421:19;;7004:73:0::1;8044:402:1::0;7004:73:0::1;7088:28;7107:8;7088:18;:28::i;:::-;6923:201:::0;:::o;15922:380::-;-1:-1:-1;;;;;16058:19:0;;16050:68;;;;-1:-1:-1;;;16050:68:0;;8653:2:1;16050:68:0;;;8635:21:1;8692:2;8672:18;;;8665:30;8731:34;8711:18;;;8704:62;-1:-1:-1;;;8782:18:1;;;8775:34;8826:19;;16050:68:0;8451:400:1;16050:68:0;-1:-1:-1;;;;;16137:21:0;;16129:68;;;;-1:-1:-1;;;16129:68:0;;9058:2:1;16129:68:0;;;9040:21:1;9097:2;9077:18;;;9070:30;9136:34;9116:18;;;9109:62;-1:-1:-1;;;9187:18:1;;;9180:32;9229:19;;16129:68:0;8856:398:1;16129:68:0;-1:-1:-1;;;;;16210:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16262:32;;1596:25:1;;;16262:32:0;;1569:18:1;16262:32:0;;;;;;;15922:380;;;:::o;25425:5129::-;-1:-1:-1;;;;;25557:18:0;;25549:68;;;;-1:-1:-1;;;25549:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25636:16:0;;25628:64;;;;-1:-1:-1;;;25628:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25712:13:0;;;;;;:7;:13;;;;;;;;25711:14;25703:33;;;;-1:-1:-1;;;25703:33:0;;10271:2:1;25703:33:0;;;10253:21:1;10310:1;10290:18;;;10283:29;-1:-1:-1;;;10328:18:1;;;10321:36;10374:18;;25703:33:0;10069:329:1;25703:33:0;25753:6;25763:1;25753:11;25749:93;;25781:28;25797:4;25803:2;25807:1;25781:15;:28::i;:::-;25425:5129;;;:::o;25749:93::-;6662:6;;-1:-1:-1;;;;;6662:6:0;-1:-1:-1;;;;;25858:15:0;:4;-1:-1:-1;;;;;25858:15:0;;25854:102;;25890:33;25906:4;25912:2;25916:6;25890:15;:33::i;25854:102::-;25972:14;;;;25968:2264;;;26008:8;;-1:-1:-1;;;26008:8:0;;;;26003:2218;;26042:13;;;;;;;26037:223;;-1:-1:-1;;;;;26114:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;26143:23:0;;;;;;:19;:23;;;;;;;;26114:52;26080:160;;;;-1:-1:-1;;;26080:160:0;;10605:2:1;26080:160:0;;;10587:21:1;10644:2;10624:18;;;10617:30;-1:-1:-1;;;10663:18:1;;;10656:52;10725:18;;26080:160:0;10403:346:1;26080:160:0;26416:20;;;;26412:641;;;6662:6;;-1:-1:-1;;;;;26491:13:0;;;6662:6;;26491:13;;;;:72;;;26547:15;-1:-1:-1;;;;;26533:30:0;:2;-1:-1:-1;;;;;26533:30:0;;;26491:72;:129;;;;;26606:13;-1:-1:-1;;;;;26592:28:0;:2;-1:-1:-1;;;;;26592:28:0;;;26491:129;26461:573;;;26738:9;26709:39;;;;:28;:39;;;;;;26784:12;-1:-1:-1;26671:258:0;;;;-1:-1:-1;;;26671:258:0;;10956:2:1;26671:258:0;;;10938:21:1;10995:2;10975:18;;;10968:30;11034:34;11014:18;;;11007:62;11105:34;11085:18;;;11078:62;-1:-1:-1;;;11156:19:1;;;11149:40;11206:19;;26671:258:0;10754:477:1;26671:258:0;26985:9;26956:39;;;;:28;:39;;;;;26998:12;26956:54;;26461:573;-1:-1:-1;;;;;27127:31:0;;;;;;:25;:31;;;;;;;;:86;;;;-1:-1:-1;;;;;;27184:29:0;;;;;;:25;:29;;;;;;;;27183:30;27127:86;27101:1105;;;27300:14;;27290:6;:24;;27256:157;;;;-1:-1:-1;;;27256:157:0;;11438:2:1;27256:157:0;;;11420:21:1;11477:2;11457:18;;;11450:30;11516:34;11496:18;;;11489:62;-1:-1:-1;;;11567:18:1;;;11560:45;11622:19;;27256:157:0;11236:411:1;27256:157:0;27496:9;;-1:-1:-1;;;;;11951:18:0;;11924:7;11951:18;;;;;;;;;;;27470:22;;:6;:22;:::i;:::-;:35;;27436:140;;;;-1:-1:-1;;;27436:140:0;;11854:2:1;27436:140:0;;;11836:21:1;11893:2;11873:18;;;11866:30;-1:-1:-1;;;11912:18:1;;;11905:49;11971:18;;27436:140:0;11652:343:1;27436:140:0;27101:1105;;;-1:-1:-1;;;;;27674:29:0;;;;;;:25;:29;;;;;;;;:86;;;;-1:-1:-1;;;;;;27729:31:0;;;;;;:25;:31;;;;;;;;27728:32;27674:86;27648:558;;;27847:14;;27837:6;:24;;27803:158;;;;-1:-1:-1;;;27803:158:0;;12202:2:1;27803:158:0;;;12184:21:1;12241:2;12221:18;;;12214:30;12280:34;12260:18;;;12253:62;-1:-1:-1;;;12331:18:1;;;12324:46;12387:19;;27803:158:0;12000:412:1;27648:558:0;-1:-1:-1;;;;;27992:29:0;;;;;;:25;:29;;;;;;;;27987:219;;28106:9;;-1:-1:-1;;;;;11951:18:0;;11924:7;11951:18;;;;;;;;;;;28080:22;;:6;:22;:::i;:::-;:35;;28046:140;;;;-1:-1:-1;;;28046:140:0;;11854:2:1;28046:140:0;;;11836:21:1;11893:2;11873:18;;;11866:30;-1:-1:-1;;;11912:18:1;;;11905:49;11971:18;;28046:140:0;11652:343:1;28046:140:0;-1:-1:-1;;;;;28248:25:0;;;;;;:19;:25;;;;;;;;:52;;;;-1:-1:-1;;;;;;28277:23:0;;;;;;:19;:23;;;;;;;;28248:52;28244:119;;;28336:15;28317:16;:34;28244:119;-1:-1:-1;;;;;28377:25:0;;;;;;:19;:25;;;;;;;;28373:112;;;28419:33;28435:4;28441:2;28445:6;28419:15;:33::i;28373:112::-;28495:21;28507:4;28513:2;28495:11;:21::i;:::-;28576:4;28527:28;11951:18;;;;;;;;;;;28632;;28608:42;;;;;;;28679:35;;-1:-1:-1;28703:11:0;;;;;;;28679:35;:61;;;;-1:-1:-1;28732:8:0;;-1:-1:-1;;;28732:8:0;;;;28731:9;28679:61;:110;;;;-1:-1:-1;;;;;;28758:31:0;;;;;;:25;:31;;;;;;;;28757:32;28679:110;:153;;;;-1:-1:-1;;;;;;28807:25:0;;;;;;:19;:25;;;;;;;;28806:26;28679:153;:194;;;;-1:-1:-1;;;;;;28850:23:0;;;;;;:19;:23;;;;;;;;28849:24;28679:194;28661:326;;;28900:8;:15;;-1:-1:-1;;;;28900:15:0;-1:-1:-1;;;28900:15:0;;;28932:10;:8;:10::i;:::-;28959:8;:16;;-1:-1:-1;;;;28959:16:0;;;28661:326;29015:8;;-1:-1:-1;;;;;29125:25:0;;28999:12;29125:25;;;29015:8;29125:25;;;;;;29015:8;-1:-1:-1;;;29015:8:0;;;;;29014:9;;29125:25;;:52;;-1:-1:-1;;;;;;29154:23:0;;;;;;:19;:23;;;;;;;;29125:52;29121:100;;;-1:-1:-1;29204:5:0;29121:100;29233:12;29338:7;29334:1167;;;-1:-1:-1;;;;;29390:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;29439:1;29423:13;;:17;29390:50;29386:966;;;29468:34;29498:3;29468:25;29479:13;;29468:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;29461:41;;29571:13;;29551:16;;29544:4;:23;;;;:::i;:::-;29543:41;;;;:::i;:::-;29521:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;29657:13:0;;29635:18;;29628:25;;:4;:25;:::i;:::-;29627:43;;;;:::i;:::-;29603:20;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;;29739:13:0;;29719:16;;29712:23;;:4;:23;:::i;:::-;29711:41;;;;:::i;:::-;29689:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;29823:13:0;;29802:17;;29795:24;;:4;:24;:::i;:::-;29794:42;;;;:::i;:::-;29771:19;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;29386:966:0;;-1:-1:-1;29386:966:0;;-1:-1:-1;;;;;29898:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;29948:1;29933:12;;:16;29898:51;29894:458;;;29977:33;30006:3;29977:24;29988:12;;29977:6;:10;;:24;;;;:::i;:33::-;29970:40;;30078:12;;30059:15;;30052:4;:22;;;;:::i;:::-;30051:39;;;;:::i;:::-;30029:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;30162:12:0;;30141:17;;30134:24;;:4;:24;:::i;:::-;30133:41;;;;:::i;:::-;30109:20;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;30242:12:0;;30223:15;;30216:22;;:4;:22;:::i;:::-;30215:39;;;;:::i;:::-;30193:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;30324:12:0;;30304:16;;30297:23;;:4;:23;:::i;:::-;30296:40;;;;:::i;:::-;30273:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;29894:458:0;30372:8;;30368:91;;30401:42;30417:4;30431;30438;30401:15;:42::i;:::-;30475:14;30485:4;30475:14;;:::i;:::-;;;29334:1167;30513:33;30529:4;30535:2;30539:6;30513:15;:33::i;:::-;25538:5016;;;;25425:5129;;;:::o;7132:191::-;7225:6;;;-1:-1:-1;;;;;7242:17:0;;;-1:-1:-1;;;;;;7242:17:0;;;;;;;7275:40;;7225:6;;;7242:17;7225:6;;7275:40;;7206:16;;7275:40;7195:128;7132:191;:::o;25095:188::-;-1:-1:-1;;;;;25178:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;25178:39:0;;;;;;;;;;25235:40;;25178:39;;:31;25235:40;;;25095:188;;:::o;13229:733::-;-1:-1:-1;;;;;13369:20:0;;13361:70;;;;-1:-1:-1;;;13361:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13450:23:0;;13442:71;;;;-1:-1:-1;;;13442:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13610:17:0;;13586:21;13610:17;;;;;;;;;;;13646:23;;;;13638:74;;;;-1:-1:-1;;;13638:74:0;;12752:2:1;13638:74:0;;;12734:21:1;12791:2;12771:18;;;12764:30;12830:34;12810:18;;;12803:62;-1:-1:-1;;;12881:18:1;;;12874:36;12927:19;;13638:74:0;12550:402:1;13638:74:0;-1:-1:-1;;;;;13748:17:0;;;:9;:17;;;;;;;;;;;13768:22;;;13748:42;;13812:20;;;;;;;;:30;;13784:6;;13748:9;13812:30;;13784:6;;13812:30;:::i;:::-;;;;;;;;13877:9;-1:-1:-1;;;;;13860:35:0;13869:6;-1:-1:-1;;;;;13860:35:0;;13888:6;13860:35;;;;1596:25:1;;1584:2;1569:18;;1450:177;13860:35:0;;;;;;;;13350:612;13229:733;;;:::o;14391:517::-;-1:-1:-1;;;;;14607:17:0;;14583:21;14607:17;;;;;;;;;;;14643:10;14635:23;;;;-1:-1:-1;;;14635:23:0;;13159:2:1;14635:23:0;;;13141:21:1;-1:-1:-1;13178:18:1;;;13171:29;13217:18;;14635:23:0;12957:284:1;31688:628:0;-1:-1:-1;;;;;31760:25:0;;;;;;:19;:25;;;;;;;;31759:26;:54;;;;-1:-1:-1;;;;;;31790:23:0;;;;;;:19;:23;;;;;;;;31789:24;31759:54;31755:554;;;-1:-1:-1;;;;;31834:31:0;;;;;;:25;:31;;;;;;;;31830:468;;;-1:-1:-1;;;;;31926:16:0;;31886:37;31926:16;;;:12;:16;;;;;31965:22;;31926:16;;31965:27;31961:78;;32021:15;31996:40;;-1:-1:-1;;24783:304:0:o;31830:468::-;-1:-1:-1;;;;;32119:18:0;;32079:37;32119:18;;;:12;:18;;;;;32206:16;;32181:22;;:41;;32206:16;32181:41;:::i;:::-;32156:22;;;:66;32267:15;32241:23;;;;:41;31688:628;;:::o;32324:1910::-;32407:4;32363:23;11951:18;;;;;;;;;;;32363:50;;32424:25;32556:19;;32520:20;;32486:18;;32452;;:52;;;;:::i;:::-;:88;;;;:::i;:::-;:123;;;;:::i;:::-;32424:151;-1:-1:-1;32586:12:0;32615:20;;;:46;;-1:-1:-1;32639:22:0;;32615:46;32611:85;;;32678:7;;;32324:1910::o;32611:85::-;32730:18;;:23;;32751:2;32730:23;:::i;:::-;32712:15;:41;32708:115;;;32788:18;;:23;;32809:2;32788:23;:::i;:::-;32770:41;;32708:115;32884:23;32971:1;32951:17;32929:18;;32911:15;:36;;;;:::i;:::-;32910:58;;;;:::i;:::-;:62;;;;:::i;:::-;32884:88;-1:-1:-1;32983:26:0;33012:36;:15;32884:88;33012:19;:36::i;:::-;32983:65;-1:-1:-1;33089:21:0;33123:36;32983:65;33123:16;:36::i;:::-;33172:18;33193:44;:21;33219:17;33193:25;:44::i;:::-;33172:65;;33250:18;33271:57;33310:17;33271:34;33286:18;;33271:10;:14;;:34;;;;:::i;:57::-;33250:78;;33339:25;33367:59;33408:17;33367:36;33382:20;;33367:10;:14;;:36;;;;:::i;:59::-;33339:87;;33437:24;33464:58;33504:17;33464:35;33479:19;;33464:10;:14;;:35;;;;:::i;:58::-;33437:85;-1:-1:-1;33535:23:0;33437:85;33587:17;33561:23;33574:10;33561;:23;:::i;:::-;:43;;;;:::i;:::-;:62;;;;:::i;:::-;33657:1;33636:18;:22;;;33669:18;:22;;;33702:20;:24;;;33737:19;:23;;;33795:17;;33787:61;;33535:88;;-1:-1:-1;;;;;;33795:17:0;;33826;;33787:61;33657:1;33787:61;33826:17;33795;33787:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33773:75:0;;-1:-1:-1;;33865:19:0;;;;;:42;;;33906:1;33888:15;:19;33865:42;33861:278;;;33924:46;33937:15;33954;33924:12;:46::i;:::-;34094:18;;33990:137;;;13658:25:1;;;13714:2;13699:18;;13692:34;;;13742:18;;;13735:34;;;;33990:137:0;;;;;;13646:2:1;33990:137:0;;;33861:278;34171:15;;34163:63;;-1:-1:-1;;;;;34171:15:0;;;;34200:21;;34163:63;;;;34200:21;34171:15;34163:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;32324:1910:0:o;4089:98::-;4147:7;4174:5;4178:1;4174;:5;:::i;:::-;4167:12;4089:98;-1:-1:-1;;;4089:98:0:o;4195:::-;4253:7;4280:5;4284:1;4280;:5;:::i;3983:98::-;4041:7;4068:5;4072:1;4068;:5;:::i;30562:589::-;30712:16;;;30726:1;30712:16;;;;;;;;30688:21;;30712:16;;;;;;;;;;-1:-1:-1;30712:16:0;30688:40;;30757:4;30739;30744:1;30739:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;30739:23:0;;;-1:-1:-1;;;;;30739:23:0;;;;;30783:15;-1:-1:-1;;;;;30783:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30773:4;30778:1;30773:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;30773:32:0;;;-1:-1:-1;;;;;30773:32:0;;;;;30818:62;30835:4;30850:15;30868:11;30818:8;:62::i;:::-;30919:224;;-1:-1:-1;;;30919:224:0;;-1:-1:-1;;;;;30919:15:0;:66;;;;:224;;31000:11;;31026:1;;31070:4;;31097;;31117:15;;30919:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30617:534;30562:589;:::o;31159:521::-;31307:62;31324:4;31339:15;31357:11;31307:8;:62::i;:::-;31616:15;;31412:260;;-1:-1:-1;;;31412:260:0;;31484:4;31412:260;;;15634:34:1;15684:18;;;15677:34;;;31530:1:0;15727:18:1;;;15720:34;;;15770:18;;;15763:34;-1:-1:-1;;;;;31616:15:0;;;15813:19:1;;;15806:44;31646:15:0;15866:19:1;;;15859:35;31412:15:0;:31;;;;;;31451:9;;15568:19:1;;31412:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31159:521;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2490:247::-;2549:6;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2657:9;2644:23;2676:31;2701:5;2676:31;:::i;2742:160::-;2807:20;;2863:13;;2856:21;2846:32;;2836:60;;2892:1;2889;2882:12;2907:315;2972:6;2980;3033:2;3021:9;3012:7;3008:23;3004:32;3001:52;;;3049:1;3046;3039:12;3001:52;3088:9;3075:23;3107:31;3132:5;3107:31;:::i;:::-;3157:5;-1:-1:-1;3181:35:1;3212:2;3197:18;;3181:35;:::i;:::-;3171:45;;2907:315;;;;;:::o;3451:180::-;3507:6;3560:2;3548:9;3539:7;3535:23;3531:32;3528:52;;;3576:1;3573;3566:12;3528:52;3599:26;3615:9;3599:26;:::i;3636:180::-;3695:6;3748:2;3736:9;3727:7;3723:23;3719:32;3716:52;;;3764:1;3761;3754:12;3716:52;-1:-1:-1;3787:23:1;;3636:180;-1:-1:-1;3636:180:1:o;3821:388::-;3889:6;3897;3950:2;3938:9;3929:7;3925:23;3921:32;3918:52;;;3966:1;3963;3956:12;3918:52;4005:9;3992:23;4024:31;4049:5;4024:31;:::i;:::-;4074:5;-1:-1:-1;4131:2:1;4116:18;;4103:32;4144:33;4103:32;4144:33;:::i;:::-;4196:7;4186:17;;;3821:388;;;;;:::o;4214:380::-;4293:1;4289:12;;;;4336;;;4357:61;;4411:4;4403:6;4399:17;4389:27;;4357:61;4464:2;4456:6;4453:14;4433:18;4430:38;4427:161;;4510:10;4505:3;4501:20;4498:1;4491:31;4545:4;4542:1;4535:15;4573:4;4570:1;4563:15;4427:161;;4214:380;;;:::o;5008:356::-;5210:2;5192:21;;;5229:18;;;5222:30;5288:34;5283:2;5268:18;;5261:62;5355:2;5340:18;;5008:356::o;5712:127::-;5773:10;5768:3;5764:20;5761:1;5754:31;5804:4;5801:1;5794:15;5828:4;5825:1;5818:15;5844:125;5909:9;;;5930:10;;;5927:36;;;5943:18;;:::i;6806:168::-;6879:9;;;6910;;6927:15;;;6921:22;;6907:37;6897:71;;6948:18;;:::i;6979:217::-;7019:1;7045;7035:132;;7089:10;7084:3;7080:20;7077:1;7070:31;7124:4;7121:1;7114:15;7152:4;7149:1;7142:15;7035:132;-1:-1:-1;7181:9:1;;6979:217::o;9259:401::-;9461:2;9443:21;;;9500:2;9480:18;;;9473:30;9539:34;9534:2;9519:18;;9512:62;-1:-1:-1;;;9605:2:1;9590:18;;9583:35;9650:3;9635:19;;9259:401::o;9665:399::-;9867:2;9849:21;;;9906:2;9886:18;;;9879:30;9945:34;9940:2;9925:18;;9918:62;-1:-1:-1;;;10011:2:1;9996:18;;9989:33;10054:3;10039:19;;9665:399::o;12417:128::-;12484:9;;;12505:11;;;12502:37;;;12519:18;;:::i;13912:127::-;13973:10;13968:3;13964:20;13961:1;13954:31;14004:4;14001:1;13994:15;14028:4;14025:1;14018:15;14044:251;14114:6;14167:2;14155:9;14146:7;14142:23;14138:32;14135:52;;;14183:1;14180;14173:12;14135:52;14215:9;14209:16;14234:31;14259:5;14234:31;:::i;14300:980::-;14562:4;14610:3;14599:9;14595:19;14641:6;14630:9;14623:25;14667:2;14705:6;14700:2;14689:9;14685:18;14678:34;14748:3;14743:2;14732:9;14728:18;14721:31;14772:6;14807;14801:13;14838:6;14830;14823:22;14876:3;14865:9;14861:19;14854:26;;14915:2;14907:6;14903:15;14889:29;;14936:1;14946:195;14960:6;14957:1;14954:13;14946:195;;;15025:13;;-1:-1:-1;;;;;15021:39:1;15009:52;;15116:15;;;;15081:12;;;;15057:1;14975:9;14946:195;;;-1:-1:-1;;;;;;;15197:32:1;;;;15192:2;15177:18;;15170:60;-1:-1:-1;;;15261:3:1;15246:19;15239:35;15158:3;14300:980;-1:-1:-1;;;14300:980:1:o;15905:306::-;15993:6;16001;16009;16062:2;16050:9;16041:7;16037:23;16033:32;16030:52;;;16078:1;16075;16068:12;16030:52;16107:9;16101:16;16091:26;;16157:2;16146:9;16142:18;16136:25;16126:35;;16201:2;16190:9;16186:18;16180:25;16170:35;;15905:306;;;;;:::o
Swarm Source
ipfs://e94666dfee58702e19555aa7adf4845a0d849bed47e79f0e12aafb011891e2e9
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.