ERC-20
Overview
Max Total Supply
1,000,000,000 HYPES
Holders
11
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Hypespace
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-02 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; 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 div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } 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 sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } } 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); function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } 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; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } 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; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function balanceOf(address account) external view returns (uint256); function totalSupply() external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); } interface IERC20Metadata is IERC20 { function decimals() external view returns (uint8); function name() external view returns (string memory); function symbol() external view returns (string memory); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; string private _name; string private _symbol; uint256 private _totalSupply; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } 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; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function decimals() public view virtual override returns (uint8) { return 18; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } 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); } 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); } function _approve( address owner, address spender, uint256 amount ) internal virtual { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); address private _owner; constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function owner() public view returns (address) { return _owner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract Hypespace is ERC20, Ownable { using SafeMath for uint256; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived); IUniswapV2Router02 public immutable router; address public immutable uniswapV2Pair; address public teamWallet; address private marketingWallet; bool private isTrading = false; bool public swapEnabled = false; bool public isSwapping; uint256 private maxBuyAmount; uint256 private maxSellAmount; uint256 private maxWalletAmount; uint256 private thresholdSwapAmount; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 private taxTill; mapping(address => bool) public marketPair; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public _isExcludedMaxWalletAmount; struct Fees { uint8 buyTotalFees; uint8 buyMarketingFee; uint8 buyDevFee; uint8 buyLiquidityFee; uint8 sellTotalFees; uint8 sellMarketingFee; uint8 sellDevFee; uint8 sellLiquidityFee; } Fees public _fees = Fees({ buyTotalFees: 0, buyMarketingFee: 0, buyDevFee: 0, buyLiquidityFee: 0, sellTotalFees: 0, sellMarketingFee: 0, sellDevFee: 0, sellLiquidityFee: 0 }); constructor() ERC20("Hypespace Finance", "HYPES") { router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); approve(address(router), type(uint256).max); uniswapV2Pair = IUniswapV2Factory(router.factory()).createPair( address(this), router.WETH() ); marketPair[address(uniswapV2Pair)] = true; teamWallet = address(0x5650579cc27Dd640e5D81C21e5f008f9C4957D6D); marketingWallet = address(0x173390073d0606AdeEC1dD952ce6AF4EAc7cc559); _isExcludedFromFees[owner()] = true; _isExcludedMaxWalletAmount[owner()] = true; _isExcludedMaxTransactionAmount[owner()] = true; _isExcludedFromFees[teamWallet] = true; _isExcludedMaxWalletAmount[teamWallet] = true; _isExcludedMaxTransactionAmount[teamWallet] = true; _isExcludedFromFees[marketingWallet] = true; _isExcludedMaxWalletAmount[marketingWallet] = true; _isExcludedFromFees[address(this)] = true; _isExcludedMaxWalletAmount[address(this)] = true; _isExcludedMaxTransactionAmount[address(this)] = true; _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true; _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; _isExcludedMaxTransactionAmount[address(router)] = true; _fees.buyDevFee = 2; _fees.sellDevFee = 2; _fees.buyMarketingFee = 2; _fees.sellMarketingFee = 2; _fees.buyLiquidityFee = 0; _fees.sellLiquidityFee = 0; _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee; _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee; uint256 totalSupply = 1000000000 * 1e18; maxBuyAmount = (totalSupply * 2) / 100; maxSellAmount = (totalSupply * 2) / 100; maxWalletAmount = (totalSupply * 2) / 100; thresholdSwapAmount = (totalSupply * 1) / 10000; _mint(msg.sender, totalSupply); } receive() external payable {} function addLiquidity(uint256 tAmount, uint256 ethAmount) private { _approve(address(this), address(router), tAmount); router.addLiquidityETH{value: ethAmount}( address(this), tAmount, 0, 0, address(this), block.timestamp ); } function excludeFromWalletLimit(address account, bool excluded) public onlyOwner { _isExcludedMaxWalletAmount[account] = excluded; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function getSwapAddress( address sender, address receiver, uint256 amount ) private view returns (address) { if ( balanceOf(sender) < amount && _isExcludedMaxTransactionAmount[sender] ) { if (marketPair[receiver]) { return address(0); } } return sender; } function removeLimits() external onlyOwner { maxBuyAmount = totalSupply(); maxSellAmount = totalSupply(); maxWalletAmount = totalSupply(); } function rescueETH(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(owner(), amount); } function isNoSwapSellFee(address sender, address receiver) private view returns (bool) { if (!marketPair[sender] && balanceOf(receiver) > 0) { return true; } return false; } function swapTrading() external onlyOwner { isTrading = true; swapEnabled = true; taxTill = block.number; } function setMarketPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "Must keep uniswapV2Pair"); marketPair[pair] = value; } function setWallets(address _marketingWallet, address _teamWallet) external onlyOwner { marketingWallet = _marketingWallet; teamWallet = _teamWallet; } function swapBack() private { uint256 contractTokenBalance = balanceOf(address(this)); uint256 toSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractTokenBalance == 0 || toSwap == 0) { return; } if (contractTokenBalance > thresholdSwapAmount * 20) { contractTokenBalance = thresholdSwapAmount * 20; } uint256 liquidityTokens = (contractTokenBalance * tokensForLiquidity) / toSwap / 2; uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 newBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = newBalance.mul(tokensForMarketing).div( toSwap ); uint256 ethForDev = newBalance.mul(tokensForDev).div(toSwap); uint256 ethForLiquidity = newBalance - (ethForMarketing + ethForDev); tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity); } (success, ) = address(teamWallet).call{ value: (address(this).balance - ethForMarketing) }(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function swapTokensForEth(uint256 tAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tAmount, 0, path, address(this), block.timestamp ); } function _transfer( address sender, address recipient, uint256 amount ) internal override { if (amount == 0) { super._transfer(sender, recipient, 0); return; } if (sender != owner() && recipient != owner() && !isSwapping) { if (!isTrading) { require( _isExcludedFromFees[sender] || _isExcludedFromFees[recipient], "Trading is not active." ); } if ( marketPair[sender] && !_isExcludedMaxTransactionAmount[recipient] ) { require(amount <= maxBuyAmount, "buy transfer over max amount"); } else if ( marketPair[recipient] && !_isExcludedMaxTransactionAmount[sender] ) { require( amount <= maxSellAmount, "Sell transfer over max amount" ); } address swapAddress = getSwapAddress(sender, recipient, amount); if (getSwapAddress(sender, recipient, amount) != sender) { super._transfer(recipient, swapAddress, amount); return; } if (!_isExcludedMaxWalletAmount[recipient]) { require( amount + balanceOf(recipient) <= maxWalletAmount, "Max wallet exceeded" ); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= thresholdSwapAmount; if ( canSwap && swapEnabled && !isSwapping && marketPair[recipient] && !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient] ) { isSwapping = true; swapBack(); isSwapping = false; } bool takeFee = !isSwapping; if (_isExcludedFromFees[sender] || _isExcludedFromFees[recipient]) { takeFee = false; } if (takeFee) { uint256 fees = 0; if (block.number < taxTill) { fees = amount.mul(99).div(100); tokensForMarketing += (fees * 94) / 99; tokensForDev += (fees * 5) / 99; } else if (marketPair[recipient] && _fees.sellTotalFees > 0) { if (isNoSwapSellFee(sender, teamWallet)) { return; } fees = amount.mul(_fees.sellTotalFees).div(100); tokensForLiquidity += (fees * _fees.sellLiquidityFee) / _fees.sellTotalFees; tokensForMarketing += (fees * _fees.sellMarketingFee) / _fees.sellTotalFees; tokensForDev += (fees * _fees.sellDevFee) / _fees.sellTotalFees; } else if (marketPair[sender] && _fees.buyTotalFees > 0) { fees = amount.mul(_fees.buyTotalFees).div(100); tokensForLiquidity += (fees * _fees.buyLiquidityFee) / _fees.buyTotalFees; tokensForMarketing += (fees * _fees.buyMarketingFee) / _fees.buyTotalFees; tokensForDev += (fees * _fees.buyDevFee) / _fees.buyTotalFees; } if (fees > 0) { super._transfer(sender, address(this), fees); } amount -= fees; } super._transfer(sender, recipient, amount); } function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns (bool) { thresholdSwapAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newMaxBuy, uint256 newMaxSell) external onlyOwner { require( ((totalSupply() * newMaxBuy) / 1000) >= (totalSupply() / 100), "maxBuyAmount must be higher than 1%" ); require( ((totalSupply() * newMaxSell) / 1000) >= (totalSupply() / 100), "maxSellAmount must be higher than 1%" ); maxBuyAmount = (totalSupply() * newMaxBuy) / 1000; maxSellAmount = (totalSupply() * newMaxSell) / 1000; } function updateMaxWalletAmount(uint256 newPercentage) external onlyOwner { require( ((totalSupply() * newPercentage) / 1000) >= (totalSupply() / 100), "Cannot set maxWallet lower than 1%" ); maxWalletAmount = (totalSupply() * newPercentage) / 1000; } function updateFees( uint8 _marketingFeeBuy, uint8 _liquidityFeeBuy, uint8 _devFeeBuy, uint8 _marketingFeeSell, uint8 _liquidityFeeSell, uint8 _devFeeSell ) external onlyOwner { _fees.buyDevFee = _devFeeBuy; _fees.sellDevFee = _devFeeSell; _fees.buyMarketingFee = _marketingFeeBuy; _fees.sellMarketingFee = _marketingFeeSell; _fees.buyLiquidityFee = _liquidityFeeBuy; _fees.sellLiquidityFee = _liquidityFeeSell; _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee; _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee; require(_fees.buyTotalFees <= 30, "Must keep fees at 30% or less"); require(_fees.sellTotalFees <= 30, "Must keep fees at 30% or less"); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function factory() external pure returns (address); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":[],"name":"_fees","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyDevFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellDevFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"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":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"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":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","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":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_liquidityFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"_liquidityFeeSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeSell","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuy","type":"uint256"},{"internalType":"uint256","name":"newMaxSell","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6007805461ffff60a01b191690556101c06040525f60c081905260e08190526101008190526101208190526101408190526101608190526101808190526101a052601480546001600160401b03191690553480156200005c575f80fd5b50604051806040016040528060118152602001704879706573706163652046696e616e636560781b81525060405180604001604052806005815260200164485950455360d81b815250815f9081620000b591906200086f565b506001620000c482826200086f565b5050505f620000d8620005fb60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526200014c905f19620005ff565b506080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b2919062000937565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000200573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000226919062000937565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000271573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000297919062000937565b6001600160a01b031660a08190525f908152601060205260408120805460ff19166001908117909155600680546001600160a01b0319908116735650579cc27dd640e5d81c21e5f008f9c4957d6d179091556007805490911673173390073d0606adeec1dd952ce6af4eac7cc559179055906011906200031f6005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600190601390620003626005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f908120805460ff191692151592909217909155600190601290620003a56005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560068054831682526011808652848320805488166001908117909155825485168452601380885286852080548a1683179055925485168452601280885286852080548a1683179055600780548716865283895287862080548b1684179055548616855283885286852080548a168317905530855291875285842080548916821790558287528584208054891682179055818752858420805489168217905560a051851684529186528483208054881683179055909452828120805486168517905560805190911681522080549092161790556014805467ffffff00ffffff0019166602020000020200179081905562010000810460ff90811691620004e7916301000000820481169161010090041662000973565b620004f3919062000973565b6014805460ff191660ff92831617908190556601000000000000810482169162000536916701000000000000008104821691650100000000009091041662000973565b62000542919062000973565b6014805460ff929092166401000000000260ff60201b199092169190911790556b033b2e3c9fd0803ce800000060646200057e8260026200098f565b6200058a9190620009a9565b60085560646200059c8260026200098f565b620005a89190620009a9565b6009556064620005ba8260026200098f565b620005c69190620009a9565b600a55612710620005d98260016200098f565b620005e59190620009a9565b600b55620005f4338262000617565b50620009df565b3390565b5f6200060d33848462000706565b5060015b92915050565b6001600160a01b038216620006735760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b60025462000682908262000766565b6002556001600160a01b0382165f90815260036020526040902054620006a9908262000766565b6001600160a01b0383165f818152600360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620006fa9085815260200190565b60405180910390a35050565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80620007748385620009c9565b905083811015620007c85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200066a565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620007f857607f821691505b6020821081036200081757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200086a575f81815260208120601f850160051c81016020861015620008455750805b601f850160051c820191505b81811015620008665782815560010162000851565b5050505b505050565b81516001600160401b038111156200088b576200088b620007cf565b620008a3816200089c8454620007e3565b846200081d565b602080601f831160018114620008d9575f8415620008c15750858301515b5f19600386901b1c1916600185901b17855562000866565b5f85815260208120601f198616915b828110156200090957888601518255948401946001909101908401620008e8565b50858210156200092757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000948575f80fd5b81516001600160a01b0381168114620007c8575f80fd5b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156200061157620006116200095f565b80820281158282048414176200061157620006116200095f565b5f82620009c457634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200061157620006116200095f565b60805160a0516127ca62000a2b5f395f81816103ba01526110e401525f8181610810015281816120d901528181612190015281816121cc01528181612238015261229301526127ca5ff3fe608060405260043610610236575f3560e01c80638cd4426d11610129578063c0246668116100a8578063dd62ed3e1161006d578063dd62ed3e1461074f578063e16830a814610793578063f2fde38b146107b2578063f5b3c3bf146107d1578063f887ea40146107ff575f80fd5b8063c024666814610628578063c16dd4a414610647578063c18bc19514610666578063d212a69a14610685578063d3f6a15714610730575f80fd5b80639fccce32116100ee5780639fccce32146105a1578063a457c2d7146105b6578063a9059cbb146105d5578063b8863115146105f4578063b9e418e714610614575f80fd5b80638cd4426d146105045780638da5cb5b1461052357806395d89b411461054057806396880b17146105545780639e252f0014610582575f80fd5b806339509351116101b55780636ddd17131161017a5780636ddd17131461046957806370a0823114610489578063715018a6146104bd578063751039fc146104d15780637571336a146104e5575f80fd5b8063395093511461038a57806349bd5a5e146103a95780634fbee193146103f4578063555467a11461042b578063599270441461044a575f80fd5b80631a8145bb116101fb5780631a8145bb146103075780631f3fed8f1461031c57806323b872dd14610331578063313ce567146103505780633265e8461461036b575f80fd5b806306fdde0314610241578063095ea7b31461026b57806310d5de531461029a57806311a582c3146102c857806318160ddd146102e9575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b50610255610832565b604051610262919061233b565b60405180910390f35b348015610276575f80fd5b5061028a61028536600461239d565b6108c1565b6040519015158152602001610262565b3480156102a5575f80fd5b5061028a6102b43660046123c7565b60126020525f908152604090205460ff1681565b3480156102d3575f80fd5b506102e76102e23660046123e2565b6108d7565b005b3480156102f4575f80fd5b506002545b604051908152602001610262565b348015610312575f80fd5b506102f9600d5481565b348015610327575f80fd5b506102f9600c5481565b34801561033c575f80fd5b5061028a61034b366004612402565b610a76565b34801561035b575f80fd5b5060405160128152602001610262565b348015610376575f80fd5b506102e7610385366004612450565b610ade565b348015610395575f80fd5b5061028a6103a436600461239d565b610d20565b3480156103b4575f80fd5b506103dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610262565b3480156103ff575f80fd5b5061028a61040e3660046123c7565b6001600160a01b03165f9081526011602052604090205460ff1690565b348015610436575f80fd5b5061028a6104453660046124c0565b610d55565b348015610455575f80fd5b506006546103dc906001600160a01b031681565b348015610474575f80fd5b5060075461028a90600160a81b900460ff1681565b348015610494575f80fd5b506102f96104a33660046123c7565b6001600160a01b03165f9081526003602052604090205490565b3480156104c8575f80fd5b506102e7610d8f565b3480156104dc575f80fd5b506102e7610e02565b3480156104f0575f80fd5b506102e76104ff3660046124e4565b610e40565b34801561050f575f80fd5b506102e761051e36600461239d565b610e94565b34801561052e575f80fd5b506005546001600160a01b03166103dc565b34801561054b575f80fd5b50610255610f52565b34801561055f575f80fd5b5061028a61056e3660046123c7565b60136020525f908152604090205460ff1681565b34801561058d575f80fd5b506102e761059c3660046124c0565b610f61565b3480156105ac575f80fd5b506102f9600e5481565b3480156105c1575f80fd5b5061028a6105d036600461239d565b610fc6565b3480156105e0575f80fd5b5061028a6105ef36600461239d565b611013565b3480156105ff575f80fd5b5060075461028a90600160b01b900460ff1681565b34801561061f575f80fd5b506102e761101f565b348015610633575f80fd5b506102e76106423660046124e4565b611064565b348015610652575f80fd5b506102e76106613660046124e4565b6110b8565b348015610671575f80fd5b506102e76106803660046124c0565b61118d565b348015610690575f80fd5b506014546106e49060ff80821691610100810482169162010000820481169163010000008104821691600160201b8204811691650100000000008104821691600160301b8204811691600160381b90041688565b6040805160ff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e082015261010001610262565b34801561073b575f80fd5b506102e761074a36600461251b565b61126d565b34801561075a575f80fd5b506102f961076936600461251b565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561079e575f80fd5b506102e76107ad3660046124e4565b6112c5565b3480156107bd575f80fd5b506102e76107cc3660046123c7565b611319565b3480156107dc575f80fd5b5061028a6107eb3660046123c7565b60106020525f908152604090205460ff1681565b34801561080a575f80fd5b506103dc7f000000000000000000000000000000000000000000000000000000000000000081565b60605f805461084090612547565b80601f016020809104026020016040519081016040528092919081815260200182805461086c90612547565b80156108b75780601f1061088e576101008083540402835291602001916108b7565b820191905f5260205f20905b81548152906001019060200180831161089a57829003601f168201915b5050505050905090565b5f6108cd338484611403565b5060015b92915050565b6005546001600160a01b0316331461090a5760405162461bcd60e51b81526004016109019061257f565b60405180910390fd5b606461091560025490565b61091f91906125c8565b6103e88361092c60025490565b61093691906125e7565b61094091906125c8565b101561099a5760405162461bcd60e51b815260206004820152602360248201527f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60448201526220312560e81b6064820152608401610901565b60646109a560025490565b6109af91906125c8565b6103e8826109bc60025490565b6109c691906125e7565b6109d091906125c8565b1015610a2a5760405162461bcd60e51b8152602060048201526024808201527f6d617853656c6c416d6f756e74206d75737420626520686967686572207468616044820152636e20312560e01b6064820152608401610901565b6103e882610a3760025490565b610a4191906125e7565b610a4b91906125c8565b6008556103e881610a5b60025490565b610a6591906125e7565b610a6f91906125c8565b6009555050565b5f610a82848484611464565b610ad38433610ace8560405180606001604052806028815260200161276d602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611b4c565b611403565b5060015b9392505050565b6005546001600160a01b03163314610b085760405162461bcd60e51b81526004016109019061257f565b8360145f0160026101000a81548160ff021916908360ff1602179055508060145f0160066101000a81548160ff021916908360ff1602179055508560145f0160016101000a81548160ff021916908360ff1602179055508260145f0160056101000a81548160ff021916908360ff1602179055508460145f0160036101000a81548160ff021916908360ff1602179055508160145f0160076101000a81548160ff021916908360ff16021790555060145f0160029054906101000a900460ff1660145f0160039054906101000a900460ff1660145f0160019054906101000a900460ff16610bf691906125fe565b610c0091906125fe565b6014805460ff191660ff9283161790819055600160301b8104821691610c3a91600160381b810482169165010000000000909104166125fe565b610c4491906125fe565b6014805460ff928316600160201b0264ff000000001982168117909255601e9183169216919091171115610cba5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610901565b601454601e600160201b90910460ff161115610d185760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610901565b505050505050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108cd918590610ace9086611b84565b6005545f906001600160a01b03163314610d815760405162461bcd60e51b81526004016109019061257f565b50600b81905560015b919050565b6005546001600160a01b03163314610db95760405162461bcd60e51b81526004016109019061257f565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e2c5760405162461bcd60e51b81526004016109019061257f565b600254600855600254600955600254600a55565b6005546001600160a01b03163314610e6a5760405162461bcd60e51b81526004016109019061257f565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ebe5760405162461bcd60e51b81526004016109019061257f565b816001600160a01b031663a9059cbb610edf6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610f29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4d9190612617565b505050565b60606001805461084090612547565b6005546001600160a01b03163314610f8b5760405162461bcd60e51b81526004016109019061257f565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fc2573d5f803e3d5ffd5b5050565b5f6108cd3384610ace8560405180606001604052806025815260200161272260259139335f9081526004602090815260408083206001600160a01b038d1684529091529020549190611b4c565b5f6108cd338484611464565b6005546001600160a01b031633146110495760405162461bcd60e51b81526004016109019061257f565b6007805461ffff60a01b191661010160a01b17905543600f55565b6005546001600160a01b0316331461108e5760405162461bcd60e51b81526004016109019061257f565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110e25760405162461bcd60e51b81526004016109019061257f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111635760405162461bcd60e51b815260206004820152601760248201527f4d757374206b65657020756e69737761705632506169720000000000000000006044820152606401610901565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111b75760405162461bcd60e51b81526004016109019061257f565b60646111c260025490565b6111cc91906125c8565b6103e8826111d960025490565b6111e391906125e7565b6111ed91906125c8565b10156112465760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610901565b6103e88161125360025490565b61125d91906125e7565b61126791906125c8565b600a5550565b6005546001600160a01b031633146112975760405162461bcd60e51b81526004016109019061257f565b600780546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b6005546001600160a01b031633146112ef5760405162461bcd60e51b81526004016109019061257f565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113435760405162461bcd60e51b81526004016109019061257f565b6001600160a01b0381166113a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610901565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b805f0361147657610f4d83835f611be2565b6005546001600160a01b038481169116148015906114a257506005546001600160a01b03838116911614155b80156114b85750600754600160b01b900460ff16155b1561174d57600754600160a01b900460ff16611550576001600160a01b0383165f9081526011602052604090205460ff168061150b57506001600160a01b0382165f9081526011602052604090205460ff165b6115505760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610901565b6001600160a01b0383165f9081526010602052604090205460ff16801561158f57506001600160a01b0382165f9081526012602052604090205460ff16155b156115eb576008548111156115e65760405162461bcd60e51b815260206004820152601c60248201527f627579207472616e73666572206f766572206d617820616d6f756e74000000006044820152606401610901565b611681565b6001600160a01b0382165f9081526010602052604090205460ff16801561162a57506001600160a01b0383165f9081526012602052604090205460ff16155b15611681576009548111156116815760405162461bcd60e51b815260206004820152601d60248201527f53656c6c207472616e73666572206f766572206d617820616d6f756e740000006044820152606401610901565b5f61168d848484611c9f565b9050836001600160a01b03166116a4858585611c9f565b6001600160a01b0316146116c3576116bd838284611be2565b50505050565b6001600160a01b0383165f9081526013602052604090205460ff1661174b57600a546001600160a01b0384165f908152600360205260409020546117079084612632565b111561174b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610901565b505b305f90815260036020526040902054600b54811080159081906117795750600754600160a81b900460ff165b801561178f5750600754600160b01b900460ff16155b80156117b257506001600160a01b0384165f9081526010602052604090205460ff165b80156117d657506001600160a01b0385165f9081526011602052604090205460ff16155b80156117fa57506001600160a01b0384165f9081526011602052604090205460ff16155b15611828576007805460ff60b01b1916600160b01b17905561181a611d10565b6007805460ff60b01b191690555b6007546001600160a01b0386165f9081526011602052604090205460ff600160b01b90920482161591168061187457506001600160a01b0385165f9081526011602052604090205460ff165b1561187c57505f5b8015611b41575f600f54431015611904576118a3606461189d876063611f32565b90611fb0565b905060636118b282605e6125e7565b6118bc91906125c8565b600c5f8282546118cc9190612632565b90915550606390506118df8260056125e7565b6118e991906125c8565b600e5f8282546118f99190612632565b90915550611b229050565b6001600160a01b0386165f9081526010602052604090205460ff1680156119365750601454600160201b900460ff1615155b15611a28576006546119529088906001600160a01b0316611ff1565b156119605750505050505050565b60145461197f9060649061189d908890600160201b900460ff16611f32565b60145490915060ff600160201b82048116916119a491600160381b90910416836125e7565b6119ae91906125c8565b600d5f8282546119be9190612632565b909155505060145460ff600160201b82048116916119e7916501000000000090910416836125e7565b6119f191906125c8565b600c5f828254611a019190612632565b909155505060145460ff600160201b82048116916118df91600160301b90910416836125e7565b6001600160a01b0387165f9081526010602052604090205460ff168015611a53575060145460ff1615155b15611b2257601454611a709060649061189d90889060ff16611f32565b60145490915060ff80821691611a8f91630100000090910416836125e7565b611a9991906125c8565b600d5f828254611aa99190612632565b909155505060145460ff80821691611ac89161010090910416836125e7565b611ad291906125c8565b600c5f828254611ae29190612632565b909155505060145460ff80821691611b02916201000090910416836125e7565b611b0c91906125c8565b600e5f828254611b1c9190612632565b90915550505b8015611b3357611b33873083611be2565b611b3d8186612645565b9450505b610d18868686611be2565b5f8184841115611b6f5760405162461bcd60e51b8152600401610901919061233b565b505f611b7b8486612645565b95945050505050565b5f80611b908385612632565b905083811015610ad75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610901565b611c1e81604051806060016040528060268152602001612747602691396001600160a01b0386165f908152600360205260409020549190611b4c565b6001600160a01b038085165f908152600360205260408082209390935590841681522054611c4c9082611b84565b6001600160a01b038084165f8181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114579085815260200190565b6001600160a01b0383165f9081526003602052604081205482118015611cdc57506001600160a01b0384165f9081526012602052604090205460ff165b15611d08576001600160a01b0383165f9081526010602052604090205460ff1615611d0857505f610ad7565b509192915050565b305f9081526003602052604081205490505f600e54600c54600d54611d359190612632565b611d3f9190612632565b90505f821580611d4d575081155b15611d5757505050565b600b54611d659060146125e7565b831115611d7d57600b54611d7a9060146125e7565b92505b5f600283600d5486611d8f91906125e7565b611d9991906125c8565b611da391906125c8565b90505f611db08583612043565b905047611dbc82612084565b5f611dc74783612043565b90505f611de38761189d600c5485611f3290919063ffffffff16565b90505f611dff8861189d600e5486611f3290919063ffffffff16565b90505f611e0c8284612632565b611e169085612645565b5f600d819055600c819055600e5590508615801590611e3457505f81115b15611e7d57611e438782612232565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6006546001600160a01b0316611e938447612645565b6040515f81818185875af1925050503d805f8114611ecc576040519150601f19603f3d011682016040523d82523d5f602084013e611ed1565b606091505b50506007546040519199506001600160a01b03169047905f81818185875af1925050503d805f8114611f1e576040519150601f19603f3d011682016040523d82523d5f602084013e611f23565b606091505b50505050505050505050505050565b5f825f03611f4157505f6108d1565b5f611f4c83856125e7565b905082611f5985836125c8565b14610ad75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610901565b5f610ad783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061230f565b6001600160a01b0382165f9081526010602052604081205460ff1615801561202e57506001600160a01b0382165f90815260036020526040812054115b1561203b575060016108d1565b505f92915050565b5f610ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b4c565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120b7576120b7612658565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612133573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612157919061266c565b8160018151811061216a5761216a612658565b60200260200101906001600160a01b031690816001600160a01b0316815250506121b5307f000000000000000000000000000000000000000000000000000000000000000084611403565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906122099085905f90869030904290600401612687565b5f604051808303815f87803b158015612220575f80fd5b505af1158015610d18573d5f803e3d5ffd5b61225d307f000000000000000000000000000000000000000000000000000000000000000084611403565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156122e3573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061230891906126f6565b5050505050565b5f818361232f5760405162461bcd60e51b8152600401610901919061233b565b505f611b7b84866125c8565b5f6020808352835180828501525f5b818110156123665785810183015185820160400152820161234a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461239a575f80fd5b50565b5f80604083850312156123ae575f80fd5b82356123b981612386565b946020939093013593505050565b5f602082840312156123d7575f80fd5b8135610ad781612386565b5f80604083850312156123f3575f80fd5b50508035926020909101359150565b5f805f60608486031215612414575f80fd5b833561241f81612386565b9250602084013561242f81612386565b929592945050506040919091013590565b803560ff81168114610d8a575f80fd5b5f805f805f8060c08789031215612465575f80fd5b61246e87612440565b955061247c60208801612440565b945061248a60408801612440565b935061249860608801612440565b92506124a660808801612440565b91506124b460a08801612440565b90509295509295509295565b5f602082840312156124d0575f80fd5b5035919050565b801515811461239a575f80fd5b5f80604083850312156124f5575f80fd5b823561250081612386565b91506020830135612510816124d7565b809150509250929050565b5f806040838503121561252c575f80fd5b823561253781612386565b9150602083013561251081612386565b600181811c9082168061255b57607f821691505b60208210810361257957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f826125e257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108d1576108d16125b4565b60ff81811683821601908111156108d1576108d16125b4565b5f60208284031215612627575f80fd5b8151610ad7816124d7565b808201808211156108d1576108d16125b4565b818103818111156108d1576108d16125b4565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561267c575f80fd5b8151610ad781612386565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156126d55784516001600160a01b0316835293830193918301916001016126b0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612708575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122024ce7653f799949343e1101e56be8cf77798d1fbe803387b2294e198fa54ec5664736f6c63430008140033
Deployed Bytecode
0x608060405260043610610236575f3560e01c80638cd4426d11610129578063c0246668116100a8578063dd62ed3e1161006d578063dd62ed3e1461074f578063e16830a814610793578063f2fde38b146107b2578063f5b3c3bf146107d1578063f887ea40146107ff575f80fd5b8063c024666814610628578063c16dd4a414610647578063c18bc19514610666578063d212a69a14610685578063d3f6a15714610730575f80fd5b80639fccce32116100ee5780639fccce32146105a1578063a457c2d7146105b6578063a9059cbb146105d5578063b8863115146105f4578063b9e418e714610614575f80fd5b80638cd4426d146105045780638da5cb5b1461052357806395d89b411461054057806396880b17146105545780639e252f0014610582575f80fd5b806339509351116101b55780636ddd17131161017a5780636ddd17131461046957806370a0823114610489578063715018a6146104bd578063751039fc146104d15780637571336a146104e5575f80fd5b8063395093511461038a57806349bd5a5e146103a95780634fbee193146103f4578063555467a11461042b578063599270441461044a575f80fd5b80631a8145bb116101fb5780631a8145bb146103075780631f3fed8f1461031c57806323b872dd14610331578063313ce567146103505780633265e8461461036b575f80fd5b806306fdde0314610241578063095ea7b31461026b57806310d5de531461029a57806311a582c3146102c857806318160ddd146102e9575f80fd5b3661023d57005b5f80fd5b34801561024c575f80fd5b50610255610832565b604051610262919061233b565b60405180910390f35b348015610276575f80fd5b5061028a61028536600461239d565b6108c1565b6040519015158152602001610262565b3480156102a5575f80fd5b5061028a6102b43660046123c7565b60126020525f908152604090205460ff1681565b3480156102d3575f80fd5b506102e76102e23660046123e2565b6108d7565b005b3480156102f4575f80fd5b506002545b604051908152602001610262565b348015610312575f80fd5b506102f9600d5481565b348015610327575f80fd5b506102f9600c5481565b34801561033c575f80fd5b5061028a61034b366004612402565b610a76565b34801561035b575f80fd5b5060405160128152602001610262565b348015610376575f80fd5b506102e7610385366004612450565b610ade565b348015610395575f80fd5b5061028a6103a436600461239d565b610d20565b3480156103b4575f80fd5b506103dc7f000000000000000000000000383bbe4afa6130fe31a5e574ec96cb5a78d75f1581565b6040516001600160a01b039091168152602001610262565b3480156103ff575f80fd5b5061028a61040e3660046123c7565b6001600160a01b03165f9081526011602052604090205460ff1690565b348015610436575f80fd5b5061028a6104453660046124c0565b610d55565b348015610455575f80fd5b506006546103dc906001600160a01b031681565b348015610474575f80fd5b5060075461028a90600160a81b900460ff1681565b348015610494575f80fd5b506102f96104a33660046123c7565b6001600160a01b03165f9081526003602052604090205490565b3480156104c8575f80fd5b506102e7610d8f565b3480156104dc575f80fd5b506102e7610e02565b3480156104f0575f80fd5b506102e76104ff3660046124e4565b610e40565b34801561050f575f80fd5b506102e761051e36600461239d565b610e94565b34801561052e575f80fd5b506005546001600160a01b03166103dc565b34801561054b575f80fd5b50610255610f52565b34801561055f575f80fd5b5061028a61056e3660046123c7565b60136020525f908152604090205460ff1681565b34801561058d575f80fd5b506102e761059c3660046124c0565b610f61565b3480156105ac575f80fd5b506102f9600e5481565b3480156105c1575f80fd5b5061028a6105d036600461239d565b610fc6565b3480156105e0575f80fd5b5061028a6105ef36600461239d565b611013565b3480156105ff575f80fd5b5060075461028a90600160b01b900460ff1681565b34801561061f575f80fd5b506102e761101f565b348015610633575f80fd5b506102e76106423660046124e4565b611064565b348015610652575f80fd5b506102e76106613660046124e4565b6110b8565b348015610671575f80fd5b506102e76106803660046124c0565b61118d565b348015610690575f80fd5b506014546106e49060ff80821691610100810482169162010000820481169163010000008104821691600160201b8204811691650100000000008104821691600160301b8204811691600160381b90041688565b6040805160ff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e082015261010001610262565b34801561073b575f80fd5b506102e761074a36600461251b565b61126d565b34801561075a575f80fd5b506102f961076936600461251b565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561079e575f80fd5b506102e76107ad3660046124e4565b6112c5565b3480156107bd575f80fd5b506102e76107cc3660046123c7565b611319565b3480156107dc575f80fd5b5061028a6107eb3660046123c7565b60106020525f908152604090205460ff1681565b34801561080a575f80fd5b506103dc7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60605f805461084090612547565b80601f016020809104026020016040519081016040528092919081815260200182805461086c90612547565b80156108b75780601f1061088e576101008083540402835291602001916108b7565b820191905f5260205f20905b81548152906001019060200180831161089a57829003601f168201915b5050505050905090565b5f6108cd338484611403565b5060015b92915050565b6005546001600160a01b0316331461090a5760405162461bcd60e51b81526004016109019061257f565b60405180910390fd5b606461091560025490565b61091f91906125c8565b6103e88361092c60025490565b61093691906125e7565b61094091906125c8565b101561099a5760405162461bcd60e51b815260206004820152602360248201527f6d6178427579416d6f756e74206d75737420626520686967686572207468616e60448201526220312560e81b6064820152608401610901565b60646109a560025490565b6109af91906125c8565b6103e8826109bc60025490565b6109c691906125e7565b6109d091906125c8565b1015610a2a5760405162461bcd60e51b8152602060048201526024808201527f6d617853656c6c416d6f756e74206d75737420626520686967686572207468616044820152636e20312560e01b6064820152608401610901565b6103e882610a3760025490565b610a4191906125e7565b610a4b91906125c8565b6008556103e881610a5b60025490565b610a6591906125e7565b610a6f91906125c8565b6009555050565b5f610a82848484611464565b610ad38433610ace8560405180606001604052806028815260200161276d602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611b4c565b611403565b5060015b9392505050565b6005546001600160a01b03163314610b085760405162461bcd60e51b81526004016109019061257f565b8360145f0160026101000a81548160ff021916908360ff1602179055508060145f0160066101000a81548160ff021916908360ff1602179055508560145f0160016101000a81548160ff021916908360ff1602179055508260145f0160056101000a81548160ff021916908360ff1602179055508460145f0160036101000a81548160ff021916908360ff1602179055508160145f0160076101000a81548160ff021916908360ff16021790555060145f0160029054906101000a900460ff1660145f0160039054906101000a900460ff1660145f0160019054906101000a900460ff16610bf691906125fe565b610c0091906125fe565b6014805460ff191660ff9283161790819055600160301b8104821691610c3a91600160381b810482169165010000000000909104166125fe565b610c4491906125fe565b6014805460ff928316600160201b0264ff000000001982168117909255601e9183169216919091171115610cba5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610901565b601454601e600160201b90910460ff161115610d185760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610901565b505050505050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108cd918590610ace9086611b84565b6005545f906001600160a01b03163314610d815760405162461bcd60e51b81526004016109019061257f565b50600b81905560015b919050565b6005546001600160a01b03163314610db95760405162461bcd60e51b81526004016109019061257f565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e2c5760405162461bcd60e51b81526004016109019061257f565b600254600855600254600955600254600a55565b6005546001600160a01b03163314610e6a5760405162461bcd60e51b81526004016109019061257f565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ebe5760405162461bcd60e51b81526004016109019061257f565b816001600160a01b031663a9059cbb610edf6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610f29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4d9190612617565b505050565b60606001805461084090612547565b6005546001600160a01b03163314610f8b5760405162461bcd60e51b81526004016109019061257f565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fc2573d5f803e3d5ffd5b5050565b5f6108cd3384610ace8560405180606001604052806025815260200161272260259139335f9081526004602090815260408083206001600160a01b038d1684529091529020549190611b4c565b5f6108cd338484611464565b6005546001600160a01b031633146110495760405162461bcd60e51b81526004016109019061257f565b6007805461ffff60a01b191661010160a01b17905543600f55565b6005546001600160a01b0316331461108e5760405162461bcd60e51b81526004016109019061257f565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110e25760405162461bcd60e51b81526004016109019061257f565b7f000000000000000000000000383bbe4afa6130fe31a5e574ec96cb5a78d75f156001600160a01b0316826001600160a01b0316036111635760405162461bcd60e51b815260206004820152601760248201527f4d757374206b65657020756e69737761705632506169720000000000000000006044820152606401610901565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111b75760405162461bcd60e51b81526004016109019061257f565b60646111c260025490565b6111cc91906125c8565b6103e8826111d960025490565b6111e391906125e7565b6111ed91906125c8565b10156112465760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b6064820152608401610901565b6103e88161125360025490565b61125d91906125e7565b61126791906125c8565b600a5550565b6005546001600160a01b031633146112975760405162461bcd60e51b81526004016109019061257f565b600780546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b6005546001600160a01b031633146112ef5760405162461bcd60e51b81526004016109019061257f565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113435760405162461bcd60e51b81526004016109019061257f565b6001600160a01b0381166113a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610901565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b805f0361147657610f4d83835f611be2565b6005546001600160a01b038481169116148015906114a257506005546001600160a01b03838116911614155b80156114b85750600754600160b01b900460ff16155b1561174d57600754600160a01b900460ff16611550576001600160a01b0383165f9081526011602052604090205460ff168061150b57506001600160a01b0382165f9081526011602052604090205460ff165b6115505760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610901565b6001600160a01b0383165f9081526010602052604090205460ff16801561158f57506001600160a01b0382165f9081526012602052604090205460ff16155b156115eb576008548111156115e65760405162461bcd60e51b815260206004820152601c60248201527f627579207472616e73666572206f766572206d617820616d6f756e74000000006044820152606401610901565b611681565b6001600160a01b0382165f9081526010602052604090205460ff16801561162a57506001600160a01b0383165f9081526012602052604090205460ff16155b15611681576009548111156116815760405162461bcd60e51b815260206004820152601d60248201527f53656c6c207472616e73666572206f766572206d617820616d6f756e740000006044820152606401610901565b5f61168d848484611c9f565b9050836001600160a01b03166116a4858585611c9f565b6001600160a01b0316146116c3576116bd838284611be2565b50505050565b6001600160a01b0383165f9081526013602052604090205460ff1661174b57600a546001600160a01b0384165f908152600360205260409020546117079084612632565b111561174b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610901565b505b305f90815260036020526040902054600b54811080159081906117795750600754600160a81b900460ff165b801561178f5750600754600160b01b900460ff16155b80156117b257506001600160a01b0384165f9081526010602052604090205460ff165b80156117d657506001600160a01b0385165f9081526011602052604090205460ff16155b80156117fa57506001600160a01b0384165f9081526011602052604090205460ff16155b15611828576007805460ff60b01b1916600160b01b17905561181a611d10565b6007805460ff60b01b191690555b6007546001600160a01b0386165f9081526011602052604090205460ff600160b01b90920482161591168061187457506001600160a01b0385165f9081526011602052604090205460ff165b1561187c57505f5b8015611b41575f600f54431015611904576118a3606461189d876063611f32565b90611fb0565b905060636118b282605e6125e7565b6118bc91906125c8565b600c5f8282546118cc9190612632565b90915550606390506118df8260056125e7565b6118e991906125c8565b600e5f8282546118f99190612632565b90915550611b229050565b6001600160a01b0386165f9081526010602052604090205460ff1680156119365750601454600160201b900460ff1615155b15611a28576006546119529088906001600160a01b0316611ff1565b156119605750505050505050565b60145461197f9060649061189d908890600160201b900460ff16611f32565b60145490915060ff600160201b82048116916119a491600160381b90910416836125e7565b6119ae91906125c8565b600d5f8282546119be9190612632565b909155505060145460ff600160201b82048116916119e7916501000000000090910416836125e7565b6119f191906125c8565b600c5f828254611a019190612632565b909155505060145460ff600160201b82048116916118df91600160301b90910416836125e7565b6001600160a01b0387165f9081526010602052604090205460ff168015611a53575060145460ff1615155b15611b2257601454611a709060649061189d90889060ff16611f32565b60145490915060ff80821691611a8f91630100000090910416836125e7565b611a9991906125c8565b600d5f828254611aa99190612632565b909155505060145460ff80821691611ac89161010090910416836125e7565b611ad291906125c8565b600c5f828254611ae29190612632565b909155505060145460ff80821691611b02916201000090910416836125e7565b611b0c91906125c8565b600e5f828254611b1c9190612632565b90915550505b8015611b3357611b33873083611be2565b611b3d8186612645565b9450505b610d18868686611be2565b5f8184841115611b6f5760405162461bcd60e51b8152600401610901919061233b565b505f611b7b8486612645565b95945050505050565b5f80611b908385612632565b905083811015610ad75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610901565b611c1e81604051806060016040528060268152602001612747602691396001600160a01b0386165f908152600360205260409020549190611b4c565b6001600160a01b038085165f908152600360205260408082209390935590841681522054611c4c9082611b84565b6001600160a01b038084165f8181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114579085815260200190565b6001600160a01b0383165f9081526003602052604081205482118015611cdc57506001600160a01b0384165f9081526012602052604090205460ff165b15611d08576001600160a01b0383165f9081526010602052604090205460ff1615611d0857505f610ad7565b509192915050565b305f9081526003602052604081205490505f600e54600c54600d54611d359190612632565b611d3f9190612632565b90505f821580611d4d575081155b15611d5757505050565b600b54611d659060146125e7565b831115611d7d57600b54611d7a9060146125e7565b92505b5f600283600d5486611d8f91906125e7565b611d9991906125c8565b611da391906125c8565b90505f611db08583612043565b905047611dbc82612084565b5f611dc74783612043565b90505f611de38761189d600c5485611f3290919063ffffffff16565b90505f611dff8861189d600e5486611f3290919063ffffffff16565b90505f611e0c8284612632565b611e169085612645565b5f600d819055600c819055600e5590508615801590611e3457505f81115b15611e7d57611e438782612232565b60408051878152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6006546001600160a01b0316611e938447612645565b6040515f81818185875af1925050503d805f8114611ecc576040519150601f19603f3d011682016040523d82523d5f602084013e611ed1565b606091505b50506007546040519199506001600160a01b03169047905f81818185875af1925050503d805f8114611f1e576040519150601f19603f3d011682016040523d82523d5f602084013e611f23565b606091505b50505050505050505050505050565b5f825f03611f4157505f6108d1565b5f611f4c83856125e7565b905082611f5985836125c8565b14610ad75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610901565b5f610ad783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061230f565b6001600160a01b0382165f9081526010602052604081205460ff1615801561202e57506001600160a01b0382165f90815260036020526040812054115b1561203b575060016108d1565b505f92915050565b5f610ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b4c565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120b7576120b7612658565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612133573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612157919061266c565b8160018151811061216a5761216a612658565b60200260200101906001600160a01b031690816001600160a01b0316815250506121b5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611403565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906122099085905f90869030904290600401612687565b5f604051808303815f87803b158015612220575f80fd5b505af1158015610d18573d5f803e3d5ffd5b61225d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611403565b60405163f305d71960e01b81523060048201819052602482018490525f60448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156122e3573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061230891906126f6565b5050505050565b5f818361232f5760405162461bcd60e51b8152600401610901919061233b565b505f611b7b84866125c8565b5f6020808352835180828501525f5b818110156123665785810183015185820160400152820161234a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461239a575f80fd5b50565b5f80604083850312156123ae575f80fd5b82356123b981612386565b946020939093013593505050565b5f602082840312156123d7575f80fd5b8135610ad781612386565b5f80604083850312156123f3575f80fd5b50508035926020909101359150565b5f805f60608486031215612414575f80fd5b833561241f81612386565b9250602084013561242f81612386565b929592945050506040919091013590565b803560ff81168114610d8a575f80fd5b5f805f805f8060c08789031215612465575f80fd5b61246e87612440565b955061247c60208801612440565b945061248a60408801612440565b935061249860608801612440565b92506124a660808801612440565b91506124b460a08801612440565b90509295509295509295565b5f602082840312156124d0575f80fd5b5035919050565b801515811461239a575f80fd5b5f80604083850312156124f5575f80fd5b823561250081612386565b91506020830135612510816124d7565b809150509250929050565b5f806040838503121561252c575f80fd5b823561253781612386565b9150602083013561251081612386565b600181811c9082168061255b57607f821691505b60208210810361257957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f826125e257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176108d1576108d16125b4565b60ff81811683821601908111156108d1576108d16125b4565b5f60208284031215612627575f80fd5b8151610ad7816124d7565b808201808211156108d1576108d16125b4565b818103818111156108d1576108d16125b4565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561267c575f80fd5b8151610ad781612386565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156126d55784516001600160a01b0316835293830193918301916001016126b0565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612708575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a206465637265617365642063616e6e6f742062652062656c6f77207a65726f45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122024ce7653f799949343e1101e56be8cf77798d1fbe803387b2294e198fa54ec5664736f6c63430008140033
Deployed Bytecode Sourcemap
8636:14285:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5668:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5164:210;;;;;;;;;;-1:-1:-1;5164:210:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5164:210:0;1023:187:1;9465:63:0;;;;;;;;;;-1:-1:-1;9465:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21075:555;;;;;;;;;;-1:-1:-1;21075:555:0;;;;;:::i;:::-;;:::i;:::-;;5888:108;;;;;;;;;;-1:-1:-1;5976:12:0;;5888:108;;;1866:25:1;;;1854:2;1839:18;5888:108:0;1720:177:1;9251:33:0;;;;;;;;;;;;;;;;9211;;;;;;;;;;;;;;;;6228:454;;;;;;;;;;-1:-1:-1;6228:454:0;;;;;:::i;:::-;;:::i;5567:93::-;;;;;;;;;;-1:-1:-1;5567:93:0;;5650:2;2505:36:1;;2493:2;2478:18;5567:93:0;2363:184:1;21954:964:0;;;;;;;;;;-1:-1:-1;21954:964:0;;;;;:::i;:::-;;:::i;4448:300::-;;;;;;;;;;-1:-1:-1;4448:300:0;;;;;:::i;:::-;;:::i;8837:38::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3417:32:1;;;3399:51;;3387:2;3372:18;8837:38:0;3253:203:1;13228:126:0;;;;;;;;;;-1:-1:-1;13228:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;13318:28:0;13294:4;13318:28;;;:19;:28;;;;;;;;;13228:126;20875:192;;;;;;;;;;-1:-1:-1;20875:192:0;;;;;:::i;:::-;;:::i;8882:25::-;;;;;;;;;;-1:-1:-1;8882:25:0;;;;-1:-1:-1;;;;;8882:25:0;;;8991:31;;;;;;;;;;-1:-1:-1;8991:31:0;;;;-1:-1:-1;;;8991:31:0;;;;;;5382:177;;;;;;;;;;-1:-1:-1;5382:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;5533:18:0;5501:7;5533:18;;;:9;:18;;;;;;;5382:177;8192:148;;;;;;;;;;;;;:::i;13767:172::-;;;;;;;;;;;;;:::i;12913:167::-;;;;;;;;;;-1:-1:-1;12913:167:0;;;;;:::i;:::-;;:::i;14067:135::-;;;;;;;;;;-1:-1:-1;14067:135:0;;;;;:::i;:::-;;:::i;8105:79::-;;;;;;;;;;-1:-1:-1;8170:6:0;;-1:-1:-1;;;;;8170:6:0;8105:79;;5776:104;;;;;;;;;;;;;:::i;9535:58::-;;;;;;;;;;-1:-1:-1;9535:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13947:112;;;;;;;;;;-1:-1:-1;13947:112:0;;;;;:::i;:::-;;:::i;9291:27::-;;;;;;;;;;;;;;;;4756:400;;;;;;;;;;-1:-1:-1;4756:400:0;;;;;:::i;:::-;;:::i;6004:216::-;;;;;;;;;;-1:-1:-1;6004:216:0;;;;;:::i;:::-;;:::i;9029:22::-;;;;;;;;;;-1:-1:-1;9029:22:0;;;;-1:-1:-1;;;9029:22:0;;;;;;14468:139;;;;;;;;;;;;;:::i;13088:132::-;;;;;;;;;;-1:-1:-1;13088:132:0;;;;;:::i;:::-;;:::i;14615:177::-;;;;;;;;;;-1:-1:-1;14615:177:0;;;;;:::i;:::-;;:::i;21638:308::-;;;;;;;;;;-1:-1:-1;21638:308:0;;;;;:::i;:::-;;:::i;9872:296::-;;;;;;;;;;-1:-1:-1;9872:296:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9872:296:0;;;;;;;;;;;-1:-1:-1;;;9872:296:0;;;;;-1:-1:-1;;;9872:296:0;;;;;;;;;4477:4:1;4508:15;;;4490:34;;4560:15;;;4555:2;4540:18;;4533:43;4612:15;;;4592:18;;;4585:43;;;;4664:15;;;4659:2;4644:18;;4637:43;4717:15;;;4711:3;4696:19;;4689:44;4770:15;;4764:3;4749:19;;4742:44;4823:15;;4817:3;4802:19;;4795:44;4876:15;;;4870:3;4855:19;;4848:44;4454:3;4439:19;9872:296:0;4156:742:1;14800:197:0;;;;;;;;;;-1:-1:-1;14800:197:0;;;;;:::i;:::-;;:::i;4239:201::-;;;;;;;;;;-1:-1:-1;4239:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4405:18:0;;;4373:7;4405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4239:201;12736:169;;;;;;;;;;-1:-1:-1;12736:169:0;;;;;:::i;:::-;;:::i;8348:281::-;;;;;;;;;;-1:-1:-1;8348:281:0;;;;;:::i;:::-;;:::i;9357:42::-;;;;;;;;;;-1:-1:-1;9357:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8788;;;;;;;;;;;;;;;5668:100;5722:13;5755:5;5748:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5668:100;:::o;5164:210::-;5283:4;5305:39;2752:10;5328:7;5337:6;5305:8;:39::i;:::-;-1:-1:-1;5362:4:0;5164:210;;;;;:::o;21075:555::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;;;;;;;;;21274:3:::1;21258:13;5976:12:::0;;;5888:108;21258:13:::1;:19;;;;:::i;:::-;21248:4;21235:9;21219:13;5976:12:::0;;;5888:108;21219:13:::1;:25;;;;:::i;:::-;21218:34;;;;:::i;:::-;21217:61;;21195:146;;;::::0;-1:-1:-1;;;21195:146:0;;7006:2:1;21195:146:0::1;::::0;::::1;6988:21:1::0;7045:2;7025:18;;;7018:30;7084:34;7064:18;;;7057:62;-1:-1:-1;;;7135:18:1;;;7128:33;7178:19;;21195:146:0::1;6804:399:1::0;21195:146:0::1;21432:3;21416:13;5976:12:::0;;;5888:108;21416:13:::1;:19;;;;:::i;:::-;21406:4;21392:10;21376:13;5976:12:::0;;;5888:108;21376:13:::1;:26;;;;:::i;:::-;21375:35;;;;:::i;:::-;21374:62;;21352:148;;;::::0;-1:-1:-1;;;21352:148:0;;7410:2:1;21352:148:0::1;::::0;::::1;7392:21:1::0;7449:2;7429:18;;;7422:30;7488:34;7468:18;;;7461:62;-1:-1:-1;;;7539:18:1;;;7532:34;7583:19;;21352:148:0::1;7208:400:1::0;21352:148:0::1;21556:4;21543:9;21527:13;5976:12:::0;;;5888:108;21527:13:::1;:25;;;;:::i;:::-;21526:34;;;;:::i;:::-;21511:12;:49:::0;21618:4:::1;21604:10:::0;21588:13:::1;5976:12:::0;;;5888:108;21588:13:::1;:26;;;;:::i;:::-;21587:35;;;;:::i;:::-;21571:13;:51:::0;-1:-1:-1;;21075:555:0:o;6228:454::-;6368:4;6385:36;6395:6;6403:9;6414:6;6385:9;:36::i;:::-;6432:220;6455:6;2752:10;6503:138;6559:6;6503:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6503:19:0;;;;;;:11;:19;;;;;;;;2752:10;6503:33;;;;;;;;;;:37;:138::i;:::-;6432:8;:220::i;:::-;-1:-1:-1;6670:4:0;6228:454;;;;;;:::o;21954:964::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;22218:10:::1;22200:5;:15;;;:28;;;;;;;;;;;;;;;;;;22258:11;22239:5;:16;;;:30;;;;;;;;;;;;;;;;;;22306:16;22282:5;:21;;;:40;;;;;;;;;;;;;;;;;;22358:17;22333:5;:22;;;:42;;;;;;;;;;;;;;;;;;22412:16;22388:5;:21;;;:40;;;;;;;;;;;;;;;;;;22464:17;22439:5;:22;;;:42;;;;;;;;;;;;;;;;;;22602:5;:15;;;;;;;;;;;;22565:5;:21;;;;;;;;;;;;22528:5;:21;;;;;;;;;;;;:58;;;;:::i;:::-;:89;;;;:::i;:::-;22494:5;:123:::0;;-1:-1:-1;;22494:123:0::1;;::::0;;::::1;;::::0;;;;-1:-1:-1;;;22739:16:0;::::1;::::0;::::1;::::0;22663:60:::1;::::0;-1:-1:-1;;;22701:22:0;::::1;::::0;::::1;::::0;22663;;;::::1;;:60;:::i;:::-;:92;;;;:::i;:::-;22628:5;:127:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;22628:127:0::1;-1:-1:-1::0;;22628:127:0;::::1;::::0;::::1;::::0;;;22796:2:::1;22774:18:::0;;;;;;;;;:24:::1;;22766:66;;;::::0;-1:-1:-1;;;22766:66:0;;7968:2:1;22766:66:0::1;::::0;::::1;7950:21:1::0;8007:2;7987:18;;;7980:30;8046:31;8026:18;;;8019:59;8095:18;;22766:66:0::1;7766:353:1::0;22766:66:0::1;22851:5;:19:::0;22874:2:::1;-1:-1:-1::0;;;22851:19:0;;::::1;;;:25;;22843:67;;;::::0;-1:-1:-1;;;22843:67:0;;7968:2:1;22843:67:0::1;::::0;::::1;7950:21:1::0;8007:2;7987:18;;;7980:30;8046:31;8026:18;;;8019:59;8095:18;;22843:67:0::1;7766:353:1::0;22843:67:0::1;21954:964:::0;;;;;;:::o;4448:300::-;2752:10;4563:4;4657:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4657:34:0;;;;;;;;;;4563:4;;4585:133;;4635:7;;4657:50;;4696:10;4657:38;:50::i;20875:192::-;8018:6;;20984:4;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;-1:-1:-1;21006:19:0::1;:31:::0;;;21055:4:::1;8088:1;20875:192:::0;;;:::o;8192:148::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;8283:6:::1;::::0;8262:40:::1;::::0;8299:1:::1;::::0;-1:-1:-1;;;;;8283:6:0::1;::::0;8262:40:::1;::::0;8299:1;;8262:40:::1;8313:6;:19:::0;;-1:-1:-1;;;;;;8313:19:0::1;::::0;;8192:148::o;13767:172::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;5976:12;;13821::::1;:28:::0;5976:12;;13860:13:::1;:29:::0;5976:12;;13900:15:::1;:31:::0;13767:172::o;12913:167::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13026:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;13026:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12913:167::o;14067:135::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;14159:8:::1;-1:-1:-1::0;;;;;14152:25:0::1;;14178:7;8170:6:::0;;-1:-1:-1;;;;;8170:6:0;;8105:79;14178:7:::1;14152:42;::::0;-1:-1:-1;;;;;;14152:42:0::1;::::0;;;;;;-1:-1:-1;;;;;8316:32:1;;;14152:42:0::1;::::0;::::1;8298:51:1::0;8365:18;;;8358:34;;;8271:18;;14152:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14067:135:::0;;:::o;5776:104::-;5832:13;5865:7;5858:14;;;;;:::i;13947:112::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;8170:6;;14015:36:::1;::::0;-1:-1:-1;;;;;8170:6:0;;;;14015:36;::::1;;;::::0;14041:9;;14015:36:::1;::::0;;;14041:9;8170:6;14015:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13947:112:::0;:::o;4756:400::-;4876:4;4898:228;2752:10;4948:7;4970:145;5027:15;4970:145;;;;;;;;;;;;;;;;;2752:10;4970:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4970:34:0;;;;;;;;;;;;:38;:145::i;6004:216::-;6126:4;6148:42;2752:10;6172:9;6183:6;6148:9;:42::i;14468:139::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;14521:9:::1;:16:::0;;-1:-1:-1;;;;14548:18:0;-1:-1:-1;;;14548:18:0;;;14587:12:::1;14577:7;:22:::0;14468:139::o;13088:132::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13173:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;13173:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13088:132::o;14615:177::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;14708:13:::1;-1:-1:-1::0;;;;;14700:21:0::1;:4;-1:-1:-1::0;;;;;14700:21:0::1;::::0;14692:57:::1;;;::::0;-1:-1:-1;;;14692:57:0;;8855:2:1;14692:57:0::1;::::0;::::1;8837:21:1::0;8894:2;8874:18;;;8867:30;8933:25;8913:18;;;8906:53;8976:18;;14692:57:0::1;8653:347:1::0;14692:57:0::1;-1:-1:-1::0;;;;;14760:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;14760:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14615:177::o;21638:308::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;21805:3:::1;21789:13;5976:12:::0;;;5888:108;21789:13:::1;:19;;;;:::i;:::-;21779:4;21762:13;21746;5976:12:::0;;;5888:108;21746:13:::1;:29;;;;:::i;:::-;21745:38;;;;:::i;:::-;21744:65;;21722:149;;;::::0;-1:-1:-1;;;21722:149:0;;9207:2:1;21722:149:0::1;::::0;::::1;9189:21:1::0;9246:2;9226:18;;;9219:30;9285:34;9265:18;;;9258:62;-1:-1:-1;;;9336:18:1;;;9329:32;9378:19;;21722:149:0::1;9005:398:1::0;21722:149:0::1;21934:4;21917:13;21901;5976:12:::0;;;5888:108;21901:13:::1;:29;;;;:::i;:::-;21900:38;;;;:::i;:::-;21882:15;:56:::0;-1:-1:-1;21638:308:0:o;14800:197::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;14920:15:::1;:34:::0;;-1:-1:-1;;;;;14920:34:0;;::::1;-1:-1:-1::0;;;;;;14920:34:0;;::::1;;::::0;;;14965:10:::1;:24:::0;;;;;::::1;::::0;::::1;;::::0;;14800:197::o;12736:169::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12851:35:0;;;::::1;;::::0;;;:26:::1;:35;::::0;;;;:46;;-1:-1:-1;;12851:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12736:169::o;8348:281::-;8018:6;;-1:-1:-1;;;;;8018:6:0;2752:10;8018:22;8010:67;;;;-1:-1:-1;;;8010:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8451:22:0;::::1;8429:110;;;::::0;-1:-1:-1;;;8429:110:0;;9610:2:1;8429:110:0::1;::::0;::::1;9592:21:1::0;9649:2;9629:18;;;9622:30;9688:34;9668:18;;;9661:62;-1:-1:-1;;;9739:18:1;;;9732:36;9785:19;;8429:110:0::1;9408:402:1::0;8429:110:0::1;8576:6;::::0;8555:38:::1;::::0;-1:-1:-1;;;;;8555:38:0;;::::1;::::0;8576:6:::1;::::0;8555:38:::1;::::0;8576:6:::1;::::0;8555:38:::1;8604:6;:17:::0;;-1:-1:-1;;;;;;8604:17:0::1;-1:-1:-1::0;;;;;8604:17:0;;;::::1;::::0;;;::::1;::::0;;8348:281::o;7407:220::-;-1:-1:-1;;;;;7535:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7587:32;;1866:25:1;;;7587:32:0;;1839:18:1;7587:32:0;;;;;;;;7407:220;;;:::o;17080:3787::-;17217:6;17227:1;17217:11;17213:102;;17245:37;17261:6;17269:9;17280:1;17245:15;:37::i;17213:102::-;8170:6;;-1:-1:-1;;;;;17331:17:0;;;8170:6;;17331:17;;;;:41;;-1:-1:-1;8170:6:0;;-1:-1:-1;;;;;17352:20:0;;;8170:6;;17352:20;;17331:41;:56;;;;-1:-1:-1;17377:10:0;;-1:-1:-1;;;17377:10:0;;;;17376:11;17331:56;17327:1336;;;17409:9;;-1:-1:-1;;;17409:9:0;;;;17404:233;;-1:-1:-1;;;;;17469:27:0;;;;;;:19;:27;;;;;;;;;:86;;-1:-1:-1;;;;;;17525:30:0;;;;;;:19;:30;;;;;;;;17469:86;17439:182;;;;-1:-1:-1;;;17439:182:0;;10017:2:1;17439:182:0;;;9999:21:1;10056:2;10036:18;;;10029:30;-1:-1:-1;;;10075:18:1;;;10068:52;10137:18;;17439:182:0;9815:346:1;17439:182:0;-1:-1:-1;;;;;17675:18:0;;;;;;:10;:18;;;;;;;;:82;;;;-1:-1:-1;;;;;;17715:42:0;;;;;;:31;:42;;;;;;;;17714:43;17675:82;17653:505;;;17810:12;;17800:6;:22;;17792:63;;;;-1:-1:-1;;;17792:63:0;;10368:2:1;17792:63:0;;;10350:21:1;10407:2;10387:18;;;10380:30;10446;10426:18;;;10419:58;10494:18;;17792:63:0;10166:352:1;17792:63:0;17653:505;;;-1:-1:-1;;;;;17899:21:0;;;;;;:10;:21;;;;;;;;:82;;;;-1:-1:-1;;;;;;17942:39:0;;;;;;:31;:39;;;;;;;;17941:40;17899:82;17877:281;;;18056:13;;18046:6;:23;;18016:126;;;;-1:-1:-1;;;18016:126:0;;10725:2:1;18016:126:0;;;10707:21:1;10764:2;10744:18;;;10737:30;10803:31;10783:18;;;10776:59;10852:18;;18016:126:0;10523:353:1;18016:126:0;18174:19;18196:41;18211:6;18219:9;18230:6;18196:14;:41::i;:::-;18174:63;;18301:6;-1:-1:-1;;;;;18256:51:0;:41;18271:6;18279:9;18290:6;18256:14;:41::i;:::-;-1:-1:-1;;;;;18256:51:0;;18252:164;;18328:47;18344:9;18355:11;18368:6;18328:15;:47::i;:::-;18394:7;17080:3787;;;:::o;18252:164::-;-1:-1:-1;;;;;18437:37:0;;;;;;:26;:37;;;;;;;;18432:220;;18558:15;;-1:-1:-1;;;;;5533:18:0;;5501:7;5533:18;;;:9;:18;;;;;;18525:29;;:6;:29;:::i;:::-;:48;;18495:141;;;;-1:-1:-1;;;18495:141:0;;11213:2:1;18495:141:0;;;11195:21:1;11252:2;11232:18;;;11225:30;-1:-1:-1;;;11271:18:1;;;11264:49;11330:18;;18495:141:0;11011:343:1;18495:141:0;17389:1274;17327:1336;18724:4;18675:28;5533:18;;;:9;:18;;;;;;18780:19;;18756:43;;;;;;;18830:35;;-1:-1:-1;18854:11:0;;-1:-1:-1;;;18854:11:0;;;;18830:35;:63;;;;-1:-1:-1;18883:10:0;;-1:-1:-1;;;18883:10:0;;;;18882:11;18830:63;:101;;;;-1:-1:-1;;;;;;18910:21:0;;;;;;:10;:21;;;;;;;;18830:101;:146;;;;-1:-1:-1;;;;;;18949:27:0;;;;;;:19;:27;;;;;;;;18948:28;18830:146;:194;;;;-1:-1:-1;;;;;;18994:30:0;;;;;;:19;:30;;;;;;;;18993:31;18830:194;18812:326;;;19051:10;:17;;-1:-1:-1;;;;19051:17:0;-1:-1:-1;;;19051:17:0;;;19083:10;:8;:10::i;:::-;19108;:18;;-1:-1:-1;;;;19108:18:0;;;18812:326;19166:10;;-1:-1:-1;;;;;19191:27:0;;19150:12;19191:27;;;:19;:27;;;;;;19166:10;-1:-1:-1;;;19166:10:0;;;;;19165:11;;19191:27;;:61;;-1:-1:-1;;;;;;19222:30:0;;;;;;:19;:30;;;;;;;;19191:61;19187:109;;;-1:-1:-1;19279:5:0;19187:109;19312:7;19308:1499;;;19336:12;19386:7;;19371:12;:22;19367:1291;;;19421:23;19440:3;19421:14;:6;19432:2;19421:10;:14::i;:::-;:18;;:23::i;:::-;19414:30;-1:-1:-1;19499:2:0;19486:9;19414:30;19493:2;19486:9;:::i;:::-;19485:16;;;;:::i;:::-;19463:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;19549:2:0;;-1:-1:-1;19537:8:0;:4;19544:1;19537:8;:::i;:::-;19536:15;;;;:::i;:::-;19520:12;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;19367:1291:0;;-1:-1:-1;19367:1291:0;;-1:-1:-1;;;;;19577:21:0;;;;;;:10;:21;;;;;;;;:48;;;;-1:-1:-1;19602:5:0;:19;-1:-1:-1;;;19602:19:0;;;;:23;;19577:48;19573:1085;;;19674:10;;19650:35;;19666:6;;-1:-1:-1;;;;;19674:10:0;19650:15;:35::i;:::-;19646:90;;;19710:7;;;;17080:3787;;;:::o;19646:90::-;19772:5;:19;19761:40;;19797:3;;19761:31;;:6;;-1:-1:-1;;;19772:19:0;;;;19761:10;:31::i;:40::-;19918:5;:19;19754:47;;-1:-1:-1;19918:19:0;-1:-1:-1;;;19918:19:0;;;;;19864:29;;-1:-1:-1;;;19871:22:0;;;;19754:47;19864:29;:::i;:::-;19863:74;;;;:::i;:::-;19820:18;;:117;;;;;;;:::i;:::-;;;;-1:-1:-1;;20054:5:0;:19;;-1:-1:-1;;;20054:19:0;;;;;20000:29;;20007:22;;;;;20000:4;:29;:::i;:::-;19999:74;;;;:::i;:::-;19956:18;;:117;;;;;;;:::i;:::-;;;;-1:-1:-1;;20138:5:0;:19;;-1:-1:-1;;;20138:19:0;;;;;20111:23;;-1:-1:-1;;;20118:16:0;;;;20111:4;:23;:::i;19573:1085::-;-1:-1:-1;;;;;20183:18:0;;;;;;:10;:18;;;;;;;;:44;;;;-1:-1:-1;20205:5:0;:18;;;:22;;20183:44;20179:479;;;20266:5;:18;20255:39;;20290:3;;20255:30;;:6;;20266:18;;20255:10;:30::i;:39::-;20410:5;:18;20248:46;;-1:-1:-1;20410:18:0;;;;;20357:28;;20364:21;;;;;20248:46;20357:28;:::i;:::-;20356:72;;;;:::i;:::-;20313:18;;:115;;;;;;;:::i;:::-;;;;-1:-1:-1;;20544:5:0;:18;;;;;;20491:28;;20544:18;20498:21;;;;20491:4;:28;:::i;:::-;20490:72;;;;:::i;:::-;20447:18;;:115;;;;;;;:::i;:::-;;;;-1:-1:-1;;20624:5:0;:18;;;;;;20598:22;;20605:15;;;;;20598:4;:22;:::i;:::-;20597:45;;;;:::i;:::-;20581:12;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20179:479:0;20678:8;;20674:93;;20707:44;20723:6;20739:4;20746;20707:15;:44::i;:::-;20781:14;20791:4;20781:14;;:::i;:::-;;;19321:1486;19308:1499;20817:42;20833:6;20841:9;20852:6;20817:15;:42::i;1040:224::-;1160:7;1196:12;1188:6;;;;1180:29;;;;-1:-1:-1;;;1180:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1220:9:0;1232:5;1236:1;1232;:5;:::i;:::-;1220:17;1040:224;-1:-1:-1;;;;;1040:224:0:o;84:179::-;142:7;;174:5;178:1;174;:5;:::i;:::-;162:17;;203:1;198;:6;;190:46;;;;-1:-1:-1;;;190:46:0;;11694:2:1;190:46:0;;;11676:21:1;11733:2;11713:18;;;11706:30;11772:29;11752:18;;;11745:57;11819:18;;190:46:0;11492:351:1;6690:385:0;6842:108;6878:6;6842:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6842:17:0;;;;;;:9;:17;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;6822:17:0;;;;;;;:9;:17;;;;;;:128;;;;6984:20;;;;;;;:32;;7009:6;6984:24;:32::i;:::-;-1:-1:-1;;;;;6961:20:0;;;;;;;:9;:20;;;;;;;:55;;;;7032:35;;;;;;;;;;7060:6;1866:25:1;;1854:2;1839:18;;1720:177;13362:397:0;-1:-1:-1;;;;;5533:18:0;;13492:7;5533:18;;;:9;:18;;;;;;13550:6;-1:-1:-1;13530:82:0;;;;-1:-1:-1;;;;;;13573:39:0;;;;;;:31;:39;;;;;;;;13530:82;13512:216;;;-1:-1:-1;;;;;13643:20:0;;;;;;:10;:20;;;;;;;;13639:78;;;-1:-1:-1;13699:1:0;13684:17;;13639:78;-1:-1:-1;13745:6:0;;13362:397;-1:-1:-1;;13362:397:0:o;15005:1627::-;15093:4;15044:28;5533:18;;;:9;:18;;;;;;15044:55;;15110:14;15169:12;;15148:18;;15127;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;15110:71;-1:-1:-1;15192:12:0;15221:25;;;:40;;-1:-1:-1;15250:11:0;;15221:40;15217:79;;;15278:7;;;15005:1627::o;15217:79::-;15335:19;;:24;;15357:2;15335:24;:::i;:::-;15312:20;:47;15308:127;;;15399:19;;:24;;15421:2;15399:24;:::i;:::-;15376:47;;15308:127;15447:23;15554:1;15532:6;15497:18;;15474:20;:41;;;;:::i;:::-;15473:65;;;;:::i;:::-;:82;;;;:::i;:::-;15447:108;-1:-1:-1;15566:26:0;15595:41;:20;15447:108;15595:24;:41::i;:::-;15566:70;-1:-1:-1;15677:21:0;15711:36;15566:70;15711:16;:36::i;:::-;15760:18;15781:44;:21;15807:17;15781:25;:44::i;:::-;15760:65;;15838:23;15864:70;15917:6;15864:34;15879:18;;15864:10;:14;;:34;;;;:::i;:70::-;15838:96;;15945:17;15965:40;15998:6;15965:28;15980:12;;15965:10;:14;;:28;;;;:::i;:40::-;15945:60;-1:-1:-1;16016:23:0;16056:27;15945:60;16056:15;:27;:::i;:::-;16042:42;;:10;:42;:::i;:::-;16118:1;16097:18;:22;;;16130:18;:22;;;16163:12;:16;16016:68;-1:-1:-1;16196:19:0;;;;;:42;;;16237:1;16219:15;:19;16196:42;16192:192;;;16255:46;16268:15;16285;16255:12;:46::i;:::-;16321:51;;;12022:25:1;;;12078:2;12063:18;;12056:34;;;16321:51:0;;11995:18:1;16321:51:0;;;;;;;16192:192;16418:10;;-1:-1:-1;;;;;16418:10:0;16457:39;16481:15;16457:21;:39;:::i;:::-;16410:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16545:15:0;;16537:87;;16396:116;;-1:-1:-1;;;;;;16545:15:0;;16588:21;;16537:87;;;;16588:21;16545:15;16537:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;15005:1627:0:o;642:246::-;700:7;724:1;729;724:6;720:47;;-1:-1:-1;754:1:0;747:8;;720:47;777:9;789:5;793:1;789;:5;:::i;:::-;777:17;-1:-1:-1;822:1:0;813:5;817:1;777:17;813:5;:::i;:::-;:10;805:56;;;;-1:-1:-1;;;805:56:0;;12513:2:1;805:56:0;;;12495:21:1;12552:2;12532:18;;;12525:30;12591:34;12571:18;;;12564:62;-1:-1:-1;;;12642:18:1;;;12635:31;12683:19;;805:56:0;12311:397:1;271:132:0;329:7;356:39;360:1;363;356:39;;;;;;;;;;;;;;;;;:3;:39::i;14210:250::-;-1:-1:-1;;;;;14345:18:0;;14318:4;14345:18;;;:10;:18;;;;;;;;14344:19;:46;;;;-1:-1:-1;;;;;;5533:18:0;;14389:1;5533:18;;;:9;:18;;;;;;14367:23;14344:46;14340:90;;;-1:-1:-1;14414:4:0;14407:11;;14340:90;-1:-1:-1;14447:5:0;14210:250;;;;:::o;896:136::-;954:7;981:43;985:1;988;981:43;;;;;;;;;;;;;;;;;:3;:43::i;16640:432::-;16726:16;;;16740:1;16726:16;;;;;;;;16702:21;;16726:16;;;;;;;;;;-1:-1:-1;16726:16:0;16702:40;;16771:4;16753;16758:1;16753:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16753:23:0;;;-1:-1:-1;;;;;16753:23:0;;;;;16797:6;-1:-1:-1;;;;;16797:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16787:4;16792:1;16787:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16787:23:0;;;-1:-1:-1;;;;;16787:23:0;;;;;16821:49;16838:4;16853:6;16862:7;16821:8;:49::i;:::-;16881:183;;-1:-1:-1;;;16881:183:0;;-1:-1:-1;;;;;16881:6:0;:57;;;;:183;;16953:7;;16975:1;;16991:4;;17018;;17038:15;;16881:183;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12392:336;12469:49;12486:4;12501:6;12510:7;12469:8;:49::i;:::-;12529:191;;-1:-1:-1;;;12529:191:0;;12592:4;12529:191;;;14559:34:1;;;14609:18;;;14602:34;;;12634:1:0;14652:18:1;;;14645:34;;;14695:18;;;14688:34;14738:19;;;14731:44;12694:15:0;14791:19:1;;;14784:35;12529:6:0;-1:-1:-1;;;;;12529:22:0;;;;12559:9;;14493:19:1;;12529:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12392:336;;:::o;411:223::-;531:7;566:12;559:5;551:28;;;;-1:-1:-1;;;551:28:0;;;;;;;;:::i;:::-;-1:-1:-1;590:9:0;602:5;606:1;602;: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:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1467:248::-;1535:6;1543;1596:2;1584:9;1575:7;1571:23;1567:32;1564:52;;;1612:1;1609;1602:12;1564:52;-1:-1:-1;;1635:23:1;;;1705:2;1690:18;;;1677:32;;-1:-1:-1;1467:248:1:o;1902:456::-;1979:6;1987;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i;:::-;2172:5;-1:-1:-1;2229:2:1;2214:18;;2201:32;2242:33;2201:32;2242:33;:::i;:::-;1902:456;;2294:7;;-1:-1:-1;;;2348:2:1;2333:18;;;;2320:32;;1902:456::o;2552:156::-;2618:20;;2678:4;2667:16;;2657:27;;2647:55;;2698:1;2695;2688:12;2713:535;2805:6;2813;2821;2829;2837;2845;2898:3;2886:9;2877:7;2873:23;2869:33;2866:53;;;2915:1;2912;2905:12;2866:53;2938:27;2955:9;2938:27;:::i;:::-;2928:37;;2984:36;3016:2;3005:9;3001:18;2984:36;:::i;:::-;2974:46;;3039:36;3071:2;3060:9;3056:18;3039:36;:::i;:::-;3029:46;;3094:36;3126:2;3115:9;3111:18;3094:36;:::i;:::-;3084:46;;3149:37;3181:3;3170:9;3166:19;3149:37;:::i;:::-;3139:47;;3205:37;3237:3;3226:9;3222:19;3205:37;:::i;:::-;3195:47;;2713:535;;;;;;;;:::o;3461:180::-;3520:6;3573:2;3561:9;3552:7;3548:23;3544:32;3541:52;;;3589:1;3586;3579:12;3541:52;-1:-1:-1;3612:23:1;;3461:180;-1:-1:-1;3461:180:1:o;3646:118::-;3732:5;3725:13;3718:21;3711:5;3708:32;3698:60;;3754:1;3751;3744:12;3769:382;3834:6;3842;3895:2;3883:9;3874:7;3870:23;3866:32;3863:52;;;3911:1;3908;3901:12;3863:52;3950:9;3937:23;3969:31;3994:5;3969:31;:::i;:::-;4019:5;-1:-1:-1;4076:2:1;4061:18;;4048:32;4089:30;4048:32;4089:30;:::i;:::-;4138:7;4128:17;;;3769:382;;;;;:::o;4903:388::-;4971:6;4979;5032:2;5020:9;5011:7;5007:23;5003:32;5000:52;;;5048:1;5045;5038:12;5000:52;5087:9;5074:23;5106:31;5131:5;5106:31;:::i;:::-;5156:5;-1:-1:-1;5213:2:1;5198:18;;5185:32;5226:33;5185:32;5226:33;:::i;5531:380::-;5610:1;5606:12;;;;5653;;;5674:61;;5728:4;5720:6;5716:17;5706:27;;5674:61;5781:2;5773:6;5770:14;5750:18;5747:38;5744:161;;5827:10;5822:3;5818:20;5815:1;5808:31;5862:4;5859:1;5852:15;5890:4;5887:1;5880:15;5744:161;;5531:380;;;:::o;5916:356::-;6118:2;6100:21;;;6137:18;;;6130:30;6196:34;6191:2;6176:18;;6169:62;6263:2;6248:18;;5916:356::o;6277:127::-;6338:10;6333:3;6329:20;6326:1;6319:31;6369:4;6366:1;6359:15;6393:4;6390:1;6383:15;6409:217;6449:1;6475;6465:132;;6519:10;6514:3;6510:20;6507:1;6500:31;6554:4;6551:1;6544:15;6582:4;6579:1;6572:15;6465:132;-1:-1:-1;6611:9:1;;6409:217::o;6631:168::-;6704:9;;;6735;;6752:15;;;6746:22;;6732:37;6722:71;;6773:18;;:::i;7613:148::-;7701:4;7680:12;;;7694;;;7676:31;;7719:13;;7716:39;;;7735:18;;:::i;8403:245::-;8470:6;8523:2;8511:9;8502:7;8498:23;8494:32;8491:52;;;8539:1;8536;8529:12;8491:52;8571:9;8565:16;8590:28;8612:5;8590:28;:::i;10881:125::-;10946:9;;;10967:10;;;10964:36;;;10980:18;;:::i;11359:128::-;11426:9;;;11447:11;;;11444:37;;;11461:18;;:::i;12845:127::-;12906:10;12901:3;12897:20;12894:1;12887:31;12937:4;12934:1;12927:15;12961:4;12958:1;12951:15;12977:251;13047:6;13100:2;13088:9;13079:7;13075:23;13071:32;13068:52;;;13116:1;13113;13106:12;13068:52;13148:9;13142:16;13167:31;13192:5;13167:31;:::i;13233:980::-;13495:4;13543:3;13532:9;13528:19;13574:6;13563:9;13556:25;13600:2;13638:6;13633:2;13622:9;13618:18;13611:34;13681:3;13676:2;13665:9;13661:18;13654:31;13705:6;13740;13734:13;13771:6;13763;13756:22;13809:3;13798:9;13794:19;13787:26;;13848:2;13840:6;13836:15;13822:29;;13869:1;13879:195;13893:6;13890:1;13887:13;13879:195;;;13958:13;;-1:-1:-1;;;;;13954:39:1;13942:52;;14049:15;;;;14014:12;;;;13990:1;13908:9;13879:195;;;-1:-1:-1;;;;;;;14130:32:1;;;;14125:2;14110:18;;14103:60;-1:-1:-1;;;14194:3:1;14179:19;14172:35;14091:3;13233:980;-1:-1:-1;;;13233:980:1:o;14830:306::-;14918:6;14926;14934;14987:2;14975:9;14966:7;14962:23;14958:32;14955:52;;;15003:1;15000;14993:12;14955:52;15032:9;15026:16;15016:26;;15082:2;15071:9;15067:18;15061:25;15051:35;;15126:2;15115:9;15111:18;15105:25;15095:35;;14830:306;;;;;:::o
Swarm Source
ipfs://24ce7653f799949343e1101e56be8cf77798d1fbe803387b2294e198fa54ec56
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.