Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000,000 SHENLONG
Holders
42
Total Transfers
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SHENLONG
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-19 */ // ░██████╗░█████╗░███████╗██╗░░░██╗ ██████╗░██╗░░░██╗ // ██╔════╝██╔══██╗██╔════╝██║░░░██║ ██╔══██╗╚██╗░██╔╝ // ╚█████╗░███████║█████╗░░██║░░░██║ ██████╦╝░╚████╔╝░ // ░╚═══██╗██╔══██║██╔══╝░░██║░░░██║ ██╔══██╗░░╚██╔╝░░ // ██████╔╝██║░░██║██║░░░░░╚██████╔╝ ██████╦╝░░░██║░░░ // ╚═════╝░╚═╝░░╚═╝╚═╝░░░░░░╚═════╝░ ╚═════╝░░░░╚═╝░░░ // ░█████╗░░█████╗░██╗███╗░░██╗░██████╗██╗░░░██╗██╗░░░░░████████╗░░░███╗░░██╗███████╗████████╗ // ██╔══██╗██╔══██╗██║████╗░██║██╔════╝██║░░░██║██║░░░░░╚══██╔══╝░░░████╗░██║██╔════╝╚══██╔══╝ // ██║░░╚═╝██║░░██║██║██╔██╗██║╚█████╗░██║░░░██║██║░░░░░░░░██║░░░░░░██╔██╗██║█████╗░░░░░██║░░░ // ██║░░██╗██║░░██║██║██║╚████║░╚═══██╗██║░░░██║██║░░░░░░░░██║░░░░░░██║╚████║██╔══╝░░░░░██║░░░ // ╚█████╔╝╚█████╔╝██║██║░╚███║██████╔╝╚██████╔╝███████╗░░░██║░░░██╗██║░╚███║███████╗░░░██║░░░ // ░╚════╝░░╚════╝░╚═╝╚═╝░░╚══╝╚═════╝░░╚═════╝░╚══════╝░░░╚═╝░░░╚═╝╚═╝░░╚══╝╚══════╝░░░╚═╝░░░ // Website: https://shenlongcoin.com/ // Telegram: https://t.me/ethshenlong // Twitter: https://twitter.com/shenlongcoin // Get your SAFU contract now via Coinsult.net // SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract SHENLONG is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; string public creator; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 public walletToWalletTransferFee; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event UpdateBuyFees(uint256 marketingFeeOnBuy); event UpdateSellFees(uint256 marketingFeeOnSell); event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20(unicode"神龙", "SHENLONG") { address router; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); creator = "coinsult.net"; marketingFeeOnBuy = 1; marketingFeeOnSell = 1; walletToWalletTransferFee = 0; marketingWallet = 0xD6C92f6DC20e2d71d0312942ce3d24c58E591BF7; maxTransactionLimitEnabled = true; _isExcludedFromMaxTxLimit[owner()] = true; _isExcludedFromMaxTxLimit[address(this)] = true; _isExcludedFromMaxTxLimit[address(0xdead)] = true; _isExcludedFromMaxTxLimit[marketingWallet] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _mint(owner(), 1e10 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 5_000; maxTransactionAmountBuy = totalSupply() * 100 / 1000; maxTransactionAmountSell = totalSupply() * 100 / 1000; tradingEnabled = false; swapEnabled = false; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function updateBuyFees(uint256 _marketingFeeOnBuy) external onlyOwner { marketingFeeOnBuy = _marketingFeeOnBuy; require(marketingFeeOnBuy <= 5, "Total Fees cannot exceed the maximum"); emit UpdateBuyFees(marketingFeeOnBuy); } function updateSellFees(uint256 _marketingFeeOnSell) external onlyOwner { marketingFeeOnSell = _marketingFeeOnSell; require(marketingFeeOnSell <= 5, "Total Fees cannot exceed the maximum"); emit UpdateSellFees(marketingFeeOnSell); } function updateWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner { require(_walletToWalletTransferFee <= 5, "Wallet to Wallet Transfer Fee cannot exceed the maximum"); walletToWalletTransferFee = _walletToWalletTransferFee; emit UpdateWalletToWalletTransferFee(walletToWalletTransferFee); } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } bool public tradingEnabled; function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; swapEnabled = true; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } if (maxTransactionLimitEnabled) { if ((from == uniswapV2Pair || to == uniswapV2Pair) && !_isExcludedFromMaxTxLimit[from] && !_isExcludedFromMaxTxLimit[to] ) { if (from == uniswapV2Pair) { require( amount <= maxTransactionAmountBuy, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } else { require( amount <= maxTransactionAmountSell, "AntiWhale: Transfer amount exceeds the maxTransactionAmount" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && swapEnabled ) { swapping = true; swapAndSendMarketing(contractTokenBalance); swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = marketingFeeOnBuy; } else if (to == uniswapV2Pair) { _totalFees = marketingFeeOnSell; } else { _totalFees = walletToWalletTransferFee; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function setSwapEnabled(bool _enabled) external onlyOwner{ require(swapEnabled != _enabled, "swapEnabled already at this state."); swapEnabled = _enabled; } function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(marketingWallet).sendValue(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } mapping(address => bool) private _isExcludedFromMaxTxLimit; bool public maxTransactionLimitEnabled; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell); function setEnableMaxTransactionLimit(bool enable) external onlyOwner { require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state"); maxTransactionLimitEnabled = enable; emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled); } function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner { require( _maxTransactionAmountBuy >= (totalSupply() / (10 ** decimals())) / 1_000 && _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, "Max Transaction limis cannot be lower than 0.1% of total supply" ); maxTransactionAmountBuy = _maxTransactionAmountBuy * (10 ** decimals()); maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals()); emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell); } function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner { require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state"); require(account != address(this), "Can't set this address."); _isExcludedFromMaxTxLimit[account] = exclude; emit ExcludedFromMaxTransactionLimit(account, exclude); } function isExcludedFromMaxTransaction(address account) public view returns(bool) { return _isExcludedFromMaxTxLimit[account]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","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":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletToWalletTransferFee","type":"uint256"}],"name":"updateWalletToWalletTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405180604001604052806006815260200165e7a59ee9be9960d01b815250604051806040016040528060088152602001675348454e4c4f4e4760c01b8152508160039081620000639190620007fc565b506004620000728282620007fc565b5050506000620000876200053e60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600046603803620000fc57507310ed43c718714eb63d5aa57b78b54704e256024e62000158565b4660610362000121575073d99d1c33f9fc3444f8101754abc46c52416550d162000158565b4660011480620001315750466005145b15620001535750737a250d5630b4cf539739df2c5dacb4c659f2488d62000158565b600080fd5b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c49190620008c8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002389190620008c8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac9190620008c8565b600680546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055909150620002ed90309060001962000542565b60408051808201909152600c81526b18dbda5b9cdd5b1d0b9b995d60a21b60208201526009906200031f9082620007fc565b506001600a819055600b8190556000600c819055600d80546001600160a01b03191673d6c92f6dc20e2d71d0312942ce3d24c58e591bf71790556011805460ff1916831790556010906200037b6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260109093528183208054851660019081179091557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b698054861682179055600d54909116835290822080549093168117909255600890620004146005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905560089092527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548416600190811790915530835291208054909216179055620004bb620004966005546001600160a01b031690565b620004a46012600a62000a0f565b620004b5906402540be40062000a20565b6200066e565b611388620004c860025490565b620004d4919062000a3a565b600e556103e8620004e460025490565b620004f190606462000a20565b620004fd919062000a3a565b6012556103e86200050d60025490565b6200051a90606462000a20565b62000526919062000a3a565b6013555050600f805462ffff00191690555062000a73565b3390565b6001600160a01b038316620005aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200060d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620005a1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006c65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005a1565b8060026000828254620006da919062000a5d565b90915550506001600160a01b038216600090815260208190526040812080548392906200070990849062000a5d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078357607f821691505b602082108103620007a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200075357600081815260208120601f850160051c81016020861015620007d35750805b601f850160051c820191505b81811015620007f457828155600101620007df565b505050505050565b81516001600160401b0381111562000818576200081862000758565b62000830816200082984546200076e565b84620007aa565b602080601f8311600181146200086857600084156200084f5750858301515b600019600386901b1c1916600185901b178555620007f4565b600085815260208120601f198616915b82811015620008995788860151825594840194600190910190840162000878565b5085821015620008b85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008db57600080fd5b81516001600160a01b0381168114620008f357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000951578160001904821115620009355762000935620008fa565b808516156200094357918102915b93841c939080029062000915565b509250929050565b6000826200096a5750600162000a09565b81620009795750600062000a09565b81600181146200099257600281146200099d57620009bd565b600191505062000a09565b60ff841115620009b157620009b1620008fa565b50506001821b62000a09565b5060208310610133831016604e8410600b8410161715620009e2575081810a62000a09565b620009ee838362000910565b806000190482111562000a055762000a05620008fa565b0290505b92915050565b6000620008f360ff84168362000959565b808202811582820484141762000a095762000a09620008fa565b60008262000a5857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a095762000a09620008fa565b612a258062000a836000396000f3fe6080604052600436106102ca5760003560e01c806370a0823111610179578063afa4f3b2116100d6578063dd62ed3e1161008a578063eba4c33311610064578063eba4c333146107c3578063f2fde38b146107e3578063f9d0831a1461080357600080fd5b8063dd62ed3e14610747578063e01af92c1461078d578063e2f45605146107ad57600080fd5b8063bb85c6d1116100bb578063bb85c6d1146106f1578063c024666814610711578063dc4c7dbc1461073157600080fd5b8063afa4f3b2146106b1578063b6f7f681146106d157600080fd5b80638a8c523c1161012d57806395d89b411161011257806395d89b411461065c578063a457c2d714610671578063a9059cbb1461069157600080fd5b80638a8c523c146106295780638da5cb5b1461063e57600080fd5b806371fc46881161015e57806371fc4688146105c957806375f0a874146105e9578063880bcbc11461060957600080fd5b806370a082311461057e578063715018a6146105b457600080fd5b8063395093511161022757806359136fa5116101db57806364c98c44116101c057806364c98c44146105295780636ddd171314610549578063702509fd1461056857600080fd5b806359136fa5146104fd5780635fc2e5961461051357600080fd5b80634ada218b1161020c5780634ada218b146104825780634fbee193146104a257806356a6cabf146104db57600080fd5b8063395093511461044257806349bd5a5e1461046257600080fd5b806318160ddd1161027e57806323b872dd1161026357806323b872dd146103ec5780632ba86bf21461040c578063313ce5671461042657600080fd5b806318160ddd1461039e57806318d9ceae146103b357600080fd5b806306fdde03116102af57806306fdde0314610321578063095ea7b3146103365780631694505e1461036657600080fd5b80630105d0fd146102d657806302d05d3f146102ff57600080fd5b366102d157005b600080fd5b3480156102e257600080fd5b506102ec60125481565b6040519081526020015b60405180910390f35b34801561030b57600080fd5b50610314610823565b6040516102f69190612592565b34801561032d57600080fd5b506103146108b1565b34801561034257600080fd5b506103566103513660046125f5565b610943565b60405190151581526020016102f6565b34801561037257600080fd5b50600654610386906001600160a01b031681565b6040516001600160a01b0390911681526020016102f6565b3480156103aa57600080fd5b506002546102ec565b3480156103bf57600080fd5b506103566103ce366004612621565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156103f857600080fd5b50610356610407366004612645565b61095a565b34801561041857600080fd5b506011546103569060ff1681565b34801561043257600080fd5b50604051601281526020016102f6565b34801561044e57600080fd5b5061035661045d3660046125f5565b610a25565b34801561046e57600080fd5b50600754610386906001600160a01b031681565b34801561048e57600080fd5b50600f546103569062010000900460ff1681565b3480156104ae57600080fd5b506103566104bd366004612621565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156104e757600080fd5b506104fb6104f6366004612694565b610a61565b005b34801561050957600080fd5b506102ec60135481565b34801561051f57600080fd5b506102ec600a5481565b34801561053557600080fd5b506104fb6105443660046126b1565b610b75565b34801561055557600080fd5b50600f5461035690610100900460ff1681565b34801561057457600080fd5b506102ec600c5481565b34801561058a57600080fd5b506102ec610599366004612621565b6001600160a01b031660009081526020819052604090205490565b3480156105c057600080fd5b506104fb610c69565b3480156105d557600080fd5b506104fb6105e43660046126b1565b610d08565b3480156105f557600080fd5b50600d54610386906001600160a01b031681565b34801561061557600080fd5b506104fb6106243660046126ca565b610de5565b34801561063557600080fd5b506104fb610f7a565b34801561064a57600080fd5b506005546001600160a01b0316610386565b34801561066857600080fd5b5061031461102e565b34801561067d57600080fd5b5061035661068c3660046125f5565b61103d565b34801561069d57600080fd5b506103566106ac3660046125f5565b6110ee565b3480156106bd57600080fd5b506104fb6106cc3660046126b1565b6110fb565b3480156106dd57600080fd5b506104fb6106ec366004612703565b611203565b3480156106fd57600080fd5b506104fb61070c366004612621565b611397565b34801561071d57600080fd5b506104fb61072c3660046126ca565b61153a565b34801561073d57600080fd5b506102ec600b5481565b34801561075357600080fd5b506102ec610762366004612725565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079957600080fd5b506104fb6107a8366004612694565b611670565b3480156107b957600080fd5b506102ec600e5481565b3480156107cf57600080fd5b506104fb6107de3660046126b1565b61175a565b3480156107ef57600080fd5b506104fb6107fe366004612621565b611837565b34801561080f57600080fd5b506104fb61081e366004612621565b611964565b6009805461083090612753565b80601f016020809104026020016040519081016040528092919081815260200182805461085c90612753565b80156108a95780601f1061087e576101008083540402835291602001916108a9565b820191906000526020600020905b81548152906001019060200180831161088c57829003601f168201915b505050505081565b6060600380546108c090612753565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612753565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b6000610950338484611b60565b5060015b92915050565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610a0f5782811015610a025760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610a0f8533858403611b60565b610a1a858585611cb8565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610950918590610a5c9086906127a3565b611b60565b6005546001600160a01b03163314610aa95760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b60115460ff16151581151503610b275760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960448201527f2073657420746f2074686174207374617465000000000000000000000000000060648201526084016109f9565b6011805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf906020015b60405180910390a150565b6005546001600160a01b03163314610bbd5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6005811115610c345760405162461bcd60e51b815260206004820152603760248201527f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160448201527f6e6e6f742065786365656420746865206d6178696d756d00000000000000000060648201526084016109f9565b600c8190556040518181527f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b90602001610b6a565b6005546001600160a01b03163314610cb15760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36005805473ffffffffffffffffffffffffffffffffffffffff19169055565b6005546001600160a01b03163314610d505760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600a8190556005811115610db25760405162461bcd60e51b8152602060048201526024808201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604482015263696d756d60e01b60648201526084016109f9565b7f2c18bb7f919d244fa8ee59517018a471ec455b76373719d2d6664fa3b1947da9600a54604051610b6a91815260200190565b6005546001600160a01b03163314610e2d5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503610ec25760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f2074686174207360448201527f746174650000000000000000000000000000000000000000000000000000000060648201526084016109f9565b306001600160a01b03831603610f1a5760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016109f9565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6005546001600160a01b03163314610fc25760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600f5462010000900460ff161561101b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016109f9565b600f805462ffff00191662010100179055565b6060600480546108c090612753565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109f9565b6110e43385858403611b60565b5060019392505050565b6000610950338484611cb8565b6005546001600160a01b031633146111435760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b620f424061115060025490565b61115a91906127b6565b81116111ce5760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016109f9565b600e8190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610b6a565b6005546001600160a01b0316331461124b5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6103e861125a6012600a6128bc565b60025461126791906127b6565b61127191906127b6565b82101580156112a557506103e861128a6012600a6128bc565b60025461129791906127b6565b6112a191906127b6565b8110155b6113175760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c790060648201526084016109f9565b6113236012600a6128bc565b61132d90836128cb565b601255611338601290565b61134390600a6128bc565b61134d90826128cb565b60138190556012546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb1319261138b928252602082015260400190565b60405180910390a15050565b6005546001600160a01b031633146113df5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600d546001600160a01b03908116908216036114635760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460448201527f206164647265737300000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b0381166114df5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084016109f9565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610b6a565b6005546001600160a01b031633146115825760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6001600160a01b03821660009081526008602052604090205481151560ff9091161515036116185760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201527f276578636c75646564270000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610f6e565b6005546001600160a01b031633146116b85760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b801515600f60019054906101000a900460ff161515036117405760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c72656164792061742074686973207374617460448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016109f9565b600f80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146117a25760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600b81905560058111156118045760405162461bcd60e51b8152602060048201526024808201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604482015263696d756d60e01b60648201526084016109f9565b7fa54a45ff147b987a50c11919090466ad8b9df105c160d2e6bfb296df2b9abfb7600b54604051610b6a91815260200190565b6005546001600160a01b0316331461187f5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109f9565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119ac5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b306001600160a01b03821603611a2a5760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016109f9565b6001600160a01b038116611a4657611a423347612124565b5050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acc91906128e2565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5991906128fb565b5050505b50565b6001600160a01b038316611bdb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b038216611c575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f9565b6001600160a01b038216611d7e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f9565b600f5462010000900460ff1680611dad57506001600160a01b03831660009081526008602052604090205460ff165b80611dd057506001600160a01b03821660009081526008602052604090205460ff165b611e1c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109f9565b80600003611e3557611e30838360006121d3565b505050565b60115460ff1615611fc3576007546001600160a01b0384811691161480611e6957506007546001600160a01b038381169116145b8015611e8e57506001600160a01b03831660009081526010602052604090205460ff16155b8015611eb357506001600160a01b03821660009081526010602052604090205460ff16155b15611fc3576007546001600160a01b0390811690841603611f4b57601254811115611f465760405162461bcd60e51b815260206004820152603b60248201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560448201527f647320746865206d61785472616e73616374696f6e416d6f756e74000000000060648201526084016109f9565b611fc3565b601354811115611fc35760405162461bcd60e51b815260206004820152603b60248201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560448201527f647320746865206d61785472616e73616374696f6e416d6f756e74000000000060648201526084016109f9565b30600090815260208190526040902054600e5481108015908190611fea5750600f5460ff16155b801561200357506007546001600160a01b038581169116145b80156120165750600f54610100900460ff165b1561203c57600f805460ff19166001179055612031826123b8565b600f805460ff191690555b6001600160a01b03851660009081526008602052604081205460ff168061207b57506001600160a01b03851660009081526008602052604090205460ff165b806120885750600f5460ff165b15612095575060006120d8565b6007546001600160a01b03908116908716036120b45750600a546120d8565b6007546001600160a01b03908116908616036120d35750600b546120d8565b50600c545b801561211157600060646120ec83876128cb565b6120f691906127b6565b90506121028186612918565b945061210f8730836121d3565b505b61211c8686866121d3565b505050505050565b6000814710156121765760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109f9565b6000836001600160a01b03168360405160006040518083038185875af1925050503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b509095945050505050565b6001600160a01b0383166122375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f9565b6001600160a01b0382166122995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f9565b6001600160a01b038316600090815260208190526040902054818110156123285760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061235f9084906127a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123ab91815260200190565b60405180910390a3611b59565b6040805160028082526060820183524792600092919060208301908036833701905050905030816000815181106123f1576123f161292b565b6001600160a01b03928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190612941565b8160018151811061249a5761249a61292b565b6001600160a01b0392831660209182029290920101526006546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906124f990869060009086903090429060040161295e565b600060405180830381600087803b15801561251357600080fd5b505af1158015612527573d6000803e3d6000fd5b50505050600082476125399190612918565b600d54909150612552906001600160a01b031682612124565b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b600060208083528351808285015260005b818110156125bf578581018301518582016040015282016125a3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b5d57600080fd5b6000806040838503121561260857600080fd5b8235612613816125e0565b946020939093013593505050565b60006020828403121561263357600080fd5b813561263e816125e0565b9392505050565b60008060006060848603121561265a57600080fd5b8335612665816125e0565b92506020840135612675816125e0565b929592945050506040919091013590565b8015158114611b5d57600080fd5b6000602082840312156126a657600080fd5b813561263e81612686565b6000602082840312156126c357600080fd5b5035919050565b600080604083850312156126dd57600080fd5b82356126e8816125e0565b915060208301356126f881612686565b809150509250929050565b6000806040838503121561271657600080fd5b50508035926020909101359150565b6000806040838503121561273857600080fd5b8235612743816125e0565b915060208301356126f8816125e0565b600181811c9082168061276757607f821691505b60208210810361278757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109545761095461278d565b6000826127d357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156128135781600019048211156127f9576127f961278d565b8085161561280657918102915b93841c93908002906127dd565b509250929050565b60008261282a57506001610954565b8161283757506000610954565b816001811461284d576002811461285757612873565b6001915050610954565b60ff8411156128685761286861278d565b50506001821b610954565b5060208310610133831016604e8410600b8410161715612896575081810a610954565b6128a083836127d8565b80600019048211156128b4576128b461278d565b029392505050565b600061263e60ff84168361281b565b80820281158282048414176109545761095461278d565b6000602082840312156128f457600080fd5b5051919050565b60006020828403121561290d57600080fd5b815161263e81612686565b818103818111156109545761095461278d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295357600080fd5b815161263e816125e0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129ae5784516001600160a01b031683529383019391830191600101612989565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220180dc23483ca2bddab0d7689e43cb1bacf9ecc11fcf4b630054e6c4163447dbe64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102ca5760003560e01c806370a0823111610179578063afa4f3b2116100d6578063dd62ed3e1161008a578063eba4c33311610064578063eba4c333146107c3578063f2fde38b146107e3578063f9d0831a1461080357600080fd5b8063dd62ed3e14610747578063e01af92c1461078d578063e2f45605146107ad57600080fd5b8063bb85c6d1116100bb578063bb85c6d1146106f1578063c024666814610711578063dc4c7dbc1461073157600080fd5b8063afa4f3b2146106b1578063b6f7f681146106d157600080fd5b80638a8c523c1161012d57806395d89b411161011257806395d89b411461065c578063a457c2d714610671578063a9059cbb1461069157600080fd5b80638a8c523c146106295780638da5cb5b1461063e57600080fd5b806371fc46881161015e57806371fc4688146105c957806375f0a874146105e9578063880bcbc11461060957600080fd5b806370a082311461057e578063715018a6146105b457600080fd5b8063395093511161022757806359136fa5116101db57806364c98c44116101c057806364c98c44146105295780636ddd171314610549578063702509fd1461056857600080fd5b806359136fa5146104fd5780635fc2e5961461051357600080fd5b80634ada218b1161020c5780634ada218b146104825780634fbee193146104a257806356a6cabf146104db57600080fd5b8063395093511461044257806349bd5a5e1461046257600080fd5b806318160ddd1161027e57806323b872dd1161026357806323b872dd146103ec5780632ba86bf21461040c578063313ce5671461042657600080fd5b806318160ddd1461039e57806318d9ceae146103b357600080fd5b806306fdde03116102af57806306fdde0314610321578063095ea7b3146103365780631694505e1461036657600080fd5b80630105d0fd146102d657806302d05d3f146102ff57600080fd5b366102d157005b600080fd5b3480156102e257600080fd5b506102ec60125481565b6040519081526020015b60405180910390f35b34801561030b57600080fd5b50610314610823565b6040516102f69190612592565b34801561032d57600080fd5b506103146108b1565b34801561034257600080fd5b506103566103513660046125f5565b610943565b60405190151581526020016102f6565b34801561037257600080fd5b50600654610386906001600160a01b031681565b6040516001600160a01b0390911681526020016102f6565b3480156103aa57600080fd5b506002546102ec565b3480156103bf57600080fd5b506103566103ce366004612621565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156103f857600080fd5b50610356610407366004612645565b61095a565b34801561041857600080fd5b506011546103569060ff1681565b34801561043257600080fd5b50604051601281526020016102f6565b34801561044e57600080fd5b5061035661045d3660046125f5565b610a25565b34801561046e57600080fd5b50600754610386906001600160a01b031681565b34801561048e57600080fd5b50600f546103569062010000900460ff1681565b3480156104ae57600080fd5b506103566104bd366004612621565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156104e757600080fd5b506104fb6104f6366004612694565b610a61565b005b34801561050957600080fd5b506102ec60135481565b34801561051f57600080fd5b506102ec600a5481565b34801561053557600080fd5b506104fb6105443660046126b1565b610b75565b34801561055557600080fd5b50600f5461035690610100900460ff1681565b34801561057457600080fd5b506102ec600c5481565b34801561058a57600080fd5b506102ec610599366004612621565b6001600160a01b031660009081526020819052604090205490565b3480156105c057600080fd5b506104fb610c69565b3480156105d557600080fd5b506104fb6105e43660046126b1565b610d08565b3480156105f557600080fd5b50600d54610386906001600160a01b031681565b34801561061557600080fd5b506104fb6106243660046126ca565b610de5565b34801561063557600080fd5b506104fb610f7a565b34801561064a57600080fd5b506005546001600160a01b0316610386565b34801561066857600080fd5b5061031461102e565b34801561067d57600080fd5b5061035661068c3660046125f5565b61103d565b34801561069d57600080fd5b506103566106ac3660046125f5565b6110ee565b3480156106bd57600080fd5b506104fb6106cc3660046126b1565b6110fb565b3480156106dd57600080fd5b506104fb6106ec366004612703565b611203565b3480156106fd57600080fd5b506104fb61070c366004612621565b611397565b34801561071d57600080fd5b506104fb61072c3660046126ca565b61153a565b34801561073d57600080fd5b506102ec600b5481565b34801561075357600080fd5b506102ec610762366004612725565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561079957600080fd5b506104fb6107a8366004612694565b611670565b3480156107b957600080fd5b506102ec600e5481565b3480156107cf57600080fd5b506104fb6107de3660046126b1565b61175a565b3480156107ef57600080fd5b506104fb6107fe366004612621565b611837565b34801561080f57600080fd5b506104fb61081e366004612621565b611964565b6009805461083090612753565b80601f016020809104026020016040519081016040528092919081815260200182805461085c90612753565b80156108a95780601f1061087e576101008083540402835291602001916108a9565b820191906000526020600020905b81548152906001019060200180831161088c57829003601f168201915b505050505081565b6060600380546108c090612753565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec90612753565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b6000610950338484611b60565b5060015b92915050565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610a0f5782811015610a025760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610a0f8533858403611b60565b610a1a858585611cb8565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610950918590610a5c9086906127a3565b611b60565b6005546001600160a01b03163314610aa95760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b60115460ff16151581151503610b275760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960448201527f2073657420746f2074686174207374617465000000000000000000000000000060648201526084016109f9565b6011805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf906020015b60405180910390a150565b6005546001600160a01b03163314610bbd5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6005811115610c345760405162461bcd60e51b815260206004820152603760248201527f57616c6c657420746f2057616c6c6574205472616e736665722046656520636160448201527f6e6e6f742065786365656420746865206d6178696d756d00000000000000000060648201526084016109f9565b600c8190556040518181527f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b90602001610b6a565b6005546001600160a01b03163314610cb15760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36005805473ffffffffffffffffffffffffffffffffffffffff19169055565b6005546001600160a01b03163314610d505760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600a8190556005811115610db25760405162461bcd60e51b8152602060048201526024808201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604482015263696d756d60e01b60648201526084016109f9565b7f2c18bb7f919d244fa8ee59517018a471ec455b76373719d2d6664fa3b1947da9600a54604051610b6a91815260200190565b6005546001600160a01b03163314610e2d5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503610ec25760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f2074686174207360448201527f746174650000000000000000000000000000000000000000000000000000000060648201526084016109f9565b306001600160a01b03831603610f1a5760405162461bcd60e51b815260206004820152601760248201527f43616e277420736574207468697320616464726573732e00000000000000000060448201526064016109f9565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6005546001600160a01b03163314610fc25760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600f5462010000900460ff161561101b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016109f9565b600f805462ffff00191662010100179055565b6060600480546108c090612753565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109f9565b6110e43385858403611b60565b5060019392505050565b6000610950338484611cb8565b6005546001600160a01b031633146111435760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b620f424061115060025490565b61115a91906127b6565b81116111ce5760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016109f9565b600e8190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610b6a565b6005546001600160a01b0316331461124b5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6103e861125a6012600a6128bc565b60025461126791906127b6565b61127191906127b6565b82101580156112a557506103e861128a6012600a6128bc565b60025461129791906127b6565b6112a191906127b6565b8110155b6113175760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c790060648201526084016109f9565b6113236012600a6128bc565b61132d90836128cb565b601255611338601290565b61134390600a6128bc565b61134d90826128cb565b60138190556012546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb1319261138b928252602082015260400190565b60405180910390a15050565b6005546001600160a01b031633146113df5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600d546001600160a01b03908116908216036114635760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460448201527f206164647265737300000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b0381166114df5760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084016109f9565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610b6a565b6005546001600160a01b031633146115825760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6001600160a01b03821660009081526008602052604090205481151560ff9091161515036116185760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f662060448201527f276578636c75646564270000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610f6e565b6005546001600160a01b031633146116b85760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b801515600f60019054906101000a900460ff161515036117405760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c72656164792061742074686973207374617460448201527f652e00000000000000000000000000000000000000000000000000000000000060648201526084016109f9565b600f80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146117a25760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b600b81905560058111156118045760405162461bcd60e51b8152602060048201526024808201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604482015263696d756d60e01b60648201526084016109f9565b7fa54a45ff147b987a50c11919090466ad8b9df105c160d2e6bfb296df2b9abfb7600b54604051610b6a91815260200190565b6005546001600160a01b0316331461187f5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b6001600160a01b0381166118fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109f9565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119ac5760405162461bcd60e51b815260206004820181905260248201526000805160206129d083398151915260448201526064016109f9565b306001600160a01b03821603611a2a5760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016109f9565b6001600160a01b038116611a4657611a423347612124565b5050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611aa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acc91906128e2565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5991906128fb565b5050505b50565b6001600160a01b038316611bdb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b038216611c575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d1c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f9565b6001600160a01b038216611d7e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f9565b600f5462010000900460ff1680611dad57506001600160a01b03831660009081526008602052604090205460ff165b80611dd057506001600160a01b03821660009081526008602052604090205460ff165b611e1c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016109f9565b80600003611e3557611e30838360006121d3565b505050565b60115460ff1615611fc3576007546001600160a01b0384811691161480611e6957506007546001600160a01b038381169116145b8015611e8e57506001600160a01b03831660009081526010602052604090205460ff16155b8015611eb357506001600160a01b03821660009081526010602052604090205460ff16155b15611fc3576007546001600160a01b0390811690841603611f4b57601254811115611f465760405162461bcd60e51b815260206004820152603b60248201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560448201527f647320746865206d61785472616e73616374696f6e416d6f756e74000000000060648201526084016109f9565b611fc3565b601354811115611fc35760405162461bcd60e51b815260206004820152603b60248201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560448201527f647320746865206d61785472616e73616374696f6e416d6f756e74000000000060648201526084016109f9565b30600090815260208190526040902054600e5481108015908190611fea5750600f5460ff16155b801561200357506007546001600160a01b038581169116145b80156120165750600f54610100900460ff165b1561203c57600f805460ff19166001179055612031826123b8565b600f805460ff191690555b6001600160a01b03851660009081526008602052604081205460ff168061207b57506001600160a01b03851660009081526008602052604090205460ff165b806120885750600f5460ff165b15612095575060006120d8565b6007546001600160a01b03908116908716036120b45750600a546120d8565b6007546001600160a01b03908116908616036120d35750600b546120d8565b50600c545b801561211157600060646120ec83876128cb565b6120f691906127b6565b90506121028186612918565b945061210f8730836121d3565b505b61211c8686866121d3565b505050505050565b6000814710156121765760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109f9565b6000836001600160a01b03168360405160006040518083038185875af1925050503d80600081146121c3576040519150601f19603f3d011682016040523d82523d6000602084013e6121c8565b606091505b509095945050505050565b6001600160a01b0383166122375760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f9565b6001600160a01b0382166122995760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f9565b6001600160a01b038316600090815260208190526040902054818110156123285760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109f9565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061235f9084906127a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123ab91815260200190565b60405180910390a3611b59565b6040805160028082526060820183524792600092919060208301908036833701905050905030816000815181106123f1576123f161292b565b6001600160a01b03928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124879190612941565b8160018151811061249a5761249a61292b565b6001600160a01b0392831660209182029290920101526006546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906124f990869060009086903090429060040161295e565b600060405180830381600087803b15801561251357600080fd5b505af1158015612527573d6000803e3d6000fd5b50505050600082476125399190612918565b600d54909150612552906001600160a01b031682612124565b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b600060208083528351808285015260005b818110156125bf578581018301518582016040015282016125a3565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b5d57600080fd5b6000806040838503121561260857600080fd5b8235612613816125e0565b946020939093013593505050565b60006020828403121561263357600080fd5b813561263e816125e0565b9392505050565b60008060006060848603121561265a57600080fd5b8335612665816125e0565b92506020840135612675816125e0565b929592945050506040919091013590565b8015158114611b5d57600080fd5b6000602082840312156126a657600080fd5b813561263e81612686565b6000602082840312156126c357600080fd5b5035919050565b600080604083850312156126dd57600080fd5b82356126e8816125e0565b915060208301356126f881612686565b809150509250929050565b6000806040838503121561271657600080fd5b50508035926020909101359150565b6000806040838503121561273857600080fd5b8235612743816125e0565b915060208301356126f8816125e0565b600181811c9082168061276757607f821691505b60208210810361278757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156109545761095461278d565b6000826127d357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156128135781600019048211156127f9576127f961278d565b8085161561280657918102915b93841c93908002906127dd565b509250929050565b60008261282a57506001610954565b8161283757506000610954565b816001811461284d576002811461285757612873565b6001915050610954565b60ff8411156128685761286861278d565b50506001821b610954565b5060208310610133831016604e8410600b8410161715612896575081810a610954565b6128a083836127d8565b80600019048211156128b4576128b461278d565b029392505050565b600061263e60ff84168361281b565b80820281158282048414176109545761095461278d565b6000602082840312156128f457600080fd5b5051919050565b60006020828403121561290d57600080fd5b815161263e81612686565b818103818111156109545761095461278d565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295357600080fd5b815161263e816125e0565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129ae5784516001600160a01b031683529383019391830191600101612989565b50506001600160a01b0396909616606085015250505060800152939250505056fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220180dc23483ca2bddab0d7689e43cb1bacf9ecc11fcf4b630054e6c4163447dbe64736f6c63430008110033
Deployed Bytecode Sourcemap
22434:10885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31387:39;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;31387:39:0;;;;;;;;22667:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17719:100::-;;;;;;;;;;;;;:::i;18633:169::-;;;;;;;;;;-1:-1:-1;18633:169:0;;;;;:::i;:::-;;:::i;:::-;;;1393:14:1;;1386:22;1368:41;;1356:2;1341:18;18633:169:0;1228:187:1;22519:41:0;;;;;;;;;;-1:-1:-1;22519:41:0;;;;-1:-1:-1;;;;;22519:41:0;;;;;;-1:-1:-1;;;;;1610:55:1;;;1592:74;;1580:2;1565:18;22519:41:0;1420:252:1;18040:108:0;;;;;;;;;;-1:-1:-1;18128:12:0;;18040:108;;33175:141;;;;;;;;;;-1:-1:-1;33175:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;33274:34:0;33250:4;33274:34;;;:25;:34;;;;;;;;;33175:141;18810:573;;;;;;;;;;-1:-1:-1;18810:573:0;;;;;:::i;:::-;;:::i;31338:42::-;;;;;;;;;;-1:-1:-1;31338:42:0;;;;;;;;17939:93;;;;;;;;;;-1:-1:-1;17939:93:0;;18022:2;2532:36:1;;2520:2;2505:18;17939:93:0;2390:184:1;19391:215:0;;;;;;;;;;-1:-1:-1;19391:215:0;;;;;:::i;:::-;;:::i;22567:29::-;;;;;;;;;;-1:-1:-1;22567:29:0;;;;-1:-1:-1;;;;;22567:29:0;;;27625:26;;;;;;;;;;-1:-1:-1;27625:26:0;;;;;;;;;;;26197:125;;;;;;;;;;-1:-1:-1;26197:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;26286:28:0;26262:4;26286:28;;;:19;:28;;;;;;;;;26197:125;31752:311;;;;;;;;;;-1:-1:-1;31752:311:0;;;;;:::i;:::-;;:::i;:::-;;31433:40;;;;;;;;;;;;;;;;22698:33;;;;;;;;;;;;;;;;26875:355;;;;;;;;;;-1:-1:-1;26875:355:0;;;;;:::i;:::-;;:::i;22945:26::-;;;;;;;;;;-1:-1:-1;22945:26:0;;;;;;;;;;;22781:41;;;;;;;;;;;;;;;;18156:127;;;;;;;;;;-1:-1:-1;18156:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18257:18:0;18230:7;18257:18;;;;;;;;;;;;18156:127;16906:148;;;;;;;;;;;;;:::i;26330:261::-;;;;;;;;;;-1:-1:-1;26330:261:0;;;;;:::i;:::-;;:::i;22831:31::-;;;;;;;;;;-1:-1:-1;22831:31:0;;;;-1:-1:-1;;;;;22831:31:0;;;32768:399;;;;;;;;;;-1:-1:-1;32768:399:0;;;;;:::i;:::-;;:::i;27660:175::-;;;;;;;;;;;;;:::i;16692:79::-;;;;;;;;;;-1:-1:-1;16757:6:0;;-1:-1:-1;;;;;16757:6:0;16692:79;;17827:104;;;;;;;;;;;;;:::i;19614:413::-;;;;;;;;;;-1:-1:-1;19614:413:0;;;;;:::i;:::-;;:::i;18291:175::-;;;;;;;;;;-1:-1:-1;18291:175:0;;;;;:::i;:::-;;:::i;30306:304::-;;;;;;;;;;-1:-1:-1;30306:304:0;;;;;:::i;:::-;;:::i;32071:689::-;;;;;;;;;;-1:-1:-1;32071:689:0;;;;;:::i;:::-;;:::i;27238:379::-;;;;;;;;;;-1:-1:-1;27238:379:0;;;;;:::i;:::-;;:::i;25899:290::-;;;;;;;;;;-1:-1:-1;25899:290:0;;;;;:::i;:::-;;:::i;22738:34::-;;;;;;;;;;;;;;;;18474:151;;;;;;;;;;-1:-1:-1;18474:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;18590:18:0;;;18563:7;18590:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18474:151;30119:179;;;;;;;;;;-1:-1:-1;30119:179:0;;;;;:::i;:::-;;:::i;22871:34::-;;;;;;;;;;;;;;;;26599:268;;;;;;;;;;-1:-1:-1;26599:268:0;;;;;:::i;:::-;;:::i;17062:244::-;;;;;;;;;;-1:-1:-1;17062:244:0;;;;;:::i;:::-;;:::i;25426:465::-;;;;;;;;;;-1:-1:-1;25426:465:0;;;;;:::i;:::-;;:::i;22667:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17719:100::-;17773:13;17806:5;17799:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17719:100;:::o;18633:169::-;18716:4;18733:39;16095:10;18756:7;18765:6;18733:8;:39::i;:::-;-1:-1:-1;18790:4:0;18633:169;;;;;:::o;18810:573::-;-1:-1:-1;;;;;18994:19:0;;18950:4;18994:19;;;:11;:19;;;;;;;;16095:10;18994:33;;;;;;;;-1:-1:-1;;19042:37:0;;19038:265;;19124:6;19104:16;:26;;19096:79;;;;-1:-1:-1;;;19096:79:0;;5041:2:1;19096:79:0;;;5023:21:1;5080:2;5060:18;;;5053:30;5119:34;5099:18;;;5092:62;5190:10;5170:18;;;5163:38;5218:19;;19096:79:0;;;;;;;;;19219:57;19228:6;16095:10;19269:6;19250:16;:25;19219:8;:57::i;:::-;19315:36;19325:6;19333:9;19344:6;19315:9;:36::i;:::-;-1:-1:-1;19371:4:0;;18810:573;-1:-1:-1;;;;18810:573:0:o;19391:215::-;16095:10;19479:4;19528:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19528:34:0;;;;;;;;;;19479:4;;19496:80;;19519:7;;19528:47;;19565:10;;19528:47;:::i;:::-;19496:8;:80::i;31752:311::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;31851:26:::1;::::0;::::1;;31841:36;;::::0;::::1;;::::0;31833:99:::1;;;::::0;-1:-1:-1;;;31833:99:0;;6130:2:1;31833:99:0::1;::::0;::::1;6112:21:1::0;6169:2;6149:18;;;6142:30;6208:34;6188:18;;;6181:62;6279:20;6259:18;;;6252:48;6317:19;;31833:99:0::1;5928:414:1::0;31833:99:0::1;31943:26;:35:::0;;-1:-1:-1;;31943:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31996:59:::1;::::0;31943:35:::1;32028:26:::0;;;1393:14:1;1386:22;1368:41;;31996:59:0::1;::::0;1356:2:1;1341:18;31996:59:0::1;;;;;;;;31752:311:::0;:::o;26875:355::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;27020:1:::1;26990:26;:31;;26982:99;;;::::0;-1:-1:-1;;;26982:99:0;;6549:2:1;26982:99:0::1;::::0;::::1;6531:21:1::0;6588:2;6568:18;;;6561:30;6627:34;6607:18;;;6600:62;6698:25;6678:18;;;6671:53;6741:19;;26982:99:0::1;6347:419:1::0;26982:99:0::1;27092:25;:54:::0;;;27164:58:::1;::::0;160:25:1;;;27164:58:0::1;::::0;148:2:1;133:18;27164:58:0::1;14:177:1::0;16906:148:0;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;16997:6:::1;::::0;16976:40:::1;::::0;17013:1:::1;::::0;-1:-1:-1;;;;;16997:6:0::1;::::0;16976:40:::1;::::0;17013:1;;16976:40:::1;17027:6;:19:::0;;-1:-1:-1;;17027:19:0::1;::::0;;16906:148::o;26330:261::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;26411:17:::1;:38:::0;;;26491:1:::1;26470:22:::0;::::1;;26462:71;;;::::0;-1:-1:-1;;;26462:71:0;;6973:2:1;26462:71:0::1;::::0;::::1;6955:21:1::0;7012:2;6992:18;;;6985:30;7051:34;7031:18;;;7024:62;-1:-1:-1;;;7102:18:1;;;7095:34;7146:19;;26462:71:0::1;6771:400:1::0;26462:71:0::1;26551:32;26565:17;;26551:32;;;;160:25:1::0;;148:2;133:18;;14:177;32768:399:0;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;-1:-1:-1;;;;;32878:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;:45;::::1;;:34;::::0;;::::1;:45;;::::0;32869:95:::1;;;::::0;-1:-1:-1;;;32869:95:0;;7378:2:1;32869:95:0::1;::::0;::::1;7360:21:1::0;7417:2;7397:18;;;7390:30;7456:34;7436:18;;;7429:62;7527:6;7507:18;;;7500:34;7551:19;;32869:95:0::1;7176:400:1::0;32869:95:0::1;33002:4;-1:-1:-1::0;;;;;32983:24:0;::::1;::::0;32975:60:::1;;;::::0;-1:-1:-1;;;32975:60:0;;7783:2:1;32975:60:0::1;::::0;::::1;7765:21:1::0;7822:2;7802:18;;;7795:30;7861:25;7841:18;;;7834:53;7904:18;;32975:60:0::1;7581:347:1::0;32975:60:0::1;-1:-1:-1::0;;;;;33048:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;;;;:44;;-1:-1:-1;;33048:44:0::1;::::0;::::1;;::::0;;::::1;::::0;;;33110:49;;1368:41:1;;;33110:49:0::1;::::0;1341:18:1;33110:49:0::1;;;;;;;;32768:399:::0;;:::o;27660:175::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;27723:14:::1;::::0;;;::::1;;;27722:15;27714:52;;;::::0;-1:-1:-1;;;27714:52:0;;8135:2:1;27714:52:0::1;::::0;::::1;8117:21:1::0;8174:2;8154:18;;;8147:30;8213:26;8193:18;;;8186:54;8257:18;;27714:52:0::1;7933:348:1::0;27714:52:0::1;27777:14;:21:::0;;-1:-1:-1;;27809:18:0;;;;;27660:175::o;17827:104::-;17883:13;17916:7;17909:14;;;;;:::i;19614:413::-;16095:10;19707:4;19751:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19751:34:0;;;;;;;;;;19804:35;;;;19796:85;;;;-1:-1:-1;;;19796:85:0;;8488:2:1;19796:85:0;;;8470:21:1;8527:2;8507:18;;;8500:30;8566:34;8546:18;;;8539:62;8637:7;8617:18;;;8610:35;8662:19;;19796:85:0;8286:401:1;19796:85:0;19917:67;16095:10;19940:7;19968:15;19949:16;:34;19917:8;:67::i;:::-;-1:-1:-1;20015:4:0;;19614:413;-1:-1:-1;;;19614:413:0:o;18291:175::-;18377:4;18394:42;16095:10;18418:9;18429:6;18394:9;:42::i;30306:304::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;30421:9:::1;30405:13;18128:12:::0;;;18040:108;30405:13:::1;:25;;;;:::i;:::-;30393:9;:37;30385:113;;;::::0;-1:-1:-1;;;30385:113:0;;9173:2:1;30385:113:0::1;::::0;::::1;9155:21:1::0;9212:2;9192:18;;;9185:30;9251:34;9231:18;;;9224:62;9322:33;9302:18;;;9295:61;9373:19;;30385:113:0::1;8971:427:1::0;30385:113:0::1;30509:18;:30:::0;;;30557:45:::1;::::0;160:25:1;;;30557:45:0::1;::::0;148:2:1;133:18;30557:45:0::1;14:177:1::0;32071:689:0;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;32294:5:::1;32273:16;18022:2:::0;32273::::1;:16;:::i;:::-;18128:12:::0;;32256:34:::1;;;;:::i;:::-;32255:44;;;;:::i;:::-;32226:24;:73;;:164;;;;-1:-1:-1::0;32385:5:0::1;32364:16;18022:2:::0;32364::::1;:16;:::i;:::-;18128:12:::0;;32347:34:::1;;;;:::i;:::-;32346:44;;;;:::i;:::-;32317:25;:73;;32226:164;32204:278;;;::::0;-1:-1:-1;;;32204:278:0;;10988:2:1;32204:278:0::1;::::0;::::1;10970:21:1::0;11027:2;11007:18;;;11000:30;11066:34;11046:18;;;11039:62;11137:33;11117:18;;;11110:61;11188:19;;32204:278:0::1;10786:427:1::0;32204:278:0::1;32550:16;18022:2:::0;32550::::1;:16;:::i;:::-;32521:46;::::0;:24;:46:::1;:::i;:::-;32494:23;:73:::0;32640:10:::1;18022:2:::0;;17939:93;32640:10:::1;32634:16;::::0;:2:::1;:16;:::i;:::-;32605:46;::::0;:25;:46:::1;:::i;:::-;32578:24;:73:::0;;;32702:23:::1;::::0;32669:83:::1;::::0;::::1;::::0;::::1;::::0;11565:25:1;;11621:2;11606:18;;11599:34;11553:2;11538:18;;11391:248;32669:83:0::1;;;;;;;;32071:689:::0;;:::o;27238:379::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;27352:15:::1;::::0;-1:-1:-1;;;;;27352:15:0;;::::1;27332:35:::0;;::::1;::::0;27324:87:::1;;;::::0;-1:-1:-1;;;27324:87:0;;11846:2:1;27324:87:0::1;::::0;::::1;11828:21:1::0;11885:2;11865:18;;;11858:30;11924:34;11904:18;;;11897:62;11995:10;11975:18;;;11968:38;12023:19;;27324:87:0::1;11644:404:1::0;27324:87:0::1;-1:-1:-1::0;;;;;27430:30:0;::::1;27422:85;;;::::0;-1:-1:-1;;;27422:85:0;;12255:2:1;27422:85:0::1;::::0;::::1;12237:21:1::0;12294:2;12274:18;;;12267:30;12333:34;12313:18;;;12306:62;12404:13;12384:18;;;12377:41;12435:19;;27422:85:0::1;12053:407:1::0;27422:85:0::1;27518:15;:34:::0;;-1:-1:-1;;27518:34:0::1;-1:-1:-1::0;;;;;27518:34:0;::::1;::::0;;::::1;::::0;;;27570:39:::1;::::0;1592:74:1;;;27570:39:0::1;::::0;1580:2:1;1565:18;27570:39:0::1;1420:252:1::0;25899:290:0;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;-1:-1:-1;;;;;25993:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;25985:94:::1;;;::::0;-1:-1:-1;;;25985:94:0;;12667:2:1;25985:94:0::1;::::0;::::1;12649:21:1::0;12706:2;12686:18;;;12679:30;12745:34;12725:18;;;12718:62;12816:12;12796:18;;;12789:40;12846:19;;25985:94:0::1;12465:406:1::0;25985:94:0::1;-1:-1:-1::0;;;;;26090:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;26090:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26147:34;;1368:41:1;;;26147:34:0::1;::::0;1341:18:1;26147:34:0::1;1228:187:1::0;30119:179:0;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;30210:8:::1;30195:23;;:11;;;;;;;;;;;:23;;::::0;30187:70:::1;;;::::0;-1:-1:-1;;;30187:70:0;;13078:2:1;30187:70:0::1;::::0;::::1;13060:21:1::0;13117:2;13097:18;;;13090:30;13156:34;13136:18;;;13129:62;13227:4;13207:18;;;13200:32;13249:19;;30187:70:0::1;12876:398:1::0;30187:70:0::1;30268:11;:22:::0;;;::::1;;;;-1:-1:-1::0;;30268:22:0;;::::1;::::0;;;::::1;::::0;;30119:179::o;26599:268::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;26682:18:::1;:40:::0;;;26765:1:::1;26743:23:::0;::::1;;26735:72;;;::::0;-1:-1:-1;;;26735:72:0;;6973:2:1;26735:72:0::1;::::0;::::1;6955:21:1::0;7012:2;6992:18;;;6985:30;7051:34;7031:18;;;7024:62;-1:-1:-1;;;7102:18:1;;;7095:34;7146:19;;26735:72:0::1;6771:400:1::0;26735:72:0::1;26825:34;26840:18;;26825:34;;;;160:25:1::0;;148:2;133:18;;14:177;17062:244:0;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;-1:-1:-1;;;;;17151:22:0;::::1;17143:73;;;::::0;-1:-1:-1;;;17143:73:0;;13481:2:1;17143:73:0::1;::::0;::::1;13463:21:1::0;13520:2;13500:18;;;13493:30;13559:34;13539:18;;;13532:62;13630:8;13610:18;;;13603:36;13656:19;;17143:73:0::1;13279:402:1::0;17143:73:0::1;17253:6;::::0;17232:38:::1;::::0;-1:-1:-1;;;;;17232:38:0;;::::1;::::0;17253:6:::1;::::0;17232:38:::1;::::0;17253:6:::1;::::0;17232:38:::1;17281:6;:17:::0;;-1:-1:-1;;17281:17:0::1;-1:-1:-1::0;;;;;17281:17:0;;;::::1;::::0;;;::::1;::::0;;17062:244::o;25426:465::-;16819:6;;-1:-1:-1;;;;;16819:6:0;16095:10;16819:22;16811:67;;;;-1:-1:-1;;;16811:67:0;;5769:2:1;16811:67:0;;;5751:21:1;;;5788:18;;;5781:30;-1:-1:-1;;;;;;;;;;;5827:18:1;;;5820:62;5899:18;;16811:67:0;5567:356:1;16811:67:0;25522:4:::1;-1:-1:-1::0;;;;;25505:22:0;::::1;::::0;25497:90:::1;;;::::0;-1:-1:-1;;;25497:90:0;;13888:2:1;25497:90:0::1;::::0;::::1;13870:21:1::0;13927:2;13907:18;;;13900:30;13966:34;13946:18;;;13939:62;14037:25;14017:18;;;14010:53;14080:19;;25497:90:0::1;13686:419:1::0;25497:90:0::1;-1:-1:-1::0;;;;;25602:21:0;::::1;25598:127;;25640:52;25648:10;25670:21;25640:29;:52::i;:::-;;25426:465:::0;:::o;25598:127::-:1;25797:35;::::0;;;;25826:4:::1;25797:35;::::0;::::1;1592:74:1::0;25762:5:0;;25735:17:::1;::::0;-1:-1:-1;;;;;25797:20:0;::::1;::::0;::::1;::::0;1565:18:1;;25797:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25843:40;::::0;;;;25863:10:::1;25843:40;::::0;::::1;14473:74:1::0;14563:18;;;14556:34;;;25779:53:0;;-1:-1:-1;;;;;;25843:19:0;::::1;::::0;::::1;::::0;14446:18:1;;25843:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25486:405;;16889:1;25426:465:::0;:::o;21782:380::-;-1:-1:-1;;;;;21918:19:0;;21910:68;;;;-1:-1:-1;;;21910:68:0;;15053:2:1;21910:68:0;;;15035:21:1;15092:2;15072:18;;;15065:30;15131:34;15111:18;;;15104:62;15202:6;15182:18;;;15175:34;15226:19;;21910:68:0;14851:400:1;21910:68:0;-1:-1:-1;;;;;21997:21:0;;21989:68;;;;-1:-1:-1;;;21989:68:0;;15458:2:1;21989:68:0;;;15440:21:1;15497:2;15477:18;;;15470:30;15536:34;15516:18;;;15509:62;15607:4;15587:18;;;15580:32;15629:19;;21989:68:0;15256:398:1;21989:68:0;-1:-1:-1;;;;;22070:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22122:32;;160:25:1;;;22122:32:0;;133:18:1;22122:32:0;;;;;;;21782:380;;;:::o;27843:2268::-;-1:-1:-1;;;;;27940:18:0;;27932:68;;;;-1:-1:-1;;;27932:68:0;;15861:2:1;27932:68:0;;;15843:21:1;15900:2;15880:18;;;15873:30;15939:34;15919:18;;;15912:62;-1:-1:-1;;;15990:18:1;;;15983:35;16035:19;;27932:68:0;15659:401:1;27932:68:0;-1:-1:-1;;;;;28019:16:0;;28011:64;;;;-1:-1:-1;;;28011:64:0;;16267:2:1;28011:64:0;;;16249:21:1;16306:2;16286:18;;;16279:30;16345:34;16325:18;;;16318:62;-1:-1:-1;;;16396:18:1;;;16389:33;16439:19;;28011:64:0;16065:399:1;28011:64:0;28094:14;;;;;;;;:43;;-1:-1:-1;;;;;;28112:25:0;;;;;;:19;:25;;;;;;;;28094:43;:70;;;-1:-1:-1;;;;;;28141:23:0;;;;;;:19;:23;;;;;;;;28094:70;28086:107;;;;-1:-1:-1;;;28086:107:0;;16671:2:1;28086:107:0;;;16653:21:1;16710:2;16690:18;;;16683:30;16749:26;16729:18;;;16722:54;16793:18;;28086:107:0;16469:348:1;28086:107:0;28217:6;28227:1;28217:11;28213:93;;28245:28;28261:4;28267:2;28271:1;28245:15;:28::i;:::-;27843:2268;;;:::o;28213:93::-;28322:26;;;;28318:752;;;28388:13;;-1:-1:-1;;;;;28380:21:0;;;28388:13;;28380:21;;:44;;-1:-1:-1;28411:13:0;;-1:-1:-1;;;;;28405:19:0;;;28411:13;;28405:19;28380:44;28379:99;;;;-1:-1:-1;;;;;;28447:31:0;;;;;;:25;:31;;;;;;;;28446:32;28379:99;:151;;;;-1:-1:-1;;;;;;28501:29:0;;;;;;:25;:29;;;;;;;;28500:30;28379:151;28375:684;;;28577:13;;-1:-1:-1;;;;;28577:13:0;;;28569:21;;;;28565:479;;28659:23;;28649:6;:33;;28615:180;;;;-1:-1:-1;;;28615:180:0;;17024:2:1;28615:180:0;;;17006:21:1;17063:2;17043:18;;;17036:30;17102:34;17082:18;;;17075:62;17173:29;17153:18;;;17146:57;17220:19;;28615:180:0;16822:423:1;28615:180:0;28565:479;;;28888:24;;28878:6;:34;;28844:180;;;;-1:-1:-1;;;28844:180:0;;17024:2:1;28844:180:0;;;17006:21:1;17063:2;17043:18;;;17036:30;17102:34;17082:18;;;17075:62;17173:29;17153:18;;;17146:57;17220:19;;28844:180:0;16822:423:1;28844:180:0;29125:4;29076:28;18257:18;;;;;;;;;;;29183;;29159:42;;;;;;;29218:33;;-1:-1:-1;29243:8:0;;;;29242:9;29218:33;:69;;;;-1:-1:-1;29274:13:0;;-1:-1:-1;;;;;29268:19:0;;;29274:13;;29268:19;29218:69;:97;;;;-1:-1:-1;29304:11:0;;;;;;;29218:97;29214:247;;;29342:8;:15;;-1:-1:-1;;29342:15:0;29353:4;29342:15;;;29374:42;29395:20;29374;:42::i;:::-;29433:8;:16;;-1:-1:-1;;29433:16:0;;;29214:247;-1:-1:-1;;;;;29506:25:0;;29473:18;29506:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;29535:23:0;;;;;;:19;:23;;;;;;;;29506:52;:64;;;-1:-1:-1;29562:8:0;;;;29506:64;29502:361;;;-1:-1:-1;29600:1:0;29502:361;;;29631:13;;-1:-1:-1;;;;;29631:13:0;;;29623:21;;;;29619:244;;-1:-1:-1;29674:17:0;;29619:244;;;29719:13;;-1:-1:-1;;;;;29719:13:0;;;29713:19;;;;29709:154;;-1:-1:-1;29762:18:0;;29709:154;;;-1:-1:-1;29826:25:0;;29709:154;29879:14;;29875:183;;29910:12;29949:3;29926:19;29935:10;29926:6;:19;:::i;:::-;29925:27;;;;:::i;:::-;29910:42;-1:-1:-1;29976:13:0;29910:42;29976:6;:13;:::i;:::-;29967:22;;30004:42;30020:4;30034;30041;30004:15;:42::i;:::-;29895:163;29875:183;30070:33;30086:4;30092:2;30096:6;30070:15;:33::i;:::-;27921:2190;;;27843:2268;;;:::o;11925:266::-;12004:4;12053:6;12028:21;:31;;12020:73;;;;-1:-1:-1;;;12020:73:0;;17585:2:1;12020:73:0;;;17567:21:1;17624:2;17604:18;;;17597:30;17663:31;17643:18;;;17636:59;17712:18;;12020:73:0;17383:353:1;12020:73:0;12107:12;12125:9;-1:-1:-1;;;;;12125:14:0;12147:6;12125:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12106:52:0;;11925:266;-1:-1:-1;;;;;11925:266:0:o;20035:733::-;-1:-1:-1;;;;;20175:20:0;;20167:70;;;;-1:-1:-1;;;20167:70:0;;15861:2:1;20167:70:0;;;15843:21:1;15900:2;15880:18;;;15873:30;15939:34;15919:18;;;15912:62;-1:-1:-1;;;15990:18:1;;;15983:35;16035:19;;20167:70:0;15659:401:1;20167:70:0;-1:-1:-1;;;;;20256:23:0;;20248:71;;;;-1:-1:-1;;;20248:71:0;;16267:2:1;20248:71:0;;;16249:21:1;16306:2;16286:18;;;16279:30;16345:34;16325:18;;;16318:62;-1:-1:-1;;;16396:18:1;;;16389:33;16439:19;;20248:71:0;16065:399:1;20248:71:0;-1:-1:-1;;;;;20416:17:0;;20392:21;20416:17;;;;;;;;;;;20452:23;;;;20444:74;;;;-1:-1:-1;;;20444:74:0;;18153:2:1;20444:74:0;;;18135:21:1;18192:2;18172:18;;;18165:30;18231:34;18211:18;;;18204:62;18302:8;18282:18;;;18275:36;18328:19;;20444:74:0;17951:402:1;20444:74:0;-1:-1:-1;;;;;20554:17:0;;;:9;:17;;;;;;;;;;;20574:22;;;20554:42;;20618:20;;;;;;;;:30;;20590:6;;20554:9;20618:30;;20590:6;;20618:30;:::i;:::-;;;;;;;;20683:9;-1:-1:-1;;;;;20666:35:0;20675:6;-1:-1:-1;;;;;20666:35:0;;20694:6;20666:35;;;;160:25:1;;148:2;133:18;;14:177;20666:35:0;;;;;;;;20714:46;27843:2268;30618:647;30771:16;;;30785:1;30771:16;;;;;;;;30713:21;;30688:22;;30771:16;30785:1;30771:16;;;;;;;;;;-1:-1:-1;30771:16:0;30747:40;;30816:4;30798;30803:1;30798:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30798:23:0;;;:7;;;;;;;;;;:23;;;;30842:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;30798:7;;30842:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30832:4;30837:1;30832:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30832:32:0;;;:7;;;;;;;;;:32;30877:15;;:186;;;;;:15;;;:66;;:186;;30958:11;;30877:15;;31000:4;;31027;;31047:15;;30877:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31076:18;31121:14;31097:21;:38;;;;:::i;:::-;31156:15;;31076:59;;-1:-1:-1;31148:46:0;;-1:-1:-1;;;;;31156:15:0;31076:59;31148:34;:46::i;:::-;-1:-1:-1;31212:45:0;;;11565:25:1;;;11621:2;11606:18;;11599:34;;;31212:45:0;;11538:18:1;31212:45:0;;;;;;;30677:588;;;30618:647;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:154::-;-1:-1:-1;;;;;828:5:1;824:54;817:5;814:65;804:93;;893:1;890;883:12;908:315;976:6;984;1037:2;1025:9;1016:7;1012:23;1008:32;1005:52;;;1053:1;1050;1043:12;1005:52;1092:9;1079:23;1111:31;1136:5;1111:31;:::i;:::-;1161:5;1213:2;1198:18;;;;1185:32;;-1:-1:-1;;;908:315:1:o;1677:247::-;1736:6;1789:2;1777:9;1768:7;1764:23;1760:32;1757:52;;;1805:1;1802;1795:12;1757:52;1844:9;1831:23;1863:31;1888:5;1863:31;:::i;:::-;1913:5;1677:247;-1:-1:-1;;;1677:247:1:o;1929:456::-;2006:6;2014;2022;2075:2;2063:9;2054:7;2050:23;2046:32;2043:52;;;2091:1;2088;2081:12;2043:52;2130:9;2117:23;2149:31;2174:5;2149:31;:::i;:::-;2199:5;-1:-1:-1;2256:2:1;2241:18;;2228:32;2269:33;2228:32;2269:33;:::i;:::-;1929:456;;2321:7;;-1:-1:-1;;;2375:2:1;2360:18;;;;2347:32;;1929:456::o;2810:118::-;2896:5;2889:13;2882:21;2875:5;2872:32;2862:60;;2918:1;2915;2908:12;2933:241;2989:6;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;3097:9;3084:23;3116:28;3138:5;3116:28;:::i;3179:180::-;3238:6;3291:2;3279:9;3270:7;3266:23;3262:32;3259:52;;;3307:1;3304;3297:12;3259:52;-1:-1:-1;3330:23:1;;3179:180;-1:-1:-1;3179:180:1:o;3364:382::-;3429:6;3437;3490:2;3478:9;3469:7;3465:23;3461:32;3458:52;;;3506:1;3503;3496:12;3458:52;3545:9;3532:23;3564:31;3589:5;3564:31;:::i;:::-;3614:5;-1:-1:-1;3671:2:1;3656:18;;3643:32;3684:30;3643:32;3684:30;:::i;:::-;3733:7;3723:17;;;3364:382;;;;;:::o;3751:248::-;3819:6;3827;3880:2;3868:9;3859:7;3855:23;3851:32;3848:52;;;3896:1;3893;3886:12;3848:52;-1:-1:-1;;3919:23:1;;;3989:2;3974:18;;;3961:32;;-1:-1:-1;3751:248:1:o;4004:388::-;4072:6;4080;4133:2;4121:9;4112:7;4108:23;4104:32;4101:52;;;4149:1;4146;4139:12;4101:52;4188:9;4175:23;4207:31;4232:5;4207:31;:::i;:::-;4257:5;-1:-1:-1;4314:2:1;4299:18;;4286:32;4327:33;4286:32;4327:33;:::i;4397:437::-;4476:1;4472:12;;;;4519;;;4540:61;;4594:4;4586:6;4582:17;4572:27;;4540:61;4647:2;4639:6;4636:14;4616:18;4613:38;4610:218;;-1:-1:-1;;;4681:1:1;4674:88;4785:4;4782:1;4775:15;4813:4;4810:1;4803:15;4610:218;;4397:437;;;:::o;5248:184::-;-1:-1:-1;;;5297:1:1;5290:88;5397:4;5394:1;5387:15;5421:4;5418:1;5411:15;5437:125;5502:9;;;5523:10;;;5520:36;;;5536:18;;:::i;8692:274::-;8732:1;8758;8748:189;;-1:-1:-1;;;8790:1:1;8783:88;8894:4;8891:1;8884:15;8922:4;8919:1;8912:15;8748:189;-1:-1:-1;8951:9:1;;8692:274::o;9403:422::-;9492:1;9535:5;9492:1;9549:270;9570:7;9560:8;9557:21;9549:270;;;9629:4;9625:1;9621:6;9617:17;9611:4;9608:27;9605:53;;;9638:18;;:::i;:::-;9688:7;9678:8;9674:22;9671:55;;;9708:16;;;;9671:55;9787:22;;;;9747:15;;;;9549:270;;;9553:3;9403:422;;;;;:::o;9830:806::-;9879:5;9909:8;9899:80;;-1:-1:-1;9950:1:1;9964:5;;9899:80;9998:4;9988:76;;-1:-1:-1;10035:1:1;10049:5;;9988:76;10080:4;10098:1;10093:59;;;;10166:1;10161:130;;;;10073:218;;10093:59;10123:1;10114:10;;10137:5;;;10161:130;10198:3;10188:8;10185:17;10182:43;;;10205:18;;:::i;:::-;-1:-1:-1;;10261:1:1;10247:16;;10276:5;;10073:218;;10375:2;10365:8;10362:16;10356:3;10350:4;10347:13;10343:36;10337:2;10327:8;10324:16;10319:2;10313:4;10310:12;10306:35;10303:77;10300:159;;;-1:-1:-1;10412:19:1;;;10444:5;;10300:159;10491:34;10516:8;10510:4;10491:34;:::i;:::-;10561:6;10557:1;10553:6;10549:19;10540:7;10537:32;10534:58;;;10572:18;;:::i;:::-;10610:20;;9830:806;-1:-1:-1;;;9830:806:1:o;10641:140::-;10699:5;10728:47;10769:4;10759:8;10755:19;10749:4;10728:47;:::i;11218:168::-;11291:9;;;11322;;11339:15;;;11333:22;;11319:37;11309:71;;11360:18;;:::i;14110:184::-;14180:6;14233:2;14221:9;14212:7;14208:23;14204:32;14201:52;;;14249:1;14246;14239:12;14201:52;-1:-1:-1;14272:16:1;;14110:184;-1:-1:-1;14110:184:1:o;14601:245::-;14668:6;14721:2;14709:9;14700:7;14696:23;14692:32;14689:52;;;14737:1;14734;14727:12;14689:52;14769:9;14763:16;14788:28;14810:5;14788:28;:::i;17250:128::-;17317:9;;;17338:11;;;17335:37;;;17352:18;;:::i;18547:184::-;-1:-1:-1;;;18596:1:1;18589:88;18696:4;18693:1;18686:15;18720:4;18717:1;18710:15;18736:251;18806:6;18859:2;18847:9;18838:7;18834:23;18830:32;18827:52;;;18875:1;18872;18865:12;18827:52;18907:9;18901:16;18926:31;18951:5;18926:31;:::i;18992:1026::-;19254:4;19302:3;19291:9;19287:19;19333:6;19322:9;19315:25;19359:2;19397:6;19392:2;19381:9;19377:18;19370:34;19440:3;19435:2;19424:9;19420:18;19413:31;19464:6;19499;19493:13;19530:6;19522;19515:22;19568:3;19557:9;19553:19;19546:26;;19607:2;19599:6;19595:15;19581:29;;19628:1;19638:218;19652:6;19649:1;19646:13;19638:218;;;19717:13;;-1:-1:-1;;;;;19713:62:1;19701:75;;19831:15;;;;19796:12;;;;19674:1;19667:9;19638:218;;;-1:-1:-1;;;;;;;19912:55:1;;;;19907:2;19892:18;;19885:83;-1:-1:-1;;;19999:3:1;19984:19;19977:35;19873:3;18992:1026;-1:-1:-1;;;18992:1026:1:o
Swarm Source
ipfs://180dc23483ca2bddab0d7689e43cb1bacf9ecc11fcf4b630054e6c4163447dbe
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.