More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 52 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18532227 | 286 days ago | IN | 0 ETH | 0.00130173 | ||||
Approve | 18532196 | 286 days ago | IN | 0 ETH | 0.00147649 | ||||
Transfer | 18532186 | 286 days ago | IN | 0 ETH | 0.00150094 | ||||
Transfer | 18532185 | 286 days ago | IN | 0 ETH | 0.00154938 | ||||
Transfer | 18532183 | 286 days ago | IN | 0 ETH | 0.00156807 | ||||
Transfer | 18532179 | 286 days ago | IN | 0 ETH | 0.00285152 | ||||
Approve | 18532171 | 286 days ago | IN | 0 ETH | 0.00145524 | ||||
Approve | 18532164 | 286 days ago | IN | 0 ETH | 0.00127274 | ||||
Approve | 18532151 | 286 days ago | IN | 0 ETH | 0.00121538 | ||||
Transfer | 18532127 | 286 days ago | IN | 0 ETH | 0.00126574 | ||||
Transfer | 18532114 | 286 days ago | IN | 0 ETH | 0.00126727 | ||||
Approve | 18532107 | 286 days ago | IN | 0 ETH | 0.00115457 | ||||
Transfer | 18532106 | 286 days ago | IN | 0 ETH | 0.00127939 | ||||
Transfer | 18532104 | 286 days ago | IN | 0 ETH | 0.00136519 | ||||
Transfer | 18532103 | 286 days ago | IN | 0 ETH | 0.00134613 | ||||
Transfer | 18532102 | 286 days ago | IN | 0 ETH | 0.00134211 | ||||
Transfer | 18532101 | 286 days ago | IN | 0 ETH | 0.00136526 | ||||
Transfer | 18532099 | 286 days ago | IN | 0 ETH | 0.00121643 | ||||
Transfer | 18532098 | 286 days ago | IN | 0 ETH | 0.00126519 | ||||
Transfer | 18532097 | 286 days ago | IN | 0 ETH | 0.00171599 | ||||
Approve | 18532092 | 286 days ago | IN | 0 ETH | 0.0012003 | ||||
Approve | 18532089 | 286 days ago | IN | 0 ETH | 0.00126077 | ||||
Transfer | 18532089 | 286 days ago | IN | 0 ETH | 0.0013491 | ||||
Transfer | 18532088 | 286 days ago | IN | 0 ETH | 0.00189364 | ||||
Approve | 18532085 | 286 days ago | IN | 0 ETH | 0.00175649 |
Latest 13 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18532244 | 286 days ago | 0.00171385 ETH | ||||
18532244 | 286 days ago | 0.00171385 ETH | ||||
18532078 | 286 days ago | 0.00139708 ETH | ||||
18532078 | 286 days ago | 0.00139708 ETH | ||||
18532074 | 286 days ago | 0.01266706 ETH | ||||
18532074 | 286 days ago | 0.01266706 ETH | ||||
18532073 | 286 days ago | 0.13911281 ETH | ||||
18532073 | 286 days ago | 0.13911281 ETH | ||||
18532069 | 286 days ago | 0.00347257 ETH | ||||
18532069 | 286 days ago | 0.00347257 ETH | ||||
18532062 | 286 days ago | 0.05108271 ETH | ||||
18532062 | 286 days ago | 0.05108271 ETH | ||||
18532034 | 286 days ago | 1.3 ETH |
Loading...
Loading
Contract Name:
SmurfCatKiller
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-09 */ /** 🧟♂️Website: https://gargamel.xyz Telegram: https://t.me/ethgargamel 🧟♂️Twitter: https://twitter.com/ethgargamel */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; 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; } } 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 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 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 IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { 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 SmurfCatKiller is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _exemptFromFee; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 public transferTax; bool public tradingStatus; address public marketingAddress; uint256 public swapTokensAtAmount; bool private swapping; bool public swapEnabled; mapping(address => bool) private exemptMaxTxLimit; bool public maxTxLimitsEnable; uint256 public maxTransactionAmountBuy; uint256 public maxTransactionAmountSell; event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded); event MaxTransactionLimitStateChanged(bool maxTransactionLimit); event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell); event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingAddress); event UpdateBuyFees(uint256 marketingFeeOnBuy); event UpdateSellFees(uint256 marketingFeeOnSell); event UpdateWalletToWalletTransferFee(uint256 transferTax); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20(unicode"Smurf Killer - Gargamel", "GARGAMEL") { 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); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), type(uint256).max); marketingFeeOnBuy = 20; marketingFeeOnSell = 20; transferTax = 0; maxTxLimitsEnable = true; marketingAddress = 0x0Dc8571D84D5306361249a5f67EC6186B8FA30BC; exemptMaxTxLimit[owner()] = true; exemptMaxTxLimit[marketingAddress] = true; exemptMaxTxLimit[address(this)] = true; exemptMaxTxLimit[address(0xdead)] = true; _exemptFromFee[owner()] = true; _exemptFromFee[marketingAddress] = true; _exemptFromFee[address(0xdead)] = true; _exemptFromFee[address(this)] = true; _mint(owner(), 690_000_000 * (10 ** decimals())); swapTokensAtAmount = totalSupply() * 3 / 100_000; maxTransactionAmountBuy = totalSupply() * 20 / 1000; maxTransactionAmountSell = totalSupply() * 20 / 1000; tradingStatus = false; swapEnabled = false; } receive() external payable { } function addLiquidityOnUniswap() external payable onlyOwner() { require(!tradingStatus,"trading is already open"); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingAddress,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingAddress = _marketingWallet; emit MarketingWalletChanged(marketingAddress); } function isExcludedFromFees(address account) public view returns(bool) { return _exemptFromFee[account]; } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_exemptFromFee[account] != excluded,"Account is already the value of 'excluded'"); _exemptFromFee[account] = excluded; emit ExcludeFromFees(account, excluded); } function claimStuckTokens(address token) external { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); require(msg.sender == marketingAddress || _exemptFromFee[msg.sender], "Only owner can claim"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = balanceOf(address(ERC20token)) - swapTokensAtAmount; super._transfer(token, address(this), balance); } function reduceBuyFees(uint256 _marketingFeeOnBuy) external onlyOwner { marketingFeeOnBuy = _marketingFeeOnBuy; require(marketingFeeOnBuy <= 5, "Total Fees cannot exceed the maximum"); emit UpdateBuyFees(marketingFeeOnBuy); } function reduceSellFees(uint256 _marketingFeeOnSell) external onlyOwner { marketingFeeOnSell = _marketingFeeOnSell; require(marketingFeeOnSell <= 5, "Total Fees cannot exceed the maximum"); emit UpdateSellFees(marketingFeeOnSell); } function enableTrade() external onlyOwner { require(!tradingStatus, "Trading already enabled."); tradingStatus = 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(tradingStatus || _exemptFromFee[from] || _exemptFromFee[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } if (maxTxLimitsEnable) { if ((from == uniswapV2Pair || to == uniswapV2Pair) && !exemptMaxTxLimit[from] && !exemptMaxTxLimit[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 && amount > swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && swapEnabled && !_exemptFromFee[from] && !_exemptFromFee[to] ) { swapping = true; swapAndSendMarketing(contractTokenBalance); swapping = false; } uint256 _feeAmount; if (_exemptFromFee[from] || _exemptFromFee[to] || swapping) { _feeAmount = 0; } else if (from == uniswapV2Pair) { _feeAmount = marketingFeeOnBuy; } else if (to == uniswapV2Pair) { _feeAmount = marketingFeeOnSell; } else { _feeAmount = transferTax; } if (_feeAmount > 0) { uint256 fees = (amount * _feeAmount) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } function setEnableMaxTransactionLimit() external onlyOwner { maxTxLimitsEnable = false; emit MaxTransactionLimitStateChanged(maxTxLimitsEnable); } 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 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(marketingAddress).transfer(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } }
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":"marketingAddress","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":"transferTax","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[],"name":"addLiquidityOnUniswap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"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":"enableTrade","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"maxTxLimitsEnable","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":[{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"}],"name":"reduceBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"reduceSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"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":"tradingStatus","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":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280601781526020017f536d757266204b696c6c6572202d2047617267616d656c0000000000000000008152506040518060400160405280600881526020016711d05491d053515360c21b81525081600390816200007a9190620006ba565b506004620000898282620006ba565b50505060006200009e620003fc60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000466038036200011357507310ed43c718714eb63d5aa57b78b54704e256024e6200016f565b4660610362000138575073d99d1c33f9fc3444f8101754abc46c52416550d16200016f565b4660011480620001485750466005145b156200016a5750737a250d5630b4cf539739df2c5dacb4c659f2488d6200016f565b600080fd5b600680546001600160a01b0319166001600160a01b03831690811790915581906200019f90309060001962000400565b60146009819055600a556000600b81905560108054600160ff199091168117909155600c8054610100600160a81b031916740dc8571d84d5306361249a5f67ec6186b8fa30bc0017905590600f90620002006005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600c5461010090049091168152600f909252808220805484166001908117909155308352908220805484168217905561dead82527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f1080549093168117909255600890620002a36005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600c546101009004909116815260089092528082208054841660019081179091557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805485168217905530835291208054909216179055620003636200033f6005546001600160a01b031690565b6200034d6012600a6200089b565b6200035d906329209080620008b3565b6200052c565b620186a06200037160025490565b6200037e906003620008b3565b6200038a9190620008cd565b600d556103e86200039a60025490565b620003a7906014620008b3565b620003b39190620008cd565b6011556103e8620003c360025490565b620003d0906014620008b3565b620003dc9190620008cd565b6012555050600c805460ff19169055600e805461ff001916905562000906565b3390565b6001600160a01b038316620004685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004cb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200045f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620005845760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200045f565b8060026000828254620005989190620008f0565b90915550506001600160a01b03821660009081526020819052604081208054839290620005c7908490620008f0565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200064157607f821691505b6020821081036200066257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200061157600081815260208120601f850160051c81016020861015620006915750805b601f850160051c820191505b81811015620006b2578281556001016200069d565b505050505050565b81516001600160401b03811115620006d657620006d662000616565b620006ee81620006e784546200062c565b8462000668565b602080601f8311600181146200072657600084156200070d5750858301515b600019600386901b1c1916600185901b178555620006b2565b600085815260208120601f198616915b82811015620007575788860151825594840194600190910190840162000736565b5085821015620007765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007dd578160001904821115620007c157620007c162000786565b80851615620007cf57918102915b93841c9390800290620007a1565b509250929050565b600082620007f65750600162000895565b81620008055750600062000895565b81600181146200081e5760028114620008295762000849565b600191505062000895565b60ff8411156200083d576200083d62000786565b50506001821b62000895565b5060208310610133831016604e8410600b84101617156200086e575081810a62000895565b6200087a83836200079c565b806000190482111562000891576200089162000786565b0290505b92915050565b6000620008ac60ff841683620007e5565b9392505050565b808202811582820484141762000895576200089562000786565b600082620008eb57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000895576200089562000786565b61244280620009166000396000f3fe60806040526004361061021d5760003560e01c8063715018a611610123578063afa4f3b2116100ab578063dc4c7dbc1161006f578063dc4c7dbc14610612578063dd62ed3e14610628578063e2f456051461066e578063f2fde38b14610684578063f9d0831a146106a457600080fd5b8063afa4f3b214610578578063b6f7f68114610598578063bb85c6d1146105b8578063c0246668146105d8578063d4fb9a01146105f857600080fd5b806395d89b41116100f257806395d89b41146104de578063a2f57f62146104f3578063a457c2d714610513578063a5ece94114610533578063a9059cbb1461055857600080fd5b8063715018a6146104755780638124f7ac1461048a5780638da5cb5b146104a0578063943b4bfa146104be57600080fd5b8063313ce567116101a65780634fbee193116101755780634fbee193146103bb57806359136fa5146103f45780635fc2e5961461040a5780636ddd17131461042057806370a082311461043f57600080fd5b8063313ce5671461034a57806337dde95014610366578063395093511461037b57806349bd5a5e1461039b57600080fd5b806312378fb1116101ed57806312378fb1146102bb5780631694505e146102c357806318160ddd146102fb57806323b872dd1461031057806325e476e71461033057600080fd5b806299d386146102295780630105d0fd1461024057806306fdde0314610269578063095ea7b31461028b57600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061023e6106c4565b005b34801561024c57600080fd5b5061025660115481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b5061027e610768565b6040516102609190611e79565b34801561029757600080fd5b506102ab6102a6366004611edc565b6107fa565b6040519015158152602001610260565b61023e610811565b3480156102cf57600080fd5b506006546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610260565b34801561030757600080fd5b50600254610256565b34801561031c57600080fd5b506102ab61032b366004611f08565b610b66565b34801561033c57600080fd5b506010546102ab9060ff1681565b34801561035657600080fd5b5060405160128152602001610260565b34801561037257600080fd5b5061023e610c17565b34801561038757600080fd5b506102ab610396366004611edc565b610c81565b3480156103a757600080fd5b506007546102e3906001600160a01b031681565b3480156103c757600080fd5b506102ab6103d6366004611f49565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561040057600080fd5b5061025660125481565b34801561041657600080fd5b5061025660095481565b34801561042c57600080fd5b50600e546102ab90610100900460ff1681565b34801561044b57600080fd5b5061025661045a366004611f49565b6001600160a01b031660009081526020819052604090205490565b34801561048157600080fd5b5061023e610cbd565b34801561049657600080fd5b50610256600b5481565b3480156104ac57600080fd5b506005546001600160a01b03166102e3565b3480156104ca57600080fd5b5061023e6104d9366004611f6d565b610d31565b3480156104ea57600080fd5b5061027e610dbf565b3480156104ff57600080fd5b5061023e61050e366004611f6d565b610dce565b34801561051f57600080fd5b506102ab61052e366004611edc565b610e51565b34801561053f57600080fd5b50600c546102e39061010090046001600160a01b031681565b34801561056457600080fd5b506102ab610573366004611edc565b610eea565b34801561058457600080fd5b5061023e610593366004611f6d565b610ef7565b3480156105a457600080fd5b5061023e6105b3366004611f86565b610fe1565b3480156105c457600080fd5b5061023e6105d3366004611f49565b611150565b3480156105e457600080fd5b5061023e6105f3366004611fb6565b6112b1565b34801561060457600080fd5b50600c546102ab9060ff1681565b34801561061e57600080fd5b50610256600a5481565b34801561063457600080fd5b50610256610643366004611fef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561067a57600080fd5b50610256600d5481565b34801561069057600080fd5b5061023e61069f366004611f49565b6113bd565b3480156106b057600080fd5b5061023e6106bf366004611f49565b6114a8565b6005546001600160a01b031633146106f75760405162461bcd60e51b81526004016106ee9061201d565b60405180910390fd5b600c5460ff161561074a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016106ee565b600c805460ff19166001179055600e805461ff001916610100179055565b60606003805461077790612052565b80601f01602080910402602001604051908101604052809291908181526020018280546107a390612052565b80156107f05780601f106107c5576101008083540402835291602001916107f0565b820191906000526020600020905b8154815290600101906020018083116107d357829003601f168201915b5050505050905090565b60006108073384846115eb565b5060015b92915050565b6005546001600160a01b0316331461083b5760405162461bcd60e51b81526004016106ee9061201d565b600c5460ff161561088e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106ee565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610905919061208c565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061208c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc919061208c565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610a44816001600160a01b031660009081526020819052604090205490565b600080610a596005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ac1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae691906120a9565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6391906120d7565b50565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610c015782811015610bf45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ee565b610c0185338584036115eb565b610c0c85858561170f565b506001949350505050565b6005546001600160a01b03163314610c415760405162461bcd60e51b81526004016106ee9061201d565b6010805460ff19169055604051600081527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf9060200160405180910390a1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610807918590610cb890869061210a565b6115eb565b6005546001600160a01b03163314610ce75760405162461bcd60e51b81526004016106ee9061201d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b81526004016106ee9061201d565b60098190556005811115610d815760405162461bcd60e51b81526004016106ee9061211d565b7f2c18bb7f919d244fa8ee59517018a471ec455b76373719d2d6664fa3b1947da9600954604051610db491815260200190565b60405180910390a150565b60606004805461077790612052565b6005546001600160a01b03163314610df85760405162461bcd60e51b81526004016106ee9061201d565b600a8190556005811115610e1e5760405162461bcd60e51b81526004016106ee9061211d565b7fa54a45ff147b987a50c11919090466ad8b9df105c160d2e6bfb296df2b9abfb7600a54604051610db491815260200190565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ed35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ee565b610ee033858584036115eb565b5060019392505050565b600061080733848461170f565b6005546001600160a01b03163314610f215760405162461bcd60e51b81526004016106ee9061201d565b620f4240610f2e60025490565b610f389190612161565b8111610fac5760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016106ee565b600d8190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610db4565b6005546001600160a01b0316331461100b5760405162461bcd60e51b81526004016106ee9061201d565b6103e861101a6012600a612267565b6002546110279190612161565b6110319190612161565b821015801561106557506103e861104a6012600a612267565b6002546110579190612161565b6110619190612161565b8110155b6110d75760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c790060648201526084016106ee565b6110e36012600a612267565b6110ed9083612276565b6011556110fc6012600a612267565b6111069082612276565b60128190556011546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb13192611144928252602082015260400190565b60405180910390a15050565b6005546001600160a01b0316331461117a5760405162461bcd60e51b81526004016106ee9061201d565b600c546001600160a01b036101009091048116908216036111ee5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016106ee565b6001600160a01b0381166112585760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016106ee565b600c8054610100600160a81b0319166101006001600160a01b038481168202929092179283905560405192041681527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610db4565b6005546001600160a01b031633146112db5760405162461bcd60e51b81526004016106ee9061201d565b6001600160a01b03821660009081526008602052604090205481151560ff90911615150361135e5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016106ee565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113e75760405162461bcd60e51b81526004016106ee9061201d565b6001600160a01b03811661144c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ee565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b038216036115265760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016106ee565b600c5461010090046001600160a01b031633148061155357503360009081526008602052604090205460ff165b6115965760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f776e65722063616e20636c61696d60601b60448201526064016106ee565b6001600160a01b0381166115b2576115ae3347611aa6565b5050565b600d546001600160a01b03821660009081526020819052604081205483926115d99161228d565b90506115e6833083611b55565b505050565b6001600160a01b03831661164d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ee565b6001600160a01b0382166116ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ee565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117355760405162461bcd60e51b81526004016106ee906122a0565b6001600160a01b03821661175b5760405162461bcd60e51b81526004016106ee906122e5565b600c5460ff168061178457506001600160a01b03831660009081526008602052604090205460ff165b806117a757506001600160a01b03821660009081526008602052604090205460ff165b6117f35760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106ee565b80600003611807576115e683836000611b55565b60105460ff16156118e9576007546001600160a01b038481169116148061183b57506007546001600160a01b038381169116145b801561186057506001600160a01b0383166000908152600f602052604090205460ff16155b801561188557506001600160a01b0382166000908152600f602052604090205460ff16155b156118e9576007546001600160a01b03908116908416036118c7576011548111156118c25760405162461bcd60e51b81526004016106ee90612328565b6118e9565b6012548111156118e95760405162461bcd60e51b81526004016106ee90612328565b3060009081526020819052604081205490506000600d5482101580156119105750600d5483115b90508080156119225750600e5460ff16155b801561193b57506007546001600160a01b038581169116145b801561194e5750600e54610100900460ff165b801561197357506001600160a01b03851660009081526008602052604090205460ff16155b801561199857506001600160a01b03841660009081526008602052604090205460ff16155b156119be57600e805460ff191660011790556119b382611caa565b600e805460ff191690555b6001600160a01b03851660009081526008602052604081205460ff16806119fd57506001600160a01b03851660009081526008602052604090205460ff165b80611a0a5750600e5460ff165b15611a1757506000611a5a565b6007546001600160a01b0390811690871603611a365750600954611a5a565b6007546001600160a01b0390811690861603611a555750600a54611a5a565b50600b545b8015611a935760006064611a6e8387612276565b611a789190612161565b9050611a84818661228d565b9450611a91873083611b55565b505b611a9e868686611b55565b505050505050565b600081471015611af85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ee565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611b45576040519150601f19603f3d011682016040523d82523d6000602084013e611b4a565b606091505b509095945050505050565b6001600160a01b038316611b7b5760405162461bcd60e51b81526004016106ee906122a0565b6001600160a01b038216611ba15760405162461bcd60e51b81526004016106ee906122e5565b6001600160a01b03831660009081526020819052604090205481811015611c195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ee565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c5090849061210a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c9c91815260200190565b60405180910390a350505050565b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110611ce357611ce3612385565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d60919061208c565b81600181518110611d7357611d73612385565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611db990869060009086903090429060040161239b565b600060405180830381600087803b158015611dd357600080fd5b505af1158015611de7573d6000803e3d6000fd5b5050505060008247611df9919061228d565b600c5460405191925061010090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611e39573d6000803e3d6000fd5b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b600060208083528351808285015260005b81811015611ea657858101830151858201604001528201611e8a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6357600080fd5b60008060408385031215611eef57600080fd5b8235611efa81611ec7565b946020939093013593505050565b600080600060608486031215611f1d57600080fd5b8335611f2881611ec7565b92506020840135611f3881611ec7565b929592945050506040919091013590565b600060208284031215611f5b57600080fd5b8135611f6681611ec7565b9392505050565b600060208284031215611f7f57600080fd5b5035919050565b60008060408385031215611f9957600080fd5b50508035926020909101359150565b8015158114610b6357600080fd5b60008060408385031215611fc957600080fd5b8235611fd481611ec7565b91506020830135611fe481611fa8565b809150509250929050565b6000806040838503121561200257600080fd5b823561200d81611ec7565b91506020830135611fe481611ec7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061206657607f821691505b60208210810361208657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561209e57600080fd5b8151611f6681611ec7565b6000806000606084860312156120be57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156120e957600080fd5b8151611f6681611fa8565b634e487b7160e01b600052601160045260246000fd5b8082018082111561080b5761080b6120f4565b60208082526024908201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604082015263696d756d60e01b606082015260800190565b60008261217e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156121be5781600019048211156121a4576121a46120f4565b808516156121b157918102915b93841c9390800290612188565b509250929050565b6000826121d55750600161080b565b816121e25750600061080b565b81600181146121f857600281146122025761221e565b600191505061080b565b60ff841115612213576122136120f4565b50506001821b61080b565b5060208310610133831016604e8410600b8410161715612241575081810a61080b565b61224b8383612183565b806000190482111561225f5761225f6120f4565b029392505050565b6000611f6660ff8416836121c6565b808202811582820484141761080b5761080b6120f4565b8181038181111561080b5761080b6120f4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603b908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123eb5784516001600160a01b0316835293830193918301916001016123c6565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220767af88365f81221e20e9b5e2d40ec13813a81c66315d34f20b65f33a42d7c7764736f6c63430008130033
Deployed Bytecode
0x60806040526004361061021d5760003560e01c8063715018a611610123578063afa4f3b2116100ab578063dc4c7dbc1161006f578063dc4c7dbc14610612578063dd62ed3e14610628578063e2f456051461066e578063f2fde38b14610684578063f9d0831a146106a457600080fd5b8063afa4f3b214610578578063b6f7f68114610598578063bb85c6d1146105b8578063c0246668146105d8578063d4fb9a01146105f857600080fd5b806395d89b41116100f257806395d89b41146104de578063a2f57f62146104f3578063a457c2d714610513578063a5ece94114610533578063a9059cbb1461055857600080fd5b8063715018a6146104755780638124f7ac1461048a5780638da5cb5b146104a0578063943b4bfa146104be57600080fd5b8063313ce567116101a65780634fbee193116101755780634fbee193146103bb57806359136fa5146103f45780635fc2e5961461040a5780636ddd17131461042057806370a082311461043f57600080fd5b8063313ce5671461034a57806337dde95014610366578063395093511461037b57806349bd5a5e1461039b57600080fd5b806312378fb1116101ed57806312378fb1146102bb5780631694505e146102c357806318160ddd146102fb57806323b872dd1461031057806325e476e71461033057600080fd5b806299d386146102295780630105d0fd1461024057806306fdde0314610269578063095ea7b31461028b57600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061023e6106c4565b005b34801561024c57600080fd5b5061025660115481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b5061027e610768565b6040516102609190611e79565b34801561029757600080fd5b506102ab6102a6366004611edc565b6107fa565b6040519015158152602001610260565b61023e610811565b3480156102cf57600080fd5b506006546102e3906001600160a01b031681565b6040516001600160a01b039091168152602001610260565b34801561030757600080fd5b50600254610256565b34801561031c57600080fd5b506102ab61032b366004611f08565b610b66565b34801561033c57600080fd5b506010546102ab9060ff1681565b34801561035657600080fd5b5060405160128152602001610260565b34801561037257600080fd5b5061023e610c17565b34801561038757600080fd5b506102ab610396366004611edc565b610c81565b3480156103a757600080fd5b506007546102e3906001600160a01b031681565b3480156103c757600080fd5b506102ab6103d6366004611f49565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561040057600080fd5b5061025660125481565b34801561041657600080fd5b5061025660095481565b34801561042c57600080fd5b50600e546102ab90610100900460ff1681565b34801561044b57600080fd5b5061025661045a366004611f49565b6001600160a01b031660009081526020819052604090205490565b34801561048157600080fd5b5061023e610cbd565b34801561049657600080fd5b50610256600b5481565b3480156104ac57600080fd5b506005546001600160a01b03166102e3565b3480156104ca57600080fd5b5061023e6104d9366004611f6d565b610d31565b3480156104ea57600080fd5b5061027e610dbf565b3480156104ff57600080fd5b5061023e61050e366004611f6d565b610dce565b34801561051f57600080fd5b506102ab61052e366004611edc565b610e51565b34801561053f57600080fd5b50600c546102e39061010090046001600160a01b031681565b34801561056457600080fd5b506102ab610573366004611edc565b610eea565b34801561058457600080fd5b5061023e610593366004611f6d565b610ef7565b3480156105a457600080fd5b5061023e6105b3366004611f86565b610fe1565b3480156105c457600080fd5b5061023e6105d3366004611f49565b611150565b3480156105e457600080fd5b5061023e6105f3366004611fb6565b6112b1565b34801561060457600080fd5b50600c546102ab9060ff1681565b34801561061e57600080fd5b50610256600a5481565b34801561063457600080fd5b50610256610643366004611fef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561067a57600080fd5b50610256600d5481565b34801561069057600080fd5b5061023e61069f366004611f49565b6113bd565b3480156106b057600080fd5b5061023e6106bf366004611f49565b6114a8565b6005546001600160a01b031633146106f75760405162461bcd60e51b81526004016106ee9061201d565b60405180910390fd5b600c5460ff161561074a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016106ee565b600c805460ff19166001179055600e805461ff001916610100179055565b60606003805461077790612052565b80601f01602080910402602001604051908101604052809291908181526020018280546107a390612052565b80156107f05780601f106107c5576101008083540402835291602001916107f0565b820191906000526020600020905b8154815290600101906020018083116107d357829003601f168201915b5050505050905090565b60006108073384846115eb565b5060015b92915050565b6005546001600160a01b0316331461083b5760405162461bcd60e51b81526004016106ee9061201d565b600c5460ff161561088e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106ee565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610905919061208c565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061208c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fc919061208c565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610a44816001600160a01b031660009081526020819052604090205490565b600080610a596005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ac1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae691906120a9565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6391906120d7565b50565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610c015782811015610bf45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016106ee565b610c0185338584036115eb565b610c0c85858561170f565b506001949350505050565b6005546001600160a01b03163314610c415760405162461bcd60e51b81526004016106ee9061201d565b6010805460ff19169055604051600081527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf9060200160405180910390a1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610807918590610cb890869061210a565b6115eb565b6005546001600160a01b03163314610ce75760405162461bcd60e51b81526004016106ee9061201d565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b81526004016106ee9061201d565b60098190556005811115610d815760405162461bcd60e51b81526004016106ee9061211d565b7f2c18bb7f919d244fa8ee59517018a471ec455b76373719d2d6664fa3b1947da9600954604051610db491815260200190565b60405180910390a150565b60606004805461077790612052565b6005546001600160a01b03163314610df85760405162461bcd60e51b81526004016106ee9061201d565b600a8190556005811115610e1e5760405162461bcd60e51b81526004016106ee9061211d565b7fa54a45ff147b987a50c11919090466ad8b9df105c160d2e6bfb296df2b9abfb7600a54604051610db491815260200190565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ed35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106ee565b610ee033858584036115eb565b5060019392505050565b600061080733848461170f565b6005546001600160a01b03163314610f215760405162461bcd60e51b81526004016106ee9061201d565b620f4240610f2e60025490565b610f389190612161565b8111610fac5760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016106ee565b600d8190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610db4565b6005546001600160a01b0316331461100b5760405162461bcd60e51b81526004016106ee9061201d565b6103e861101a6012600a612267565b6002546110279190612161565b6110319190612161565b821015801561106557506103e861104a6012600a612267565b6002546110579190612161565b6110619190612161565b8110155b6110d75760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c790060648201526084016106ee565b6110e36012600a612267565b6110ed9083612276565b6011556110fc6012600a612267565b6111069082612276565b60128190556011546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb13192611144928252602082015260400190565b60405180910390a15050565b6005546001600160a01b0316331461117a5760405162461bcd60e51b81526004016106ee9061201d565b600c546001600160a01b036101009091048116908216036111ee5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016106ee565b6001600160a01b0381166112585760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016106ee565b600c8054610100600160a81b0319166101006001600160a01b038481168202929092179283905560405192041681527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610db4565b6005546001600160a01b031633146112db5760405162461bcd60e51b81526004016106ee9061201d565b6001600160a01b03821660009081526008602052604090205481151560ff90911615150361135e5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016106ee565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113e75760405162461bcd60e51b81526004016106ee9061201d565b6001600160a01b03811661144c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ee565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b038216036115265760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016106ee565b600c5461010090046001600160a01b031633148061155357503360009081526008602052604090205460ff165b6115965760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f776e65722063616e20636c61696d60601b60448201526064016106ee565b6001600160a01b0381166115b2576115ae3347611aa6565b5050565b600d546001600160a01b03821660009081526020819052604081205483926115d99161228d565b90506115e6833083611b55565b505050565b6001600160a01b03831661164d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106ee565b6001600160a01b0382166116ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106ee565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117355760405162461bcd60e51b81526004016106ee906122a0565b6001600160a01b03821661175b5760405162461bcd60e51b81526004016106ee906122e5565b600c5460ff168061178457506001600160a01b03831660009081526008602052604090205460ff165b806117a757506001600160a01b03821660009081526008602052604090205460ff165b6117f35760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016106ee565b80600003611807576115e683836000611b55565b60105460ff16156118e9576007546001600160a01b038481169116148061183b57506007546001600160a01b038381169116145b801561186057506001600160a01b0383166000908152600f602052604090205460ff16155b801561188557506001600160a01b0382166000908152600f602052604090205460ff16155b156118e9576007546001600160a01b03908116908416036118c7576011548111156118c25760405162461bcd60e51b81526004016106ee90612328565b6118e9565b6012548111156118e95760405162461bcd60e51b81526004016106ee90612328565b3060009081526020819052604081205490506000600d5482101580156119105750600d5483115b90508080156119225750600e5460ff16155b801561193b57506007546001600160a01b038581169116145b801561194e5750600e54610100900460ff165b801561197357506001600160a01b03851660009081526008602052604090205460ff16155b801561199857506001600160a01b03841660009081526008602052604090205460ff16155b156119be57600e805460ff191660011790556119b382611caa565b600e805460ff191690555b6001600160a01b03851660009081526008602052604081205460ff16806119fd57506001600160a01b03851660009081526008602052604090205460ff165b80611a0a5750600e5460ff165b15611a1757506000611a5a565b6007546001600160a01b0390811690871603611a365750600954611a5a565b6007546001600160a01b0390811690861603611a555750600a54611a5a565b50600b545b8015611a935760006064611a6e8387612276565b611a789190612161565b9050611a84818661228d565b9450611a91873083611b55565b505b611a9e868686611b55565b505050505050565b600081471015611af85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106ee565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611b45576040519150601f19603f3d011682016040523d82523d6000602084013e611b4a565b606091505b509095945050505050565b6001600160a01b038316611b7b5760405162461bcd60e51b81526004016106ee906122a0565b6001600160a01b038216611ba15760405162461bcd60e51b81526004016106ee906122e5565b6001600160a01b03831660009081526020819052604090205481811015611c195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106ee565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c5090849061210a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c9c91815260200190565b60405180910390a350505050565b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110611ce357611ce3612385565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d60919061208c565b81600181518110611d7357611d73612385565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611db990869060009086903090429060040161239b565b600060405180830381600087803b158015611dd357600080fd5b505af1158015611de7573d6000803e3d6000fd5b5050505060008247611df9919061228d565b600c5460405191925061010090046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611e39573d6000803e3d6000fd5b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b600060208083528351808285015260005b81811015611ea657858101830151858201604001528201611e8a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b6357600080fd5b60008060408385031215611eef57600080fd5b8235611efa81611ec7565b946020939093013593505050565b600080600060608486031215611f1d57600080fd5b8335611f2881611ec7565b92506020840135611f3881611ec7565b929592945050506040919091013590565b600060208284031215611f5b57600080fd5b8135611f6681611ec7565b9392505050565b600060208284031215611f7f57600080fd5b5035919050565b60008060408385031215611f9957600080fd5b50508035926020909101359150565b8015158114610b6357600080fd5b60008060408385031215611fc957600080fd5b8235611fd481611ec7565b91506020830135611fe481611fa8565b809150509250929050565b6000806040838503121561200257600080fd5b823561200d81611ec7565b91506020830135611fe481611ec7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061206657607f821691505b60208210810361208657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561209e57600080fd5b8151611f6681611ec7565b6000806000606084860312156120be57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156120e957600080fd5b8151611f6681611fa8565b634e487b7160e01b600052601160045260246000fd5b8082018082111561080b5761080b6120f4565b60208082526024908201527f546f74616c20466565732063616e6e6f742065786365656420746865206d6178604082015263696d756d60e01b606082015260800190565b60008261217e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156121be5781600019048211156121a4576121a46120f4565b808516156121b157918102915b93841c9390800290612188565b509250929050565b6000826121d55750600161080b565b816121e25750600061080b565b81600181146121f857600281146122025761221e565b600191505061080b565b60ff841115612213576122136120f4565b50506001821b61080b565b5060208310610133831016604e8410600b8410161715612241575081810a61080b565b61224b8383612183565b806000190482111561225f5761225f6120f4565b029392505050565b6000611f6660ff8416836121c6565b808202811582820484141761080b5761080b6120f4565b8181038181111561080b5761080b6120f4565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603b908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123eb5784516001600160a01b0316835293830193918301916001016123c6565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220767af88365f81221e20e9b5e2d40ec13813a81c66315d34f20b65f33a42d7c7764736f6c63430008130033
Deployed Bytecode Sourcemap
19772:9939:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25378:172;;;;;;;;;;;;;:::i;:::-;;20399:39;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;20399:39:0;;;;;;;;15057:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15971:169::-;;;;;;;;;;-1:-1:-1;15971:169:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;15971:169:0;1205:187:1;22965:461:0;;;:::i;19863:41::-;;;;;;;;;;-1:-1:-1;19863:41:0;;;;-1:-1:-1;;;;;19863:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;19863:41:0;1397:229:1;15378:108:0;;;;;;;;;;-1:-1:-1;15466:12:0;;15378:108;;16148:573;;;;;;;;;;-1:-1:-1;16148:573:0;;;;;:::i;:::-;;:::i;20359:33::-;;;;;;;;;;-1:-1:-1;20359:33:0;;;;;;;;15277:93;;;;;;;;;;-1:-1:-1;15277:93:0;;15360:2;2234:36:1;;2222:2;2207:18;15277:93:0;2092:184:1;27877:171:0;;;;;;;;;;;;;:::i;16729:215::-;;;;;;;;;;-1:-1:-1;16729:215:0;;;;;:::i;:::-;;:::i;19911:29::-;;;;;;;;;;-1:-1:-1;19911:29:0;;;;-1:-1:-1;;;;;19911:29:0;;;23824:120;;;;;;;;;;-1:-1:-1;23824:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;23913:23:0;23889:4;23913:23;;;:14;:23;;;;;;;;;23824:120;20445:40;;;;;;;;;;;;;;;;20004:33;;;;;;;;;;;;;;;;20264:26;;;;;;;;;;-1:-1:-1;20264:26:0;;;;;;;;;;;15494:127;;;;;;;;;;-1:-1:-1;15494:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15595:18:0;15568:7;15595:18;;;;;;;;;;;;15494:127;5350:148;;;;;;;;;;;;;:::i;20085:27::-;;;;;;;;;;;;;;;;5136:79;;;;;;;;;;-1:-1:-1;5201:6:0;;-1:-1:-1;;;;;5201:6:0;5136:79;;24829:261;;;;;;;;;;-1:-1:-1;24829:261:0;;;;;:::i;:::-;;:::i;15165:104::-;;;;;;;;;;;;;:::i;25102:268::-;;;;;;;;;;-1:-1:-1;25102:268:0;;;;;:::i;:::-;;:::i;16952:413::-;;;;;;;;;;-1:-1:-1;16952:413:0;;;;;:::i;:::-;;:::i;20151:32::-;;;;;;;;;;-1:-1:-1;20151:32:0;;;;;;;-1:-1:-1;;;;;20151:32:0;;;15629:175;;;;;;;;;;-1:-1:-1;15629:175:0;;;;;:::i;:::-;;:::i;28753:304::-;;;;;;;;;;-1:-1:-1;28753:304:0;;;;;:::i;:::-;;:::i;28056:689::-;;;;;;;;;;-1:-1:-1;28056:689:0;;;;;:::i;:::-;;:::i;23434:382::-;;;;;;;;;;-1:-1:-1;23434:382:0;;;;;:::i;:::-;;:::i;23952:280::-;;;;;;;;;;-1:-1:-1;23952:280:0;;;;;:::i;:::-;;:::i;20119:25::-;;;;;;;;;;-1:-1:-1;20119:25:0;;;;;;;;20044:34;;;;;;;;;;;;;;;;15812:151;;;;;;;;;;-1:-1:-1;15812:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;15928:18:0;;;15901:7;15928:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15812:151;20192:34;;;;;;;;;;;;;;;;5506:244;;;;;;;;;;-1:-1:-1;5506:244:0;;;;;:::i;:::-;;:::i;24240:581::-;;;;;;;;;;-1:-1:-1;24240:581:0;;;;;:::i;:::-;;:::i;25378:172::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;;;;;;;;;25440:13:::1;::::0;::::1;;25439:14;25431:51;;;::::0;-1:-1:-1;;;25431:51:0;;4645:2:1;25431:51:0::1;::::0;::::1;4627:21:1::0;4684:2;4664:18;;;4657:30;4723:26;4703:18;;;4696:54;4767:18;;25431:51:0::1;4443:348:1::0;25431:51:0::1;25493:13;:20:::0;;-1:-1:-1;;25493:20:0::1;25509:4;25493:20;::::0;;25524:11:::1;:18:::0;;-1:-1:-1;;25524:18:0::1;25493:20;25524:18;::::0;;25378:172::o;15057:100::-;15111:13;15144:5;15137:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15057:100;:::o;15971:169::-;16054:4;16071:39;4539:10;16094:7;16103:6;16071:8;:39::i;:::-;-1:-1:-1;16128:4:0;15971:169;;;;;:::o;22965:461::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;23047:13:::1;::::0;::::1;;23046:14;23038:49;;;::::0;-1:-1:-1;;;23038:49:0;;5383:2:1;23038:49:0::1;::::0;::::1;5365:21:1::0;5422:2;5402:18;;;5395:30;5461:25;5441:18;;;5434:53;5504:18;;23038:49:0::1;5181:347:1::0;23038:49:0::1;23132:15;;;;;;;;;-1:-1:-1::0;;;;;23132:15:0::1;-1:-1:-1::0;;;;;23132:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23114:55:0::1;;23178:4;23185:15;;;;;;;;;-1:-1:-1::0;;;;;23185:15:0::1;-1:-1:-1::0;;;;;23185:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23114:94;::::0;-1:-1:-1;;;;;;23114:94:0::1;::::0;;;;;;-1:-1:-1;;;;;6019:15:1;;;23114:94:0::1;::::0;::::1;6001:34:1::0;6071:15;;6051:18;;;6044:43;5936:18;;23114:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23098:13;:110:::0;;-1:-1:-1;;;;;23098:110:0;;::::1;-1:-1:-1::0;;;;;;23098:110:0;;::::1;;::::0;;23219:15:::1;::::0;::::1;:31;23258:9;23277:4;23283:24;23277:4:::0;-1:-1:-1;;;;;15595:18:0;15568:7;15595:18;;;;;;;;;;;;15494:127;23283:24:::1;23308:1;23310::::0;23312:7:::1;5201:6:::0;;-1:-1:-1;;;;;5201:6:0;;5136:79;23312:7:::1;23219:117;::::0;::::1;::::0;;;-1:-1:-1;;;;;;23219:117:0;;;-1:-1:-1;;;;;6457:15:1;;;23219:117:0::1;::::0;::::1;6439:34:1::0;6489:18;;;6482:34;;;;6532:18;;;6525:34;;;;6575:18;;;6568:34;6639:15;;;6618:19;;;6611:44;23320:15:0::1;6671:19:1::0;;;6664:35;6373:19;;23219:117:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23354:13:0::1;::::0;23385:15:::1;::::0;23347:71:::1;::::0;-1:-1:-1;;;23347:71:0;;-1:-1:-1;;;;;23385:15:0;;::::1;23347:71;::::0;::::1;7195:51:1::0;-1:-1:-1;;7262:18:1;;;7255:34;23354:13:0;::::1;::::0;-1:-1:-1;23347:29:0::1;::::0;7168:18:1;;23347:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22965:461::o:0;16148:573::-;-1:-1:-1;;;;;16332:19:0;;16288:4;16332:19;;;:11;:19;;;;;;;;4539:10;16332:33;;;;;;;;-1:-1:-1;;16380:37:0;;16376:265;;16462:6;16442:16;:26;;16434:79;;;;-1:-1:-1;;;16434:79:0;;7752:2:1;16434:79:0;;;7734:21:1;7791:2;7771:18;;;7764:30;7830:34;7810:18;;;7803:62;-1:-1:-1;;;7881:18:1;;;7874:38;7929:19;;16434:79:0;7550:404:1;16434:79:0;16557:57;16566:6;4539:10;16607:6;16588:16;:25;16557:8;:57::i;:::-;16653:36;16663:6;16671:9;16682:6;16653:9;:36::i;:::-;-1:-1:-1;16709:4:0;;16148:573;-1:-1:-1;;;;16148:573:0:o;27877:171::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;27947:17:::1;:25:::0;;-1:-1:-1;;27947:25:0::1;::::0;;27990:50:::1;::::0;-1:-1:-1;1345:41:1;;27990:50:0::1;::::0;1333:2:1;1318:18;27990:50:0::1;;;;;;;27877:171::o:0;16729:215::-;4539:10;16817:4;16866:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16866:34:0;;;;;;;;;;16817:4;;16834:80;;16857:7;;16866:47;;16903:10;;16866:47;:::i;:::-;16834:8;:80::i;5350:148::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;5441:6:::1;::::0;5420:40:::1;::::0;5457:1:::1;::::0;-1:-1:-1;;;;;5441:6:0::1;::::0;5420:40:::1;::::0;5457:1;;5420:40:::1;5471:6;:19:::0;;-1:-1:-1;;;;;;5471:19:0::1;::::0;;5350:148::o;24829:261::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;24910:17:::1;:38:::0;;;24990:1:::1;24969:22:::0;::::1;;24961:71;;;;-1:-1:-1::0;;;24961:71:0::1;;;;;;;:::i;:::-;25050:32;25064:17;;25050:32;;;;160:25:1::0;;148:2;133:18;;14:177;25050:32:0::1;;;;;;;;24829:261:::0;:::o;15165:104::-;15221:13;15254:7;15247:14;;;;;:::i;25102:268::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;25185:18:::1;:40:::0;;;25268:1:::1;25246:23:::0;::::1;;25238:72;;;;-1:-1:-1::0;;;25238:72:0::1;;;;;;;:::i;:::-;25328:34;25343:18;;25328:34;;;;160:25:1::0;;148:2;133:18;;14:177;16952:413:0;4539:10;17045:4;17089:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17089:34:0;;;;;;;;;;17142:35;;;;17134:85;;;;-1:-1:-1;;;17134:85:0;;8828:2:1;17134:85:0;;;8810:21:1;8867:2;8847:18;;;8840:30;8906:34;8886:18;;;8879:62;-1:-1:-1;;;8957:18:1;;;8950:35;9002:19;;17134:85:0;8626:401:1;17134:85:0;17255:67;4539:10;17278:7;17306:15;17287:16;:34;17255:8;:67::i;:::-;-1:-1:-1;17353:4:0;;16952:413;-1:-1:-1;;;16952:413:0:o;15629:175::-;15715:4;15732:42;4539:10;15756:9;15767:6;15732:9;:42::i;28753:304::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;28868:9:::1;28852:13;15466:12:::0;;;15378:108;28852:13:::1;:25;;;;:::i;:::-;28840:9;:37;28832:113;;;::::0;-1:-1:-1;;;28832:113:0;;9456:2:1;28832:113:0::1;::::0;::::1;9438:21:1::0;9495:2;9475:18;;;9468:30;9534:34;9514:18;;;9507:62;9605:33;9585:18;;;9578:61;9656:19;;28832:113:0::1;9254:427:1::0;28832:113:0::1;28956:18;:30:::0;;;29004:45:::1;::::0;160:25:1;;;29004:45:0::1;::::0;148:2:1;133:18;29004:45:0::1;14:177:1::0;28056:689:0;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;28279:5:::1;28258:16;15360:2:::0;28258::::1;:16;:::i;:::-;15466:12:::0;;28241:34:::1;;;;:::i;:::-;28240:44;;;;:::i;:::-;28211:24;:73;;:164;;;;-1:-1:-1::0;28370:5:0::1;28349:16;15360:2:::0;28349::::1;:16;:::i;:::-;15466:12:::0;;28332:34:::1;;;;:::i;:::-;28331:44;;;;:::i;:::-;28302:25;:73;;28211:164;28189:278;;;::::0;-1:-1:-1;;;28189:278:0;;11271:2:1;28189:278:0::1;::::0;::::1;11253:21:1::0;11310:2;11290:18;;;11283:30;11349:34;11329:18;;;11322:62;11420:33;11400:18;;;11393:61;11471:19;;28189:278:0::1;11069:427:1::0;28189:278:0::1;28535:16;15360:2:::0;28535::::1;:16;:::i;:::-;28506:46;::::0;:24;:46:::1;:::i;:::-;28479:23;:73:::0;28619:16:::1;15360:2:::0;28619::::1;:16;:::i;:::-;28590:46;::::0;:25;:46:::1;:::i;:::-;28563:24;:73:::0;;;28687:23:::1;::::0;28654:83:::1;::::0;::::1;::::0;::::1;::::0;11848:25:1;;11904:2;11889:18;;11882:34;11836:2;11821:18;;11674:248;28654:83:0::1;;;;;;;;28056:689:::0;;:::o;23434:382::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;23548:16:::1;::::0;-1:-1:-1;;;;;23548:16:0::1;::::0;;::::1;::::0;::::1;23528:36:::0;;::::1;::::0;23520:88:::1;;;::::0;-1:-1:-1;;;23520:88:0;;12129:2:1;23520:88:0::1;::::0;::::1;12111:21:1::0;12168:2;12148:18;;;12141:30;12207:34;12187:18;;;12180:62;-1:-1:-1;;;12258:18:1;;;12251:38;12306:19;;23520:88:0::1;11927:404:1::0;23520:88:0::1;-1:-1:-1::0;;;;;23627:30:0;::::1;23619:85;;;::::0;-1:-1:-1;;;23619:85:0;;12538:2:1;23619:85:0::1;::::0;::::1;12520:21:1::0;12577:2;12557:18;;;12550:30;12616:34;12596:18;;;12589:62;-1:-1:-1;;;12667:18:1;;;12660:41;12718:19;;23619:85:0::1;12336:407:1::0;23619:85:0::1;23715:16;:35:::0;;-1:-1:-1;;;;;;23715:35:0::1;;-1:-1:-1::0;;;;;23715:35:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;23768:40:::1;::::0;23791:16;::::1;;1569:51:1::0;;23768:40:0::1;::::0;1557:2:1;1542:18;23768:40:0::1;1397:229:1::0;23952:280:0;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24046:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;:35;::::1;;:23;::::0;;::::1;:35;;::::0;24038:89:::1;;;::::0;-1:-1:-1;;;24038:89:0;;12950:2:1;24038:89:0::1;::::0;::::1;12932:21:1::0;12989:2;12969:18;;;12962:30;13028:34;13008:18;;;13001:62;-1:-1:-1;;;13079:18:1;;;13072:40;13129:19;;24038:89:0::1;12748:406:1::0;24038:89:0::1;-1:-1:-1::0;;;;;24138:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;;:34;;-1:-1:-1;;24138:34:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24190;;1345:41:1;;;24190:34:0::1;::::0;1318:18:1;24190:34:0::1;;;;;;;23952:280:::0;;:::o;5506:244::-;5263:6;;-1:-1:-1;;;;;5263:6:0;4539:10;5263:22;5255:67;;;;-1:-1:-1;;;5255:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5595:22:0;::::1;5587:73;;;::::0;-1:-1:-1;;;5587:73:0;;13361:2:1;5587:73:0::1;::::0;::::1;13343:21:1::0;13400:2;13380:18;;;13373:30;13439:34;13419:18;;;13412:62;-1:-1:-1;;;13490:18:1;;;13483:36;13536:19;;5587:73:0::1;13159:402:1::0;5587:73:0::1;5697:6;::::0;5676:38:::1;::::0;-1:-1:-1;;;;;5676:38:0;;::::1;::::0;5697:6:::1;::::0;5676:38:::1;::::0;5697:6:::1;::::0;5676:38:::1;5725:6;:17:::0;;-1:-1:-1;;;;;;5725:17:0::1;-1:-1:-1::0;;;;;5725:17:0;;;::::1;::::0;;;::::1;::::0;;5506:244::o;24240:581::-;24326:4;-1:-1:-1;;;;;24309:22:0;;;24301:90;;;;-1:-1:-1;;;24301:90:0;;13768:2:1;24301:90:0;;;13750:21:1;13807:2;13787:18;;;13780:30;13846:34;13826:18;;;13819:62;13917:25;13897:18;;;13890:53;13960:19;;24301:90:0;13566:419:1;24301:90:0;24424:16;;;;;-1:-1:-1;;;;;24424:16:0;24410:10;:30;;:60;;-1:-1:-1;24459:10:0;24444:26;;;;:14;:26;;;;;;;;24410:60;24402:93;;;;-1:-1:-1;;;24402:93:0;;14192:2:1;24402:93:0;;;14174:21:1;14231:2;14211:18;;;14204:30;-1:-1:-1;;;14250:18:1;;;14243:50;14310:18;;24402:93:0;13990:344:1;24402:93:0;-1:-1:-1;;;;;24510:21:0;;24506:127;;24548:52;24556:10;24578:21;24548:29;:52::i;:::-;;24240:581;:::o;24506:127::-;24738:18;;-1:-1:-1;;;;;15595:18:0;;24643:17;15595:18;;;;;;;;;;;;;24705:51;;;:::i;:::-;24687:69;;24767:46;24783:5;24798:4;24805:7;24767:15;:46::i;:::-;24290:531;;24240:581;:::o;19120:380::-;-1:-1:-1;;;;;19256:19:0;;19248:68;;;;-1:-1:-1;;;19248:68:0;;14674:2:1;19248:68:0;;;14656:21:1;14713:2;14693:18;;;14686:30;14752:34;14732:18;;;14725:62;-1:-1:-1;;;14803:18:1;;;14796:34;14847:19;;19248:68:0;14472:400:1;19248:68:0;-1:-1:-1;;;;;19335:21:0;;19327:68;;;;-1:-1:-1;;;19327:68:0;;15079:2:1;19327:68:0;;;15061:21:1;15118:2;15098:18;;;15091:30;15157:34;15137:18;;;15130:62;-1:-1:-1;;;15208:18:1;;;15201:32;15250:19;;19327:68:0;14877:398:1;19327:68:0;-1:-1:-1;;;;;19408:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19460:32;;160:25:1;;;19460:32:0;;133:18:1;19460:32:0;;;;;;;19120:380;;;:::o;25558:2311::-;-1:-1:-1;;;;;25655:18:0;;25647:68;;;;-1:-1:-1;;;25647:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25734:16:0;;25726:64;;;;-1:-1:-1;;;25726:64:0;;;;;;;:::i;:::-;25809:13;;;;;:37;;-1:-1:-1;;;;;;25826:20:0;;;;;;:14;:20;;;;;;;;25809:37;:59;;;-1:-1:-1;;;;;;25850:18:0;;;;;;:14;:18;;;;;;;;25809:59;25801:96;;;;-1:-1:-1;;;25801:96:0;;16292:2:1;25801:96:0;;;16274:21:1;16331:2;16311:18;;;16304:30;16370:26;16350:18;;;16343:54;16414:18;;25801:96:0;16090:348:1;25801:96:0;25921:6;25931:1;25921:11;25917:93;;25949:28;25965:4;25971:2;25975:1;25949:15;:28::i;25917:93::-;26026:17;;;;26022:725;;;26083:13;;-1:-1:-1;;;;;26075:21:0;;;26083:13;;26075:21;;:44;;-1:-1:-1;26106:13:0;;-1:-1:-1;;;;;26100:19:0;;;26106:13;;26100:19;26075:44;26074:90;;;;-1:-1:-1;;;;;;26142:22:0;;;;;;:16;:22;;;;;;;;26141:23;26074:90;:133;;;;-1:-1:-1;;;;;;26187:20:0;;;;;;:16;:20;;;;;;;;26186:21;26074:133;26070:666;;;26254:13;;-1:-1:-1;;;;;26254:13:0;;;26246:21;;;;26242:479;;26336:23;;26326:6;:33;;26292:180;;;;-1:-1:-1;;;26292:180:0;;;;;;;:::i;:::-;26242:479;;;26565:24;;26555:6;:34;;26521:180;;;;-1:-1:-1;;;26521:180:0;;;;;;;:::i;:::-;26802:4;26753:28;15595:18;;;;;;;;;;;26753:55;;26821:12;26860:18;;26836:20;:42;;:73;;;;;26891:18;;26882:6;:27;26836:73;26821:88;;26926:7;:33;;;;-1:-1:-1;26951:8:0;;;;26950:9;26926:33;:69;;;;-1:-1:-1;26982:13:0;;-1:-1:-1;;;;;26976:19:0;;;26982:13;;26976:19;26926:69;:97;;;;-1:-1:-1;27012:11:0;;;;;;;26926:97;:135;;;;-1:-1:-1;;;;;;27041:20:0;;;;;;:14;:20;;;;;;;;27040:21;26926:135;:171;;;;-1:-1:-1;;;;;;27079:18:0;;;;;;:14;:18;;;;;;;;27078:19;26926:171;26922:321;;;27124:8;:15;;-1:-1:-1;;27124:15:0;27135:4;27124:15;;;27156:42;27177:20;27156;:42::i;:::-;27215:8;:16;;-1:-1:-1;;27215:16:0;;;26922:321;-1:-1:-1;;;;;27288:20:0;;27255:18;27288:20;;;:14;:20;;;;;;;;;:42;;-1:-1:-1;;;;;;27312:18:0;;;;;;:14;:18;;;;;;;;27288:42;:54;;;-1:-1:-1;27334:8:0;;;;27288:54;27284:337;;;-1:-1:-1;27372:1:0;27284:337;;;27403:13;;-1:-1:-1;;;;;27403:13:0;;;27395:21;;;;27391:230;;-1:-1:-1;27446:17:0;;27391:230;;;27491:13;;-1:-1:-1;;;;;27491:13:0;;;27485:19;;;;27481:140;;-1:-1:-1;27534:18:0;;27481:140;;;-1:-1:-1;27598:11:0;;27481:140;27637:14;;27633:183;;27668:12;27707:3;27684:19;27693:10;27684:6;:19;:::i;:::-;27683:27;;;;:::i;:::-;27668:42;-1:-1:-1;27734:13:0;27668:42;27734:6;:13;:::i;:::-;27725:22;;27762:42;27778:4;27792;27799;27762:15;:42::i;:::-;27653:163;27633:183;27828:33;27844:4;27850:2;27854:6;27828:15;:33::i;:::-;25636:2233;;;25558:2311;;;:::o;369:266::-;448:4;497:6;472:21;:31;;464:73;;;;-1:-1:-1;;;464:73:0;;17073:2:1;464:73:0;;;17055:21:1;17112:2;17092:18;;;17085:30;17151:31;17131:18;;;17124:59;17200:18;;464:73:0;16871:353:1;464:73:0;551:12;569:9;-1:-1:-1;;;;;569:14:0;591:6;569:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;550:52:0;;369:266;-1:-1:-1;;;;;369:266:0:o;17373:733::-;-1:-1:-1;;;;;17513:20:0;;17505:70;;;;-1:-1:-1;;;17505:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17594:23:0;;17586:71;;;;-1:-1:-1;;;17586:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17754:17:0;;17730:21;17754:17;;;;;;;;;;;17790:23;;;;17782:74;;;;-1:-1:-1;;;17782:74:0;;17641:2:1;17782:74:0;;;17623:21:1;17680:2;17660:18;;;17653:30;17719:34;17699:18;;;17692:62;-1:-1:-1;;;17770:18:1;;;17763:36;17816:19;;17782:74:0;17439:402:1;17782:74:0;-1:-1:-1;;;;;17892:17:0;;;:9;:17;;;;;;;;;;;17912:22;;;17892:42;;17956:20;;;;;;;;:30;;17928:6;;17892:9;17956:30;;17928:6;;17956:30;:::i;:::-;;;;;;;;18021:9;-1:-1:-1;;;;;18004:35:0;18013:6;-1:-1:-1;;;;;18004:35:0;;18032:6;18004:35;;;;160:25:1;;148:2;133:18;;14:177;18004:35:0;;;;;;;;17494:612;17373:733;;;:::o;29065:643::-;29218:16;;;29232:1;29218:16;;;;;;;;29160:21;;29135:22;;29218:16;29232:1;29218:16;;;;;;;;;;-1:-1:-1;29218:16:0;29194:40;;29263:4;29245;29250:1;29245:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29245:23:0;;;:7;;;;;;;;;;:23;;;;29289:15;;:22;;;-1:-1:-1;;;29289:22:0;;;;:15;;;;;:20;;:22;;;;;29245:7;;29289:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29279:4;29284:1;29279:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29279:32:0;;;:7;;;;;;;;;:32;29324:15;;:186;;-1:-1:-1;;;29324:186:0;;:15;;;:66;;:186;;29405:11;;29324:15;;29447:4;;29474;;29494:15;;29324:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29523:18;29568:14;29544:21;:38;;;;:::i;:::-;29601:16;;29593:46;;29523:59;;-1:-1:-1;29601:16:0;;;-1:-1:-1;;;;;29601:16:0;;29593:46;;;;;29523:59;;29593:46;;;;29523:59;29601:16;29593:46;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29655:45:0;;;11848:25:1;;;11904:2;11889:18;;11882:34;;;29655:45:0;;11821:18:1;29655:45:0;;;;;;;29124:584;;;29065:643;:::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:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;:::-;2725:5;2489:247;-1:-1:-1;;;2489:247:1:o;2741:180::-;2800:6;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;-1:-1:-1;2892:23:1;;2741:180;-1:-1:-1;2741:180:1:o;2926:248::-;2994:6;3002;3055:2;3043:9;3034:7;3030:23;3026:32;3023:52;;;3071:1;3068;3061:12;3023:52;-1:-1:-1;;3094:23:1;;;3164:2;3149:18;;;3136:32;;-1:-1:-1;2926:248:1:o;3179:118::-;3265:5;3258:13;3251:21;3244:5;3241:32;3231:60;;3287:1;3284;3277:12;3302:382;3367:6;3375;3428:2;3416:9;3407:7;3403:23;3399:32;3396:52;;;3444:1;3441;3434:12;3396:52;3483:9;3470:23;3502:31;3527:5;3502:31;:::i;:::-;3552:5;-1:-1:-1;3609:2:1;3594:18;;3581:32;3622:30;3581:32;3622:30;:::i;:::-;3671:7;3661:17;;;3302:382;;;;;:::o;3689:388::-;3757:6;3765;3818:2;3806:9;3797:7;3793:23;3789:32;3786:52;;;3834:1;3831;3824:12;3786:52;3873:9;3860:23;3892:31;3917:5;3892:31;:::i;:::-;3942:5;-1:-1:-1;3999:2:1;3984:18;;3971:32;4012:33;3971:32;4012:33;:::i;4082:356::-;4284:2;4266:21;;;4303:18;;;4296:30;4362:34;4357:2;4342:18;;4335:62;4429:2;4414:18;;4082:356::o;4796:380::-;4875:1;4871:12;;;;4918;;;4939:61;;4993:4;4985:6;4981:17;4971:27;;4939:61;5046:2;5038:6;5035:14;5015:18;5012:38;5009:161;;5092:10;5087:3;5083:20;5080:1;5073:31;5127:4;5124:1;5117:15;5155:4;5152:1;5145:15;5009:161;;4796:380;;;:::o;5533:251::-;5603:6;5656:2;5644:9;5635:7;5631:23;5627:32;5624:52;;;5672:1;5669;5662:12;5624:52;5704:9;5698:16;5723:31;5748:5;5723:31;:::i;6710:306::-;6798:6;6806;6814;6867:2;6855:9;6846:7;6842:23;6838:32;6835:52;;;6883:1;6880;6873:12;6835:52;6912:9;6906:16;6896:26;;6962:2;6951:9;6947:18;6941:25;6931:35;;7006:2;6995:9;6991:18;6985:25;6975:35;;6710:306;;;;;:::o;7300:245::-;7367:6;7420:2;7408:9;7399:7;7395:23;7391:32;7388:52;;;7436:1;7433;7426:12;7388:52;7468:9;7462:16;7487:28;7509:5;7487:28;:::i;7959:127::-;8020:10;8015:3;8011:20;8008:1;8001:31;8051:4;8048:1;8041:15;8075:4;8072:1;8065:15;8091:125;8156:9;;;8177:10;;;8174:36;;;8190:18;;:::i;8221:400::-;8423:2;8405:21;;;8462:2;8442:18;;;8435:30;8501:34;8496:2;8481:18;;8474:62;-1:-1:-1;;;8567:2:1;8552:18;;8545:34;8611:3;8596:19;;8221:400::o;9032:217::-;9072:1;9098;9088:132;;9142:10;9137:3;9133:20;9130:1;9123:31;9177:4;9174:1;9167:15;9205:4;9202:1;9195:15;9088:132;-1:-1:-1;9234:9:1;;9032:217::o;9686:422::-;9775:1;9818:5;9775:1;9832:270;9853:7;9843:8;9840:21;9832:270;;;9912:4;9908:1;9904:6;9900:17;9894:4;9891:27;9888:53;;;9921:18;;:::i;:::-;9971:7;9961:8;9957:22;9954:55;;;9991:16;;;;9954:55;10070:22;;;;10030:15;;;;9832:270;;;9836:3;9686:422;;;;;:::o;10113:806::-;10162:5;10192:8;10182:80;;-1:-1:-1;10233:1:1;10247:5;;10182:80;10281:4;10271:76;;-1:-1:-1;10318:1:1;10332:5;;10271:76;10363:4;10381:1;10376:59;;;;10449:1;10444:130;;;;10356:218;;10376:59;10406:1;10397:10;;10420:5;;;10444:130;10481:3;10471:8;10468:17;10465:43;;;10488:18;;:::i;:::-;-1:-1:-1;;10544:1:1;10530:16;;10559:5;;10356:218;;10658:2;10648:8;10645:16;10639:3;10633:4;10630:13;10626:36;10620:2;10610:8;10607:16;10602:2;10596:4;10593:12;10589:35;10586:77;10583:159;;;-1:-1:-1;10695:19:1;;;10727:5;;10583:159;10774:34;10799:8;10793:4;10774:34;:::i;:::-;10844:6;10840:1;10836:6;10832:19;10823:7;10820:32;10817:58;;;10855:18;;:::i;:::-;10893:20;;10113:806;-1:-1:-1;;;10113:806:1:o;10924:140::-;10982:5;11011:47;11052:4;11042:8;11038:19;11032:4;11011:47;:::i;11501:168::-;11574:9;;;11605;;11622:15;;;11616:22;;11602:37;11592:71;;11643:18;;:::i;14339:128::-;14406:9;;;14427:11;;;14424:37;;;14441:18;;:::i;15280:401::-;15482:2;15464:21;;;15521:2;15501:18;;;15494:30;15560:34;15555:2;15540:18;;15533:62;-1:-1:-1;;;15626:2:1;15611:18;;15604:35;15671:3;15656:19;;15280:401::o;15686:399::-;15888:2;15870:21;;;15927:2;15907:18;;;15900:30;15966:34;15961:2;15946:18;;15939:62;-1:-1:-1;;;16032:2:1;16017:18;;16010:33;16075:3;16060:19;;15686:399::o;16443:423::-;16645:2;16627:21;;;16684:2;16664:18;;;16657:30;16723:34;16718:2;16703:18;;16696:62;16794:29;16789:2;16774:18;;16767:57;16856:3;16841:19;;16443:423::o;17978:127::-;18039:10;18034:3;18030:20;18027:1;18020:31;18070:4;18067:1;18060:15;18094:4;18091:1;18084:15;18110:980;18372:4;18420:3;18409:9;18405:19;18451:6;18440:9;18433:25;18477:2;18515:6;18510:2;18499:9;18495:18;18488:34;18558:3;18553:2;18542:9;18538:18;18531:31;18582:6;18617;18611:13;18648:6;18640;18633:22;18686:3;18675:9;18671:19;18664:26;;18725:2;18717:6;18713:15;18699:29;;18746:1;18756:195;18770:6;18767:1;18764:13;18756:195;;;18835:13;;-1:-1:-1;;;;;18831:39:1;18819:52;;18926:15;;;;18891:12;;;;18867:1;18785:9;18756:195;;;-1:-1:-1;;;;;;;19007:32:1;;;;19002:2;18987:18;;18980:60;-1:-1:-1;;;19071:3:1;19056:19;19049:35;18968:3;18110:980;-1:-1:-1;;;18110:980:1:o
Swarm Source
ipfs://767af88365f81221e20e9b5e2d40ec13813a81c66315d34f20b65f33a42d7c77
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.