ERC-20
Overview
Max Total Supply
77,777,777 KEK
Holders
360
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KEK
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-20 */ // SPDX-License-Identifier: MIT // Website: https://www.lordkek.vip // Telegram: https://t.me/realkekcoin // Twitter: https://twitter.com/LordKeKCoin pragma solidity ^0.8.6; pragma experimental ABIEncoderV2; 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); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(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) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(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) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Pair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); 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 swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline )external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); } contract KEK is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public _isExcludedFromFee; mapping(address => bool) public ammPairs; uint8 private _decimals = 18; uint256 private _tTotal; uint256 public supply = 77777777 * (10 ** 18); string private _name = "Lord Kek"; string private _symbol = "KEK"; uint256 public _marketFee = 1; IUniswapV2Router02 public uniswapV2Router; IERC20 public uniswapV2Pair; address public weth; address constant rootAddress = address(0x000000000000000000000000000000000000dEaD); address ethPair; address router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public marketAddress = 0xf109fCA700Af1Fe1569930f319d3e46bFFb22275; uint256 launchedBlock; bool public swapEnabled = true; uint256 public swapThreshold = supply / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { address _owner = owner(); _tOwned[_owner] = supply; _tTotal = supply; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[address(msg.sender)] = true; _isExcludedFromFee[rootAddress] = true; _isExcludedFromFee[_owner] = true; _isExcludedFromFee[marketAddress] = true; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); uniswapV2Router = _uniswapV2Router; ethPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); weth = _uniswapV2Router.WETH(); uniswapV2Pair = IERC20(ethPair); ammPairs[ethPair] = true; emit Transfer(address(0), _owner, _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _approve(address owner, address spender, uint256 amount) private { 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 _take(uint256 tValue,address from,address to) private { _tOwned[to] = _tOwned[to].add(tValue); emit Transfer(from, to, tValue); } receive() external payable {} struct Param{ bool takeFee; uint tTransferAmount; uint tContract; } function _initParam(uint256 tAmount,Param memory param) private view { uint tFee; if (block.number - launchedBlock > 25) { tFee = tAmount * _marketFee / 100; } else { tFee = tAmount * 20 / 100; } param.tContract = tFee; param.tTransferAmount = tAmount.sub(tFee); } function _takeFee(Param memory param,address from)private { if( param.tContract > 0 ){ _take(param.tContract, from, address(this)); } } function shouldSwapBack(address to) internal view returns (bool) { return (ammPairs[to]) && !inSwap && swapEnabled && balanceOf(address(this)) >= swapThreshold; } function swapBack() internal swapping { _allowances[address(this)][address(uniswapV2Router)] = swapThreshold; address[] memory path = new address[](2); path[0] = address(this); path[1] = weth; uint256 balanceBefore = address(this).balance; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( swapThreshold, 0, path, address(this), block.timestamp ); uint256 amountEth = address(this).balance.sub(balanceBefore); payable(marketAddress).transfer(amountEth); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(amount > 0, "ERC20: transfer amount must be greater than zero"); bool takeFee; Param memory param; param.tTransferAmount = amount; if(ammPairs[to] && IERC20(to).totalSupply() == 0 && launchedBlock == 0){ launchedBlock = block.number; } if(inSwap || _isExcludedFromFee[from] || _isExcludedFromFee[to]){ return _tokenTransfer(from,to,amount,param); } if(ammPairs[to] || ammPairs[from]){ takeFee = true; } if(shouldSwapBack(to)){ swapBack(); } param.takeFee = takeFee; if( takeFee ){ _initParam(amount,param); } _tokenTransfer(from,to,amount,param); } function _tokenTransfer(address sender, address recipient, uint256 tAmount,Param memory param) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _tOwned[recipient] = _tOwned[recipient].add(param.tTransferAmount); emit Transfer(sender, recipient, param.tTransferAmount); if(param.takeFee == true){ _takeFee(param,sender); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6005805460ff191660121790556a405615bd5e98512f24000060075560c060405260086080819052674c6f7264204b656b60c01b60a090815262000045919081620004a3565b50604080518082019091526003808252624b454b60e81b60209092019182526200007291600991620004a3565b506001600a819055600f80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556010805490911673f109fca700af1fe1569930f319d3e46bffb222751790556012805460ff19169091179055600754620000e190612710906200057b565b601355348015620000f157600080fd5b50620000fd3362000453565b600080546007546001600160a01b0391821680845260016020818152604080872085905560069490945530865260038152838620805460ff19908116841790915533875284872080548216841790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054821684179055838752848720805482168417905560105486168752958490208054909616909117909455600f54600b80546001600160a01b03191691909416908117909355815163c45a015560e01b815291519093839263c45a01559260048281019392829003018186803b158015620001e857600080fd5b505afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000223919062000549565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026c57600080fd5b505afa15801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a7919062000549565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b919062000549565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038b57600080fd5b505afa158015620003a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c6919062000549565b600d80546001600160a01b03199081166001600160a01b0393841617909155600e54600c80549184169190921681179091556000908152600460209081526040808320805460ff191660011790556006549051908152928516927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005db565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620004b1906200059e565b90600052602060002090601f016020900481019282620004d5576000855562000520565b82601f10620004f057805160ff191683800117855562000520565b8280016001018555821562000520579182015b828111156200052057825182559160200191906001019062000503565b506200052e92915062000532565b5090565b5b808211156200052e576000815560010162000533565b6000602082840312156200055c57600080fd5b81516001600160a01b03811681146200057457600080fd5b9392505050565b6000826200059957634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680620005b357607f821691505b60208210811415620005d557634e487b7160e01b600052602260045260246000fd5b50919050565b61127d80620005eb6000396000f3fe60806040526004361061014f5760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b41146103c6578063a457c2d7146103db578063a72905a2146103fb578063a9059cbb1461042b578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b806370a08231146102f5578063715018a61461032b578063768dc7101461034257806384d6ff2f146103725780638da5cb5b1461038857806395623641146103a657600080fd5b806323b872dd1161010857806323b872dd14610239578063313ce56714610259578063395093511461027b5780633fc8cef31461029b57806349bd5a5e146102bb5780636ddd1713146102db57600080fd5b80630445b6671461015b578063047fc9aa1461018457806306fdde031461019a578063095ea7b3146101bc5780631694505e146101ec57806318160ddd1461022457600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017160135481565b6040519081526020015b60405180910390f35b34801561019057600080fd5b5061017160075481565b3480156101a657600080fd5b506101af6104b1565b60405161017b919061105d565b3480156101c857600080fd5b506101dc6101d736600461101a565b610543565b604051901515815260200161017b565b3480156101f857600080fd5b50600b5461020c906001600160a01b031681565b6040516001600160a01b03909116815260200161017b565b34801561023057600080fd5b50600654610171565b34801561024557600080fd5b506101dc610254366004610fde565b610559565b34801561026557600080fd5b5060055460405160ff909116815260200161017b565b34801561028757600080fd5b506101dc61029636600461101a565b6105c2565b3480156102a757600080fd5b50600d5461020c906001600160a01b031681565b3480156102c757600080fd5b50600c5461020c906001600160a01b031681565b3480156102e757600080fd5b506012546101dc9060ff1681565b34801561030157600080fd5b50610171610310366004610f90565b6001600160a01b031660009081526001602052604090205490565b34801561033757600080fd5b506103406105f8565b005b34801561034e57600080fd5b506101dc61035d366004610f90565b60036020526000908152604090205460ff1681565b34801561037e57600080fd5b50610171600a5481565b34801561039457600080fd5b506000546001600160a01b031661020c565b3480156103b257600080fd5b5060105461020c906001600160a01b031681565b3480156103d257600080fd5b506101af610663565b3480156103e757600080fd5b506101dc6103f636600461101a565b610672565b34801561040757600080fd5b506101dc610416366004610f90565b60046020526000908152604090205460ff1681565b34801561043757600080fd5b506101dc61044636600461101a565b6106c1565b34801561045757600080fd5b50610171610466366004610fab565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561049d57600080fd5b506103406104ac366004610f90565b6106ce565b6060600880546104c090611193565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90611193565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050905090565b6000610550338484610799565b50600192915050565b60006105668484846108be565b6105b884336105b3856040518060600160405280602881526020016111fb602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610b32565b610799565b5060019392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105509185906105b39086610b5e565b6000546001600160a01b031633146106575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106616000610b71565b565b6060600980546104c090611193565b600061055033846105b385604051806060016040528060258152602001611223602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610b32565b60006105503384846108be565b6000546001600160a01b031633146107285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064e565b6001600160a01b03811661078d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064e565b61079681610b71565b50565b6001600160a01b0383166107fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064e565b6001600160a01b03821661085c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064e565b6000811161098b5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161064e565b60408051606081018252600080825281830181905260208083018590526001600160a01b0386168252600490529182205460ff168015610a395750836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ff57600080fd5b505afa158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a379190611044565b155b8015610a455750601154155b15610a4f57436011555b60145460ff1680610a7857506001600160a01b03851660009081526003602052604090205460ff165b80610a9b57506001600160a01b03841660009081526003602052604090205460ff165b15610ab357610aac85858584610bc1565b5050505050565b6001600160a01b03841660009081526004602052604090205460ff1680610af257506001600160a01b03851660009081526004602052604090205460ff165b15610afc57600191505b610b0584610c91565b15610b1257610b12610ced565b811580158252610b2657610b268382610e63565b610aac85858584610bc1565b60008184841115610b565760405162461bcd60e51b815260040161064e919061105d565b505050900390565b6000610b6a8284611123565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038416600090815260016020526040902054610be49083610ed4565b6001600160a01b0380861660009081526001602090815260408083209490945584015191861681529190912054610c1a91610b5e565b6001600160a01b03808516600081815260016020908152604091829020949094558484015190519081529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38051151560011415610c8b57610c8b8185610ee0565b50505050565b6001600160a01b03811660009081526004602052604081205460ff168015610cbc575060145460ff16155b8015610cca575060125460ff165b8015610ce757506013543060009081526001602052604090205410155b92915050565b6014805460ff19166001179055601354306000908152600260208181526040808420600b546001600160a01b031685528252808420949094558351828152606081018552929390830190803683370190505090503081600081518110610d5557610d556111e4565b6001600160a01b039283166020918202929092010152600d54825191169082906001908110610d8657610d866111e4565b6001600160a01b039283166020918202929092010152600b5460135460405163791ac94760e01b81524793929092169163791ac94791610dd1916000908790309042906004016110b2565b600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b505050506000610e188247610ed490919063ffffffff16565b6010546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610e53573d6000803e3d6000fd5b50506014805460ff191690555050565b6000601960115443610e75919061117c565b1115610e9c576064600a5484610e8b919061115d565b610e95919061113b565b9050610eb6565b6064610ea984601461115d565b610eb3919061113b565b90505b60408201819052610ec78382610ed4565b6020909201919091525050565b6000610b6a828461117c565b604082015115610ef957610ef982604001518230610efd565b5050565b6001600160a01b038116600090815260016020526040902054610f209084610b5e565b6001600160a01b0380831660008181526001602052604090819020939093559151908416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108b19087815260200190565b80356001600160a01b0381168114610f8b57600080fd5b919050565b600060208284031215610fa257600080fd5b610b6a82610f74565b60008060408385031215610fbe57600080fd5b610fc783610f74565b9150610fd560208401610f74565b90509250929050565b600080600060608486031215610ff357600080fd5b610ffc84610f74565b925061100a60208501610f74565b9150604084013590509250925092565b6000806040838503121561102d57600080fd5b61103683610f74565b946020939093013593505050565b60006020828403121561105657600080fd5b5051919050565b600060208083528351808285015260005b8181101561108a5785810183015185820160400152820161106e565b8181111561109c576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156111025784516001600160a01b0316835293830193918301916001016110dd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611136576111366111ce565b500190565b60008261115857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611177576111776111ce565b500290565b60008282101561118e5761118e6111ce565b500390565b600181811c908216806111a757607f821691505b602082108114156111c857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206f8977a6362cf93fd7de8ab5b5140a05f95b0fab9710ae1f829466edd4ecec0764736f6c63430008060033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c806370a08231116100b657806395d89b411161006f57806395d89b41146103c6578063a457c2d7146103db578063a72905a2146103fb578063a9059cbb1461042b578063dd62ed3e1461044b578063f2fde38b1461049157600080fd5b806370a08231146102f5578063715018a61461032b578063768dc7101461034257806384d6ff2f146103725780638da5cb5b1461038857806395623641146103a657600080fd5b806323b872dd1161010857806323b872dd14610239578063313ce56714610259578063395093511461027b5780633fc8cef31461029b57806349bd5a5e146102bb5780636ddd1713146102db57600080fd5b80630445b6671461015b578063047fc9aa1461018457806306fdde031461019a578063095ea7b3146101bc5780631694505e146101ec57806318160ddd1461022457600080fd5b3661015657005b600080fd5b34801561016757600080fd5b5061017160135481565b6040519081526020015b60405180910390f35b34801561019057600080fd5b5061017160075481565b3480156101a657600080fd5b506101af6104b1565b60405161017b919061105d565b3480156101c857600080fd5b506101dc6101d736600461101a565b610543565b604051901515815260200161017b565b3480156101f857600080fd5b50600b5461020c906001600160a01b031681565b6040516001600160a01b03909116815260200161017b565b34801561023057600080fd5b50600654610171565b34801561024557600080fd5b506101dc610254366004610fde565b610559565b34801561026557600080fd5b5060055460405160ff909116815260200161017b565b34801561028757600080fd5b506101dc61029636600461101a565b6105c2565b3480156102a757600080fd5b50600d5461020c906001600160a01b031681565b3480156102c757600080fd5b50600c5461020c906001600160a01b031681565b3480156102e757600080fd5b506012546101dc9060ff1681565b34801561030157600080fd5b50610171610310366004610f90565b6001600160a01b031660009081526001602052604090205490565b34801561033757600080fd5b506103406105f8565b005b34801561034e57600080fd5b506101dc61035d366004610f90565b60036020526000908152604090205460ff1681565b34801561037e57600080fd5b50610171600a5481565b34801561039457600080fd5b506000546001600160a01b031661020c565b3480156103b257600080fd5b5060105461020c906001600160a01b031681565b3480156103d257600080fd5b506101af610663565b3480156103e757600080fd5b506101dc6103f636600461101a565b610672565b34801561040757600080fd5b506101dc610416366004610f90565b60046020526000908152604090205460ff1681565b34801561043757600080fd5b506101dc61044636600461101a565b6106c1565b34801561045757600080fd5b50610171610466366004610fab565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561049d57600080fd5b506103406104ac366004610f90565b6106ce565b6060600880546104c090611193565b80601f01602080910402602001604051908101604052809291908181526020018280546104ec90611193565b80156105395780601f1061050e57610100808354040283529160200191610539565b820191906000526020600020905b81548152906001019060200180831161051c57829003601f168201915b5050505050905090565b6000610550338484610799565b50600192915050565b60006105668484846108be565b6105b884336105b3856040518060600160405280602881526020016111fb602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610b32565b610799565b5060019392505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105509185906105b39086610b5e565b6000546001600160a01b031633146106575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106616000610b71565b565b6060600980546104c090611193565b600061055033846105b385604051806060016040528060258152602001611223602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610b32565b60006105503384846108be565b6000546001600160a01b031633146107285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064e565b6001600160a01b03811661078d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064e565b61079681610b71565b50565b6001600160a01b0383166107fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161064e565b6001600160a01b03821661085c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161064e565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161064e565b6000811161098b5760405162461bcd60e51b815260206004820152603060248201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b606482015260840161064e565b60408051606081018252600080825281830181905260208083018590526001600160a01b0386168252600490529182205460ff168015610a395750836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ff57600080fd5b505afa158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a379190611044565b155b8015610a455750601154155b15610a4f57436011555b60145460ff1680610a7857506001600160a01b03851660009081526003602052604090205460ff165b80610a9b57506001600160a01b03841660009081526003602052604090205460ff165b15610ab357610aac85858584610bc1565b5050505050565b6001600160a01b03841660009081526004602052604090205460ff1680610af257506001600160a01b03851660009081526004602052604090205460ff165b15610afc57600191505b610b0584610c91565b15610b1257610b12610ced565b811580158252610b2657610b268382610e63565b610aac85858584610bc1565b60008184841115610b565760405162461bcd60e51b815260040161064e919061105d565b505050900390565b6000610b6a8284611123565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038416600090815260016020526040902054610be49083610ed4565b6001600160a01b0380861660009081526001602090815260408083209490945584015191861681529190912054610c1a91610b5e565b6001600160a01b03808516600081815260016020908152604091829020949094558484015190519081529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38051151560011415610c8b57610c8b8185610ee0565b50505050565b6001600160a01b03811660009081526004602052604081205460ff168015610cbc575060145460ff16155b8015610cca575060125460ff165b8015610ce757506013543060009081526001602052604090205410155b92915050565b6014805460ff19166001179055601354306000908152600260208181526040808420600b546001600160a01b031685528252808420949094558351828152606081018552929390830190803683370190505090503081600081518110610d5557610d556111e4565b6001600160a01b039283166020918202929092010152600d54825191169082906001908110610d8657610d866111e4565b6001600160a01b039283166020918202929092010152600b5460135460405163791ac94760e01b81524793929092169163791ac94791610dd1916000908790309042906004016110b2565b600060405180830381600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b505050506000610e188247610ed490919063ffffffff16565b6010546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610e53573d6000803e3d6000fd5b50506014805460ff191690555050565b6000601960115443610e75919061117c565b1115610e9c576064600a5484610e8b919061115d565b610e95919061113b565b9050610eb6565b6064610ea984601461115d565b610eb3919061113b565b90505b60408201819052610ec78382610ed4565b6020909201919091525050565b6000610b6a828461117c565b604082015115610ef957610ef982604001518230610efd565b5050565b6001600160a01b038116600090815260016020526040902054610f209084610b5e565b6001600160a01b0380831660008181526001602052604090819020939093559151908416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108b19087815260200190565b80356001600160a01b0381168114610f8b57600080fd5b919050565b600060208284031215610fa257600080fd5b610b6a82610f74565b60008060408385031215610fbe57600080fd5b610fc783610f74565b9150610fd560208401610f74565b90509250929050565b600080600060608486031215610ff357600080fd5b610ffc84610f74565b925061100a60208501610f74565b9150604084013590509250925092565b6000806040838503121561102d57600080fd5b61103683610f74565b946020939093013593505050565b60006020828403121561105657600080fd5b5051919050565b600060208083528351808285015260005b8181101561108a5785810183015185820160400152820161106e565b8181111561109c576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156111025784516001600160a01b0316835293830193918301916001016110dd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611136576111366111ce565b500190565b60008261115857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611177576111776111ce565b500290565b60008282101561118e5761118e6111ce565b500390565b600181811c908216806111a757607f821691505b602082108114156111c857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206f8977a6362cf93fd7de8ab5b5140a05f95b0fab9710ae1f829466edd4ecec0764736f6c63430008060033
Deployed Bytecode Sourcemap
11064:7239:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12094:45;;;;;;;;;;;;;;;;;;;5431:25:1;;;5419:2;5404:18;12094:45:0;;;;;;;;11483;;;;;;;;;;;;;;;;13053:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13884:161::-;;;;;;;;;;-1:-1:-1;13884:161:0;;;;;:::i;:::-;;:::i;:::-;;;1802:14:1;;1795:22;1777:41;;1765:2;1750:18;13884:161:0;1732:92:1;11654:41:0;;;;;;;;;;-1:-1:-1;11654:41:0;;;;-1:-1:-1;;;;;11654:41:0;;;;;;-1:-1:-1;;;;;1593:32:1;;;1575:51;;1563:2;1548:18;11654:41:0;1530:102:1;13330:95:0;;;;;;;;;;-1:-1:-1;13410:7:0;;13330:95;;14053:313;;;;;;;;;;-1:-1:-1;14053:313:0;;;;;:::i;:::-;;:::i;13239:83::-;;;;;;;;;;-1:-1:-1;13305:9:0;;13239:83;;13305:9;;;;6594:36:1;;6582:2;6567:18;13239:83:0;6549:87:1;14374:218:0;;;;;;;;;;-1:-1:-1;14374:218:0;;;;;:::i;:::-;;:::i;11738:19::-;;;;;;;;;;-1:-1:-1;11738:19:0;;;;-1:-1:-1;;;;;11738:19:0;;;11704:27;;;;;;;;;;-1:-1:-1;11704:27:0;;;;-1:-1:-1;;;;;11704:27:0;;;12057:30;;;;;;;;;;-1:-1:-1;12057:30:0;;;;;;;;13433:117;;;;;;;;;;-1:-1:-1;13433:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13526:16:0;13499:7;13526:16;;;:7;:16;;;;;;;13433:117;3913:94;;;;;;;;;;;;;:::i;:::-;;11308:51;;;;;;;;;;-1:-1:-1;11308:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11616:29;;;;;;;;;;;;;;;;3690:87;;;;;;;;;;-1:-1:-1;3736:7:0;3763:6;-1:-1:-1;;;;;3763:6:0;3690:87;;11945:73;;;;;;;;;;-1:-1:-1;11945:73:0;;;;-1:-1:-1;;;;;11945:73:0;;;13144:87;;;;;;;;;;;;;:::i;14600:269::-;;;;;;;;;;-1:-1:-1;14600:269:0;;;;;:::i;:::-;;:::i;11366:40::-;;;;;;;;;;-1:-1:-1;11366:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13558:167;;;;;;;;;;-1:-1:-1;13558:167:0;;;;;:::i;:::-;;:::i;13733:143::-;;;;;;;;;;-1:-1:-1;13733:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13841:18:0;;;13814:7;13841:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13733:143;4015:192;;;;;;;;;;-1:-1:-1;4015:192:0;;;;;:::i;:::-;;:::i;13053:83::-;13090:13;13123:5;13116:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13053:83;:::o;13884:161::-;13959:4;13976:39;3327:10;13999:7;14008:6;13976:8;:39::i;:::-;-1:-1:-1;14033:4:0;13884:161;;;;:::o;14053:313::-;14151:4;14168:36;14178:6;14186:9;14197:6;14168:9;:36::i;:::-;14215:121;14224:6;3327:10;14246:89;14284:6;14246:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14246:19:0;;;;;;:11;:19;;;;;;;;3327:10;14246:33;;;;;;;;;;:37;:89::i;:::-;14215:8;:121::i;:::-;-1:-1:-1;14354:4:0;14053:313;;;;;:::o;14374:218::-;3327:10;14462:4;14511:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14511:34:0;;;;;;;;;;14462:4;;14479:83;;14502:7;;14511:50;;14550:10;14511:38;:50::i;3913:94::-;3736:7;3763:6;-1:-1:-1;;;;;3763:6:0;3327:10;3825:23;3817:68;;;;-1:-1:-1;;;3817:68:0;;4315:2:1;3817:68:0;;;4297:21:1;;;4334:18;;;4327:30;4393:34;4373:18;;;4366:62;4445:18;;3817:68:0;;;;;;;;;3978:21:::1;3996:1;3978:9;:21::i;:::-;3913:94::o:0;13144:87::-;13183:13;13216:7;13209:14;;;;;:::i;14600:269::-;14693:4;14710:129;3327:10;14733:7;14742:96;14781:15;14742:96;;;;;;;;;;;;;;;;;3327:10;14742:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14742:34:0;;;;;;;;;;;;:38;:96::i;13558:167::-;13636:4;13653:42;3327:10;13677:9;13688:6;13653:9;:42::i;4015:192::-;3736:7;3763:6;-1:-1:-1;;;;;3763:6:0;3327:10;3825:23;3817:68;;;;-1:-1:-1;;;3817:68:0;;4315:2:1;3817:68:0;;;4297:21:1;;;4334:18;;;4327:30;4393:34;4373:18;;;4366:62;4445:18;;3817:68:0;4287:182:1;3817:68:0;-1:-1:-1;;;;;4104:22:0;::::1;4096:73;;;::::0;-1:-1:-1;;;4096:73:0;;3088:2:1;4096:73:0::1;::::0;::::1;3070:21:1::0;3127:2;3107:18;;;3100:30;3166:34;3146:18;;;3139:62;-1:-1:-1;;;3217:18:1;;;3210:36;3263:19;;4096:73:0::1;3060:228:1::0;4096:73:0::1;4180:19;4190:8;4180:9;:19::i;:::-;4015:192:::0;:::o;14877:337::-;-1:-1:-1;;;;;14970:19:0;;14962:68;;;;-1:-1:-1;;;14962:68:0;;5082:2:1;14962:68:0;;;5064:21:1;5121:2;5101:18;;;5094:30;5160:34;5140:18;;;5133:62;-1:-1:-1;;;5211:18:1;;;5204:34;5255:19;;14962:68:0;5054:226:1;14962:68:0;-1:-1:-1;;;;;15049:21:0;;15041:68;;;;-1:-1:-1;;;15041:68:0;;3495:2:1;15041:68:0;;;3477:21:1;3534:2;3514:18;;;3507:30;3573:34;3553:18;;;3546:62;-1:-1:-1;;;3624:18:1;;;3617:32;3666:19;;15041:68:0;3467:224:1;15041:68:0;-1:-1:-1;;;;;15122:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15174:32;;5431:25:1;;;15174:32:0;;5404:18:1;15174:32:0;;;;;;;;14877:337;;;:::o;16936:955::-;-1:-1:-1;;;;;17058:18:0;;17050:68;;;;-1:-1:-1;;;17050:68:0;;4676:2:1;17050:68:0;;;4658:21:1;4715:2;4695:18;;;4688:30;4754:34;4734:18;;;4727:62;-1:-1:-1;;;4805:18:1;;;4798:35;4850:19;;17050:68:0;4648:227:1;17050:68:0;17146:1;17137:6;:10;17129:71;;;;-1:-1:-1;;;17129:71:0;;3898:2:1;17129:71:0;;;3880:21:1;3937:2;3917:18;;;3910:30;3976:34;3956:18;;;3949:62;-1:-1:-1;;;4027:18:1;;;4020:46;4083:19;;17129:71:0;3870:238:1;17129:71:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;17265:30:0;;;-1:-1:-1;;;;;17311:12:0;;;;:8;:12;;;;;;;;:45;;;;;17334:2;-1:-1:-1;;;;;17327:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;17311:45;:67;;;;-1:-1:-1;17360:13:0;;:18;17311:67;17308:126;;;17410:12;17394:13;:28;17308:126;17449:6;;;;;:34;;-1:-1:-1;;;;;;17459:24:0;;;;;;:18;:24;;;;;;;;17449:34;:60;;;-1:-1:-1;;;;;;17487:22:0;;;;;;:18;:22;;;;;;;;17449:60;17446:135;;;17532:36;17547:4;17552:2;17555:6;17562:5;17532:14;:36::i;:::-;17525:43;;16936:955;;;:::o;17446:135::-;-1:-1:-1;;;;;17596:12:0;;;;;;:8;:12;;;;;;;;;:30;;-1:-1:-1;;;;;;17612:14:0;;;;;;:8;:14;;;;;;;;17596:30;17593:75;;;17652:4;17642:14;;17593:75;17683:18;17698:2;17683:14;:18::i;:::-;17680:37;;;17704:10;:8;:10::i;:::-;17729:23;;;;;;17763:64;;17791:24;17802:6;17809:5;17791:10;:24::i;:::-;17847:36;17862:4;17867:2;17870:6;17877:5;17847:14;:36::i;2575:206::-;2661:7;2722:12;2714:6;;;;2706:29;;;;-1:-1:-1;;;2706:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2757:5:0;;;2575:206::o;2045:98::-;2103:7;2130:5;2134:1;2130;:5;:::i;:::-;2123:12;2045:98;-1:-1:-1;;;2045:98:0:o;4215:173::-;4271:16;4290:6;;-1:-1:-1;;;;;4307:17:0;;;-1:-1:-1;;;;;;4307:17:0;;;;;;4340:40;;4290:6;;;;;;;4340:40;;4271:16;4340:40;4260:128;4215:173;:::o;17899:399::-;-1:-1:-1;;;;;18031:15:0;;;;;;:7;:15;;;;;;:28;;18051:7;18031:19;:28::i;:::-;-1:-1:-1;;;;;18013:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;18114:21;;;18091:18;;;;;;;;;;:45;;:22;:45::i;:::-;-1:-1:-1;;;;;18070:18:0;;;;;;;:7;:18;;;;;;;;;:66;;;;18182:21;;;;18154:50;;5431:25:1;;;18070:18:0;;18154:50;;;;;;5404:18:1;18154:50:0;;;;;;;18220:13;;:21;;18237:4;18220:21;18217:74;;;18257:22;18266:5;18272:6;18257:8;:22::i;:::-;17899:399;;;;:::o;16075:204::-;-1:-1:-1;;;;;16159:12:0;;16134:4;16159:12;;;:8;:12;;;;;;;;16158:35;;;;-1:-1:-1;16187:6:0;;;;16186:7;16158:35;:59;;;;-1:-1:-1;16206:11:0;;;;16158:59;:113;;;;-1:-1:-1;16258:13:0;;16248:4;13499:7;13526:16;;;:7;:16;;;;;;16230:41;;16158:113;16151:120;16075:204;-1:-1:-1;;16075:204:0:o;16287:641::-;12186:6;:13;;-1:-1:-1;;12186:13:0;12195:4;12186:13;;;16391::::1;::::0;16356:4:::1;-1:-1:-1::0;16336:26:0;;;:11:::1;:26;::::0;;;;;;;16371:15:::1;::::0;-1:-1:-1;;;;;16371:15:0::1;16336:52:::0;;;;;;;:68;;;;16449:16;;;;;;;::::1;::::0;;-1:-1:-1;;16449:16:0;;::::1;::::0;16336:26;16449:16:::1;::::0;::::1;;::::0;-1:-1:-1;16449:16:0::1;16425:40;;16494:4;16476;16481:1;16476:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16476:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16520:4:::1;::::0;16510:7;;16520:4;::::1;::::0;16510;;16520;;16510:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16510:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16593:15:::1;::::0;16674:13:::1;::::0;16593:198:::1;::::0;-1:-1:-1;;;16593:198:0;;16559:21:::1;::::0;16593:15;;;::::1;::::0;:66:::1;::::0;:198:::1;::::0;16535:21:::1;::::0;16718:4;;16745::::1;::::0;16765:15:::1;::::0;16593:198:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16804:17;16824:40;16850:13;16824:21;:25;;:40;;;;:::i;:::-;16885:13;::::0;16877:42:::1;::::0;16804:60;;-1:-1:-1;;;;;;16885:13:0::1;::::0;16877:42;::::1;;;::::0;16804:60;;16885:13:::1;16877:42:::0;16885:13;16877:42;16804:60;16885:13;16877:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12204:6:0;:14;;-1:-1:-1;;12204:14:0;;;-1:-1:-1;;16287:641:0:o;15535:353::-;15617:9;15672:2;15656:13;;15641:12;:28;;;;:::i;:::-;:33;15637:159;;;15721:3;15708:10;;15698:7;:20;;;;:::i;:::-;:26;;;;:::i;:::-;15691:33;;15637:159;;;15779:3;15764:12;:7;15774:2;15764:12;:::i;:::-;:18;;;;:::i;:::-;15757:25;;15637:159;15806:15;;;:22;;;15863:17;:7;15824:4;15863:11;:17::i;:::-;15839:21;;;;:41;;;;-1:-1:-1;;15535:353:0:o;2151:98::-;2209:7;2236:5;2240:1;2236;:5;:::i;15896:171::-;15969:15;;;;:19;15965:95;;16005:43;16011:5;:15;;;16028:4;16042;16005:5;:43::i;:::-;15896:171;;:::o;15222:161::-;-1:-1:-1;;;;;15310:11:0;;;;;;:7;:11;;;;;;:23;;15326:6;15310:15;:23::i;:::-;-1:-1:-1;;;;;15296:11:0;;;;;;;:7;:11;;;;;;;:37;;;;15349:26;;;;;;;;;;15368:6;5431:25:1;;5419:2;5404:18;;5386:76;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;320:1;317;310:12;272:2;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:2;;;528:1;525;518:12;480:2;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;470:173;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:2;;;810:1;807;800:12;762:2;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;752:224;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:2;;;1126:1;1123;1116:12;1078:2;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;1068:167:1:o;1240:184::-;1310:6;1363:2;1351:9;1342:7;1338:23;1334:32;1331:2;;;1379:1;1376;1369:12;1331:2;-1:-1:-1;1402:16:1;;1321:103;-1:-1:-1;1321:103:1:o;2284:597::-;2396:4;2425:2;2454;2443:9;2436:21;2486:6;2480:13;2529:6;2524:2;2513:9;2509:18;2502:34;2554:1;2564:140;2578:6;2575:1;2572:13;2564:140;;;2673:14;;;2669:23;;2663:30;2639:17;;;2658:2;2635:26;2628:66;2593:10;;2564:140;;;2722:6;2719:1;2716:13;2713:2;;;2792:1;2787:2;2778:6;2767:9;2763:22;2759:31;2752:42;2713:2;-1:-1:-1;2865:2:1;2844:15;-1:-1:-1;;2840:29:1;2825:45;;;;2872:2;2821:54;;2405:476;-1:-1:-1;;;2405:476:1:o;5467:980::-;5729:4;5777:3;5766:9;5762:19;5808:6;5797:9;5790:25;5834:2;5872:6;5867:2;5856:9;5852:18;5845:34;5915:3;5910:2;5899:9;5895:18;5888:31;5939:6;5974;5968:13;6005:6;5997;5990:22;6043:3;6032:9;6028:19;6021:26;;6082:2;6074:6;6070:15;6056:29;;6103:1;6113:195;6127:6;6124:1;6121:13;6113:195;;;6192:13;;-1:-1:-1;;;;;6188:39:1;6176:52;;6283:15;;;;6248:12;;;;6224:1;6142:9;6113:195;;;-1:-1:-1;;;;;;;6364:32:1;;;;6359:2;6344:18;;6337:60;-1:-1:-1;;;6428:3:1;6413:19;6406:35;6325:3;5738:709;-1:-1:-1;;;5738:709:1:o;6641:128::-;6681:3;6712:1;6708:6;6705:1;6702:13;6699:2;;;6718:18;;:::i;:::-;-1:-1:-1;6754:9:1;;6689:80::o;6774:217::-;6814:1;6840;6830:2;;6884:10;6879:3;6875:20;6872:1;6865:31;6919:4;6916:1;6909:15;6947:4;6944:1;6937:15;6830:2;-1:-1:-1;6976:9:1;;6820:171::o;6996:168::-;7036:7;7102:1;7098;7094:6;7090:14;7087:1;7084:21;7079:1;7072:9;7065:17;7061:45;7058:2;;;7109:18;;:::i;:::-;-1:-1:-1;7149:9:1;;7048:116::o;7169:125::-;7209:4;7237:1;7234;7231:8;7228:2;;;7242:18;;:::i;:::-;-1:-1:-1;7279:9:1;;7218:76::o;7299:380::-;7378:1;7374:12;;;;7421;;;7442:2;;7496:4;7488:6;7484:17;7474:27;;7442:2;7549;7541:6;7538:14;7518:18;7515:38;7512:2;;;7595:10;7590:3;7586:20;7583:1;7576:31;7630:4;7627:1;7620:15;7658:4;7655:1;7648:15;7512:2;;7354:325;;;:::o;7684:127::-;7745:10;7740:3;7736:20;7733:1;7726:31;7776:4;7773:1;7766:15;7800:4;7797:1;7790:15;7816:127;7877:10;7872:3;7868:20;7865:1;7858:31;7908:4;7905:1;7898:15;7932:4;7929:1;7922:15
Swarm Source
ipfs://6f8977a6362cf93fd7de8ab5b5140a05f95b0fab9710ae1f829466edd4ecec07
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.