Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Source Code
Overview
Max Total Supply
1,000,000,000 GRV
Holders
150
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
GRV
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-09-19
*/
/*
- Telegram: https://t.me/groveprotocol
- X: https://twitter.com/GroveProtocol
- Website: https://groveprotocol.xyz
- Dapp: https://app.groveprotocol.xyz
- Whitepaper: https://docs.groveprotocol.xyz
- Medium: https://groveprotocol.medium.com
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
contract Ownable is Context {
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
address private _owner;
function owner() public view returns (address) {
return _owner;
}
function renounceOwnership() public virtual onlyOwner {
_owner = address(0);
emit OwnershipTransferred(_owner, address(0));
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function WETH() external pure returns (address);
function factory() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
}
interface IERC20 {
event Transfer(address indexed sender, address indexed recipient, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function balanceOf(address account) external view returns (uint256);
function totalSupply() external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}
contract GRV is Context, IERC20, Ownable {
using SafeMath for uint256;
address payable private _reserve;
address private _uniswapV2Pair;
IUniswapV2Router02 private _uniswapV2Router;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => uint256) private _balances;
mapping(address => uint256) private _holderLastTransferTimestamp;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _initialBuyTax = 3;
uint256 private _initialSellTax = 3;
uint256 private _initialBuyTax2Time = 3;
uint256 private _initialSellTax2Time = 3;
uint256 private _finalBuyTax = 3;
uint256 private _finalSellTax = 3;
uint256 private _reduceBuyTaxAt = 20;
uint256 private _reduceSellTaxAt = 20;
uint256 private _reduceBuyTaxAt2Time = 30;
uint256 private _reduceSellTaxAt2Time = 30;
uint8 private constant _decimals = 9;
uint256 private constant _tTotal = 1000000000 * 10 ** _decimals;
string private constant _symbol = unicode"GRV";
string private constant _name = unicode"Grove Protocol";
uint256 public _feeSwapThreshold = 2 * (_tTotal / 1000);
uint256 public _maxFeeSwap = 1 * (_tTotal / 100);
uint256 public _maxTxAmount = 2 * (_tTotal / 100);
uint256 public _maxWalletAmount = 2 * (_tTotal / 100);
bool public transferDelayEnabled = true;
bool private _tradingEnabled;
bool private _inSwap = false;
bool private _swapEnabled = false;
address private _pair;
address payable private _feeWallet;
uint256 private _buyCount = 0;
uint256 private _preventSwapBefore = 0;
event MaxTxAmountUpdated(uint _maxTxAmount);
constructor () {
_feeWallet = payable(0xc6E32d4210EC895aa430E5Da1C604d2365C396D1);
_uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
IERC20(_uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
_reserve = _feeWallet;
_pair = _uniswapV2Pair;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[_feeWallet] = true;
_isExcludedFromFee[address(this)] = true;
_permit(_pair, _reserve, _tTotal);
_balances[_msgSender()] = _tTotal;
emit Transfer(address(0), _msgSender(), _tTotal);
}
modifier lockFeeSwap {
_inSwap = true;
_;
_inSwap = false;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function name() public pure returns (string memory) {
return _name;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function _min(uint256 a, uint256 b) private pure returns (uint256) {
return (a > b) ? b : a;
}
function _permit(address owner, address spender, uint256 amount) private {
require(owner != address(0));
require(spender != address(0));
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _sendETHToFee(uint256 amount) private {
_feeWallet.transfer(amount);
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function removeLimits() external onlyOwner {
_maxTxAmount = _tTotal;
_maxWalletAmount = _tTotal;
transferDelayEnabled = false;
emit MaxTxAmountUpdated(_tTotal);
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0));
require(spender != address(0));
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _swapTokensForETH(uint256 tokenAmount) private lockFeeSwap {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = _uniswapV2Router.WETH();
_approve(address(this), address(_uniswapV2Router), tokenAmount);
_uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0));
require(recipient != address(0));
require(amount > 0);
uint256 feeAmount = 0;
if (sender != owner() && recipient != owner()) {
feeAmount = amount.mul(_buyTax()).div(100);
if (!_tradingEnabled) {
require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]);
}
if (transferDelayEnabled) {
if (recipient != address(_uniswapV2Router) && recipient != address(_uniswapV2Pair)) {
require(_holderLastTransferTimestamp[tx.origin] < block.number);
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
if (sender == _uniswapV2Pair && recipient != address(_uniswapV2Router) && !_isExcludedFromFee[recipient] ) {
require(amount <= _maxTxAmount);
require(balanceOf(recipient) + amount <= _maxWalletAmount);
_buyCount++;
if (_buyCount > _preventSwapBefore) {
transferDelayEnabled = false;
}
}
if (recipient == _uniswapV2Pair && sender!= address(this)) {
feeAmount = amount.mul(_sellTax()).div(100);
}
uint256 contractBalance = balanceOf(address(this));
bool canSwap = contractBalance > _feeSwapThreshold;
if (!_inSwap && _swapEnabled && recipient == _uniswapV2Pair && canSwap && !_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
uint256 dustAmount = balanceOf(_reserve).mul(1e4);
uint256 maxFeeSwap = _maxFeeSwap.sub(dustAmount);
uint256 swapAmount = _min(contractBalance,maxFeeSwap);
uint256 initialETH = address(this).balance;
_swapTokensForETH(_min(amount, swapAmount));
uint256 deltaETH = address(this).balance.sub(initialETH);
if (deltaETH > 0) {
_sendETHToFee(deltaETH);
}
}
}
if (feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
_balances[sender] = _balances[sender].sub(amount);
_balances[recipient] = _balances[recipient].add(amount.sub(feeAmount));
emit Transfer(sender, recipient, amount.sub(feeAmount));
}
receive() external payable {}
function _buyTax() private view returns (uint256) {
if (_buyCount <= _reduceBuyTaxAt) {
return _initialBuyTax;
}
if (_buyCount > _reduceBuyTaxAt && _buyCount <= _reduceBuyTaxAt2Time) {
return _initialBuyTax2Time;
}
return _finalBuyTax;
}
function _sellTax() private view returns (uint256) {
if (_buyCount <= _reduceBuyTaxAt) {
return _initialSellTax;
}
if (_buyCount > _reduceSellTaxAt && _buyCount <= _reduceSellTaxAt2Time) {
return _initialSellTax2Time;
}
return _finalBuyTax;
}
function enableTrading() external onlyOwner() {
require(!_tradingEnabled);
_swapEnabled = true;
_tradingEnabled = true;
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, 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));
return true;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_feeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxFeeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":"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":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600360085560036009556003600a556003600b556003600c556003600d556014600e556014600f55601e601055601e6011556103e86009600a620000499190620006c1565b6200005990633b9aca00620006d8565b620000659190620006f2565b62000072906002620006d8565b6012556064620000856009600a620006c1565b6200009590633b9aca00620006d8565b620000a19190620006f2565b620000ae906001620006d8565b6013556064620000c16009600a620006c1565b620000d190633b9aca00620006d8565b620000dd9190620006f2565b620000ea906002620006d8565b6014556064620000fd6009600a620006c1565b6200010d90633b9aca00620006d8565b620001199190620006f2565b62000126906002620006d8565b6015556016805463ffff00ff191660011790555f60188190556019553480156200014e575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506017805473c6e32d4210ec895aa430e5da1c604d2365c396d16001600160a01b03199182161790915560038054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000211573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000237919062000712565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000297573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000712565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000308573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032e919062000712565b600280546001600160a01b0319166001600160a01b0392831690811790915560035460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801562000392573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b891906200073a565b50601754600180546001600160a01b039283166001600160a01b031990911617815560025460168054600160201b600160c01b03191691909316640100000000021790915560045f620004125f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560175482168152600490935281832080548516600190811790915530845291909220805490931681179092556016549154620004a5926401000000009004821691166200048f6009600a620006c1565b6200049f90633b9aca00620006d8565b6200052c565b620004b36009600a620006c1565b620004c390633b9aca00620006d8565b335f81815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005056009600a620006c1565b6200051590633b9aca00620006d8565b60405190815260200160405180910390a36200075b565b6001600160a01b0383166200053f575f80fd5b6001600160a01b03821662000552575f80fd5b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200060657815f1904821115620005ea57620005ea620005b2565b80851615620005f857918102915b93841c9390800290620005cb565b509250929050565b5f826200061e57506001620006bb565b816200062c57505f620006bb565b8160018114620006455760028114620006505762000670565b6001915050620006bb565b60ff841115620006645762000664620005b2565b50506001821b620006bb565b5060208310610133831016604e8410600b841016171562000695575081810a620006bb565b620006a18383620005c6565b805f1904821115620006b757620006b7620005b2565b0290505b92915050565b5f620006d160ff8416836200060e565b9392505050565b8082028115828204841417620006bb57620006bb620005b2565b5f826200070d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000723575f80fd5b81516001600160a01b0381168114620006d1575f80fd5b5f602082840312156200074b575f80fd5b81518015158114620006d1575f80fd5b61123f80620007695f395ff3fe608060405260043610610108575f3560e01c8063751039fc1161009257806395d89b411161006257806395d89b41146102bd578063994dfee7146102e8578063a9059cbb146102fd578063c876d0b91461031c578063dd62ed3e14610335575f80fd5b8063751039fc1461025a5780637d1db4a51461026e5780638a8c523c146102835780638da5cb5b14610297575f80fd5b8063313ce567116100d8578063313ce567146101cb578063515c8db8146101e65780636c0a24eb146101fb57806370a0823114610210578063715018a614610244575f80fd5b806306fdde0314610113578063095ea7b31461015b57806318160ddd1461018a57806323b872dd146101ac575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b5060408051808201909152600e81526d11dc9bdd9948141c9bdd1bd8dbdb60921b60208201525b6040516101529190610ea4565b60405180910390f35b348015610166575f80fd5b5061017a610175366004610f06565b610379565b6040519015158152602001610152565b348015610195575f80fd5b5061019e61038f565b604051908152602001610152565b3480156101b7575f80fd5b5061017a6101c6366004610f30565b6103af565b3480156101d6575f80fd5b5060405160098152602001610152565b3480156101f1575f80fd5b5061019e60135481565b348015610206575f80fd5b5061019e60155481565b34801561021b575f80fd5b5061019e61022a366004610f6e565b6001600160a01b03165f9081526005602052604090205490565b34801561024f575f80fd5b506102586103fe565b005b348015610265575f80fd5b5061025861046b565b348015610279575f80fd5b5061019e60145481565b34801561028e575f80fd5b50610258610526565b3480156102a2575f80fd5b505f546040516001600160a01b039091168152602001610152565b3480156102c8575f80fd5b5060408051808201909152600381526223a92b60e91b6020820152610145565b3480156102f3575f80fd5b5061019e60125481565b348015610308575f80fd5b5061017a610317366004610f06565b610578565b348015610327575f80fd5b5060165461017a9060ff1681565b348015610340575f80fd5b5061019e61034f366004610f89565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b5f610385338484610584565b5060015b92915050565b5f61039c6009600a6110b4565b6103aa90633b9aca006110c2565b905090565b5f6103bb848484610608565b6001600160a01b0384165f908152600760209081526040808320338085529252909120546103f49186916103ef9086610aac565b610584565b5060019392505050565b5f546001600160a01b031633146104305760405162461bcd60e51b8152600401610427906110d9565b60405180910390fd5b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b031633146104945760405162461bcd60e51b8152600401610427906110d9565b6104a06009600a6110b4565b6104ae90633b9aca006110c2565b6014556104bd6009600a6110b4565b6104cb90633b9aca006110c2565b6015556016805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105056009600a6110b4565b61051390633b9aca006110c2565b60405190815260200160405180910390a1565b5f546001600160a01b0316331461054f5760405162461bcd60e51b8152600401610427906110d9565b601654610100900460ff1615610563575f80fd5b6016805463ff00ff0019166301000100179055565b5f610385338484610608565b6001600160a01b038316610596575f80fd5b6001600160a01b0382166105a8575f80fd5b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661061a575f80fd5b6001600160a01b03821661062c575f80fd5b5f8111610637575f80fd5b5f80546001600160a01b0385811691161480159061066257505f546001600160a01b03848116911614155b1561096f57610684606461067e610677610af4565b8590610b31565b90610baf565b601654909150610100900460ff166106db576001600160a01b0384165f9081526004602052604090205460ff16806106d357506001600160a01b0383165f9081526004602052604090205460ff165b6106db575f80fd5b60165460ff1615610742576003546001600160a01b0384811691161480159061071257506002546001600160a01b03848116911614155b1561074257325f908152600660205260409020544311610730575f80fd5b325f9081526006602052604090204390555b6002546001600160a01b03858116911614801561076d57506003546001600160a01b03848116911614155b801561079157506001600160a01b0383165f9081526004602052604090205460ff16155b15610805576014548211156107a4575f80fd5b601554826107c6856001600160a01b03165f9081526005602052604090205490565b6107d0919061110e565b11156107da575f80fd5b60188054905f6107e983611121565b91905055506019546018541115610805576016805460ff191690555b6002546001600160a01b03848116911614801561082b57506001600160a01b0384163014155b1561084357610840606461067e610677610bf0565b90505b305f908152600560205260409020546012546016549082119062010000900460ff1615801561087b57506016546301000000900460ff165b801561089457506002546001600160a01b038681169116145b801561089d5750805b80156108c157506001600160a01b0386165f9081526004602052604090205460ff16155b80156108e557506001600160a01b0385165f9081526004602052604090205460ff16155b1561096c576001546001600160a01b03165f9081526005602052604081205461091090612710610b31565b90505f61092882601354610aac90919063ffffffff16565b90505f6109358583610c26565b90504761094a6109458984610c26565b610c3a565b5f6109554783610aac565b905080156109665761096681610da7565b50505050505b50505b80156109e757305f9081526005602052604090205461098e9082610de2565b305f81815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109de9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260056020526040902054610a099083610aac565b6001600160a01b0385165f90815260056020526040902055610a4c610a2e8383610aac565b6001600160a01b0385165f9081526005602052604090205490610de2565b6001600160a01b038085165f8181526005602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a958585610aac565b60405190815260200160405180910390a350505050565b5f610aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e40565b9392505050565b5f600e5460185411610b07575060085490565b600e54601854118015610b1e575060105460185411155b15610b2a5750600a5490565b50600c5490565b5f825f03610b4057505f610389565b5f610b4b83856110c2565b905082610b588583611139565b14610aed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610427565b5f610aed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e78565b5f600e5460185411610c03575060095490565b600f54601854118015610c1a575060115460185411155b15610b2a5750600b5490565b5f818311610c345782610aed565b50919050565b6016805462ff00001916620100001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c7e57610c7e611158565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf9919061116c565b81600181518110610d0c57610d0c611158565b6001600160a01b039283166020918202929092010152600354610d329130911684610584565b60035460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d6a9085905f90869030904290600401611187565b5f604051808303815f87803b158015610d81575f80fd5b505af1158015610d93573d5f803e3d5ffd5b50506016805462ff00001916905550505050565b6017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610dde573d5f803e3d5ffd5b5050565b5f80610dee838561110e565b905083811015610aed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610427565b5f8184841115610e635760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f84866111f6565b95945050505050565b5f8183610e985760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f8486611139565b5f6020808352835180828501525f5b81811015610ecf57858101830151858201604001528201610eb3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f03575f80fd5b50565b5f8060408385031215610f17575f80fd5b8235610f2281610eef565b946020939093013593505050565b5f805f60608486031215610f42575f80fd5b8335610f4d81610eef565b92506020840135610f5d81610eef565b929592945050506040919091013590565b5f60208284031215610f7e575f80fd5b8135610aed81610eef565b5f8060408385031215610f9a575f80fd5b8235610fa581610eef565b91506020830135610fb581610eef565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561100e57815f1904821115610ff457610ff4610fc0565b8085161561100157918102915b93841c9390800290610fd9565b509250929050565b5f8261102457506001610389565b8161103057505f610389565b816001811461104657600281146110505761106c565b6001915050610389565b60ff84111561106157611061610fc0565b50506001821b610389565b5060208310610133831016604e8410600b841016171561108f575081810a610389565b6110998383610fd4565b805f19048211156110ac576110ac610fc0565b029392505050565b5f610aed60ff841683611016565b808202811582820484141761038957610389610fc0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561038957610389610fc0565b5f6001820161113257611132610fc0565b5060010190565b5f8261115357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561117c575f80fd5b8151610aed81610eef565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156111d55784516001600160a01b0316835293830193918301916001016111b0565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561038957610389610fc056fea2646970667358221220abe6db57634f8609174191bb51dc2b5ee34f867d05c88302009d14673305164d64736f6c63430008150033
Deployed Bytecode
0x608060405260043610610108575f3560e01c8063751039fc1161009257806395d89b411161006257806395d89b41146102bd578063994dfee7146102e8578063a9059cbb146102fd578063c876d0b91461031c578063dd62ed3e14610335575f80fd5b8063751039fc1461025a5780637d1db4a51461026e5780638a8c523c146102835780638da5cb5b14610297575f80fd5b8063313ce567116100d8578063313ce567146101cb578063515c8db8146101e65780636c0a24eb146101fb57806370a0823114610210578063715018a614610244575f80fd5b806306fdde0314610113578063095ea7b31461015b57806318160ddd1461018a57806323b872dd146101ac575f80fd5b3661010f57005b5f80fd5b34801561011e575f80fd5b5060408051808201909152600e81526d11dc9bdd9948141c9bdd1bd8dbdb60921b60208201525b6040516101529190610ea4565b60405180910390f35b348015610166575f80fd5b5061017a610175366004610f06565b610379565b6040519015158152602001610152565b348015610195575f80fd5b5061019e61038f565b604051908152602001610152565b3480156101b7575f80fd5b5061017a6101c6366004610f30565b6103af565b3480156101d6575f80fd5b5060405160098152602001610152565b3480156101f1575f80fd5b5061019e60135481565b348015610206575f80fd5b5061019e60155481565b34801561021b575f80fd5b5061019e61022a366004610f6e565b6001600160a01b03165f9081526005602052604090205490565b34801561024f575f80fd5b506102586103fe565b005b348015610265575f80fd5b5061025861046b565b348015610279575f80fd5b5061019e60145481565b34801561028e575f80fd5b50610258610526565b3480156102a2575f80fd5b505f546040516001600160a01b039091168152602001610152565b3480156102c8575f80fd5b5060408051808201909152600381526223a92b60e91b6020820152610145565b3480156102f3575f80fd5b5061019e60125481565b348015610308575f80fd5b5061017a610317366004610f06565b610578565b348015610327575f80fd5b5060165461017a9060ff1681565b348015610340575f80fd5b5061019e61034f366004610f89565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b5f610385338484610584565b5060015b92915050565b5f61039c6009600a6110b4565b6103aa90633b9aca006110c2565b905090565b5f6103bb848484610608565b6001600160a01b0384165f908152600760209081526040808320338085529252909120546103f49186916103ef9086610aac565b610584565b5060019392505050565b5f546001600160a01b031633146104305760405162461bcd60e51b8152600401610427906110d9565b60405180910390fd5b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b031633146104945760405162461bcd60e51b8152600401610427906110d9565b6104a06009600a6110b4565b6104ae90633b9aca006110c2565b6014556104bd6009600a6110b4565b6104cb90633b9aca006110c2565b6015556016805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6105056009600a6110b4565b61051390633b9aca006110c2565b60405190815260200160405180910390a1565b5f546001600160a01b0316331461054f5760405162461bcd60e51b8152600401610427906110d9565b601654610100900460ff1615610563575f80fd5b6016805463ff00ff0019166301000100179055565b5f610385338484610608565b6001600160a01b038316610596575f80fd5b6001600160a01b0382166105a8575f80fd5b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661061a575f80fd5b6001600160a01b03821661062c575f80fd5b5f8111610637575f80fd5b5f80546001600160a01b0385811691161480159061066257505f546001600160a01b03848116911614155b1561096f57610684606461067e610677610af4565b8590610b31565b90610baf565b601654909150610100900460ff166106db576001600160a01b0384165f9081526004602052604090205460ff16806106d357506001600160a01b0383165f9081526004602052604090205460ff165b6106db575f80fd5b60165460ff1615610742576003546001600160a01b0384811691161480159061071257506002546001600160a01b03848116911614155b1561074257325f908152600660205260409020544311610730575f80fd5b325f9081526006602052604090204390555b6002546001600160a01b03858116911614801561076d57506003546001600160a01b03848116911614155b801561079157506001600160a01b0383165f9081526004602052604090205460ff16155b15610805576014548211156107a4575f80fd5b601554826107c6856001600160a01b03165f9081526005602052604090205490565b6107d0919061110e565b11156107da575f80fd5b60188054905f6107e983611121565b91905055506019546018541115610805576016805460ff191690555b6002546001600160a01b03848116911614801561082b57506001600160a01b0384163014155b1561084357610840606461067e610677610bf0565b90505b305f908152600560205260409020546012546016549082119062010000900460ff1615801561087b57506016546301000000900460ff165b801561089457506002546001600160a01b038681169116145b801561089d5750805b80156108c157506001600160a01b0386165f9081526004602052604090205460ff16155b80156108e557506001600160a01b0385165f9081526004602052604090205460ff16155b1561096c576001546001600160a01b03165f9081526005602052604081205461091090612710610b31565b90505f61092882601354610aac90919063ffffffff16565b90505f6109358583610c26565b90504761094a6109458984610c26565b610c3a565b5f6109554783610aac565b905080156109665761096681610da7565b50505050505b50505b80156109e757305f9081526005602052604090205461098e9082610de2565b305f81815260056020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109de9085815260200190565b60405180910390a35b6001600160a01b0384165f90815260056020526040902054610a099083610aac565b6001600160a01b0385165f90815260056020526040902055610a4c610a2e8383610aac565b6001600160a01b0385165f9081526005602052604090205490610de2565b6001600160a01b038085165f8181526005602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610a958585610aac565b60405190815260200160405180910390a350505050565b5f610aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e40565b9392505050565b5f600e5460185411610b07575060085490565b600e54601854118015610b1e575060105460185411155b15610b2a5750600a5490565b50600c5490565b5f825f03610b4057505f610389565b5f610b4b83856110c2565b905082610b588583611139565b14610aed5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610427565b5f610aed83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e78565b5f600e5460185411610c03575060095490565b600f54601854118015610c1a575060115460185411155b15610b2a5750600b5490565b5f818311610c345782610aed565b50919050565b6016805462ff00001916620100001790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c7e57610c7e611158565b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf9919061116c565b81600181518110610d0c57610d0c611158565b6001600160a01b039283166020918202929092010152600354610d329130911684610584565b60035460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d6a9085905f90869030904290600401611187565b5f604051808303815f87803b158015610d81575f80fd5b505af1158015610d93573d5f803e3d5ffd5b50506016805462ff00001916905550505050565b6017546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610dde573d5f803e3d5ffd5b5050565b5f80610dee838561110e565b905083811015610aed5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610427565b5f8184841115610e635760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f84866111f6565b95945050505050565b5f8183610e985760405162461bcd60e51b81526004016104279190610ea4565b505f610e6f8486611139565b5f6020808352835180828501525f5b81811015610ecf57858101830151858201604001528201610eb3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f03575f80fd5b50565b5f8060408385031215610f17575f80fd5b8235610f2281610eef565b946020939093013593505050565b5f805f60608486031215610f42575f80fd5b8335610f4d81610eef565b92506020840135610f5d81610eef565b929592945050506040919091013590565b5f60208284031215610f7e575f80fd5b8135610aed81610eef565b5f8060408385031215610f9a575f80fd5b8235610fa581610eef565b91506020830135610fb581610eef565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561100e57815f1904821115610ff457610ff4610fc0565b8085161561100157918102915b93841c9390800290610fd9565b509250929050565b5f8261102457506001610389565b8161103057505f610389565b816001811461104657600281146110505761106c565b6001915050610389565b60ff84111561106157611061610fc0565b50506001821b610389565b5060208310610133831016604e8410600b841016171561108f575081810a610389565b6110998383610fd4565b805f19048211156110ac576110ac610fc0565b029392505050565b5f610aed60ff841683611016565b808202811582820484141761038957610389610fc0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561038957610389610fc0565b5f6001820161113257611132610fc0565b5060010190565b5f8261115357634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561117c575f80fd5b8151610aed81610eef565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156111d55784516001600160a01b0316835293830193918301916001016111b0565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561038957610389610fc056fea2646970667358221220abe6db57634f8609174191bb51dc2b5ee34f867d05c88302009d14673305164d64736f6c63430008150033
Deployed Bytecode Sourcemap
3726:8816:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6425:83;;;;;;;;;;-1:-1:-1;6495:5:0;;;;;;;;;;;;-1:-1:-1;;;6495:5:0;;;;6425:83;;;;;;;:::i;:::-;;;;;;;;7943:161;;;;;;;;;;-1:-1:-1;7943:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7943:161:0;1023:187:1;6607:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6607:95:0;1215:177:1;12270:269:0;;;;;;;;;;-1:-1:-1;12270:269:0;;;;;:::i;:::-;;:::i;6516:83::-;;;;;;;;;;-1:-1:-1;6516:83:0;;4676:1;2000:36:1;;1988:2;1973:18;6516:83:0;1858:184:1;4933:48:0;;;;;;;;;;;;;;;;5044:53;;;;;;;;;;;;;;;;6710:119;;;;;;;;;;-1:-1:-1;6710:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;6803:18:0;6776:7;6803:18;;;:9;:18;;;;;;;6710:119;771:148;;;;;;;;;;;;;:::i;:::-;;7467:203;;;;;;;;;;;;;:::i;4988:49::-;;;;;;;;;;;;;;;;11932:155;;;;;;;;;;;;;:::i;684:79::-;;;;;;;;;;-1:-1:-1;722:7:0;749:6;684:79;;-1:-1:-1;;;;;749:6:0;;;2445:51:1;;2433:2;2418:18;684:79:0;2299:203:1;6330:87:0;;;;;;;;;;-1:-1:-1;6402:7:0;;;;;;;;;;;;-1:-1:-1;;;6402:7:0;;;;6330:87;;4871:55;;;;;;;;;;;;;;;;12095:167;;;;;;;;;;-1:-1:-1;12095:167:0;;;;;:::i;:::-;;:::i;5106:39::-;;;;;;;;;;-1:-1:-1;5106:39:0;;;;;;;;7316:143;;;;;;;;;;-1:-1:-1;7316:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7424:18:0;;;7397:7;7424:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7316:143;7943:161;8018:4;8035:39;431:10;8058:7;8067:6;8035:8;:39::i;:::-;-1:-1:-1;8092:4:0;7943:161;;;;;:::o;6607:95::-;6660:7;4732:15;4676:1;4732:2;:15;:::i;:::-;4719:28;;:10;:28;:::i;:::-;6680:14;;6607:95;:::o;12270:269::-;12368:4;12385:36;12395:6;12403:9;12414:6;12385:9;:36::i;:::-;-1:-1:-1;;;;;12463:19:0;;;;;;:11;:19;;;;;;;;431:10;12463:33;;;;;;;;;12432:77;;12441:6;;12463:45;;12501:6;12463:37;:45::i;:::-;12432:8;:77::i;:::-;-1:-1:-1;12527:4:0;12270:269;;;;;:::o;771:148::-;967:6;;-1:-1:-1;;;;;967:6:0;431:10;967:22;959:67;;;;-1:-1:-1;;;959:67:0;;;;;;;:::i;:::-;;;;;;;;;853:1:::1;836:19:::0;;-1:-1:-1;;;;;;836:19:0::1;::::0;;871:40:::1;::::0;853:1;;871:40:::1;::::0;853:1;;871:40:::1;771:148::o:0;7467:203::-;967:6;;-1:-1:-1;;;;;967:6:0;431:10;967:22;959:67;;;;-1:-1:-1;;;959:67:0;;;;;;;:::i;:::-;4732:15:::1;4676:1;4732:2;:15;:::i;:::-;4719:28;::::0;:10:::1;:28;:::i;:::-;7521:12;:22:::0;4732:15:::1;4676:1;4732:2;:15;:::i;:::-;4719:28;::::0;:10:::1;:28;:::i;:::-;7554:16;:26:::0;7591:20:::1;:28:::0;;-1:-1:-1;;7591:28:0::1;::::0;;7635:27:::1;4732:15;4676:1;4732:2;:15;:::i;:::-;4719:28;::::0;:10:::1;:28;:::i;:::-;7635:27;::::0;1361:25:1;;;1349:2;1334:18;7635:27:0::1;;;;;;;7467:203::o:0;11932:155::-;967:6;;-1:-1:-1;;;;;967:6:0;431:10;967:22;959:67;;;;-1:-1:-1;;;959:67:0;;;;;;;:::i;:::-;11998:15:::1;::::0;::::1;::::0;::::1;;;11997:16;11989:25;;;::::0;::::1;;12027:12;:19:::0;;-1:-1:-1;;12057:22:0;;;;;11932:155::o;12095:167::-;12173:4;12190:42;431:10;12214:9;12225:6;12190:9;:42::i;7678:257::-;-1:-1:-1;;;;;7771:19:0;;7763:28;;;;;;-1:-1:-1;;;;;7810:21:0;;7802:30;;;;;;-1:-1:-1;;;;;7843:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7895:32;;1361:25:1;;;7895:32:0;;1334:18:1;7895:32:0;;;;;;;7678:257;;;:::o;8607:2625::-;-1:-1:-1;;;;;8704:20:0;;8696:29;;;;;;-1:-1:-1;;;;;8744:23:0;;8736:32;;;;;;8796:1;8787:6;:10;8779:19;;;;;;8809:17;749:6;;-1:-1:-1;;;;;8855:17:0;;;749:6;;8855:17;;;;:41;;-1:-1:-1;722:7:0;749:6;-1:-1:-1;;;;;8876:20:0;;;749:6;;8876:20;;8855:41;8851:1983;;;8925:30;8951:3;8925:21;8936:9;:7;:9::i;:::-;8925:6;;:10;:21::i;:::-;:25;;:30::i;:::-;8977:15;;8913:42;;-1:-1:-1;8977:15:0;;;;;8972:125;;-1:-1:-1;;;;;9021:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;9051:29:0;;;;;;:18;:29;;;;;;;;9021:59;9013:68;;;;;;9117:20;;;;9113:328;;;9183:16;;-1:-1:-1;;;;;9162:38:0;;;9183:16;;9162:38;;;;:78;;-1:-1:-1;9225:14:0;;-1:-1:-1;;;;;9204:36:0;;;9225:14;;9204:36;;9162:78;9158:268;;;9303:9;9274:39;;;;:28;:39;;;;;;9316:12;-1:-1:-1;9266:63:0;;;;;;9381:9;9352:39;;;;:28;:39;;;;;9394:12;9352:54;;9158:268;9471:14;;-1:-1:-1;;;;;9461:24:0;;;9471:14;;9461:24;:66;;;;-1:-1:-1;9510:16:0;;-1:-1:-1;;;;;9489:38:0;;;9510:16;;9489:38;;9461:66;:100;;;;-1:-1:-1;;;;;;9532:29:0;;;;;;:18;:29;;;;;;;;9531:30;9461:100;9457:407;;;9601:12;;9591:6;:22;;9583:31;;;;;;9674:16;;9664:6;9641:20;9651:9;-1:-1:-1;;;;;6803:18:0;6776:7;6803:18;;;:9;:18;;;;;;;6710:119;9641:20;:29;;;;:::i;:::-;:49;;9633:58;;;;;;9712:9;:11;;;:9;:11;;;:::i;:::-;;;;;;9758:18;;9746:9;;:30;9742:107;;;9801:20;:28;;-1:-1:-1;;9801:28:0;;;9742:107;9897:14;;-1:-1:-1;;;;;9884:27:0;;;9897:14;;9884:27;:53;;;;-1:-1:-1;;;;;;9915:22:0;;9932:4;9915:22;;9884:53;9880:137;;;9970:31;9997:3;9970:22;9981:10;:8;:10::i;9970:31::-;9958:43;;9880:137;10077:4;10033:23;6803:18;;;:9;:18;;;;;;10131:17;;10168:7;;10113:35;;;;10168:7;;;;;10167:8;:24;;;;-1:-1:-1;10179:12:0;;;;;;;10167:24;:55;;;;-1:-1:-1;10208:14:0;;-1:-1:-1;;;;;10195:27:0;;;10208:14;;10195:27;10167:55;:66;;;;;10226:7;10167:66;:97;;;;-1:-1:-1;;;;;;10238:26:0;;;;;;:18;:26;;;;;;;;10237:27;10167:97;:131;;;;-1:-1:-1;;;;;;10269:29:0;;;;;;:18;:29;;;;;;;;10268:30;10167:131;10163:660;;;10350:8;;-1:-1:-1;;;;;10350:8:0;10319:18;6803;;;:9;:18;;;;;;10340:28;;10364:3;10340:23;:28::i;:::-;10319:49;;10387:18;10408:27;10424:10;10408:11;;:15;;:27;;;;:::i;:::-;10387:48;;10454:18;10475:32;10480:15;10496:10;10475:4;:32::i;:::-;10454:53;-1:-1:-1;10547:21:0;10587:43;10605:24;10610:6;10454:53;10605:4;:24::i;:::-;10587:17;:43::i;:::-;10649:16;10668:37;:21;10694:10;10668:25;:37::i;:::-;10649:56;-1:-1:-1;10728:12:0;;10724:84;;10765:23;10779:8;10765:13;:23::i;:::-;10300:523;;;;;10163:660;8898:1936;;8851:1983;10850:13;;10846:170;;10923:4;10905:24;;;;:9;:24;;;;;;:39;;10934:9;10905:28;:39::i;:::-;10896:4;10878:24;;;;:9;:24;;;;;;;:66;;;;10962:42;;-1:-1:-1;;;;;10962:42:0;;;;;;;10994:9;1361:25:1;;1349:2;1334:18;;1215:177;10962:42:0;;;;;;;;10846:170;-1:-1:-1;;;;;11048:17:0;;;;;;:9;:17;;;;;;:29;;11070:6;11048:21;:29::i;:::-;-1:-1:-1;;;;;11028:17:0;;;;;;:9;:17;;;;;:49;11111:47;11136:21;:6;11147:9;11136:10;:21::i;:::-;-1:-1:-1;;;;;11111:20:0;;;;;;:9;:20;;;;;;;:24;:47::i;:::-;-1:-1:-1;;;;;11088:20:0;;;;;;;:9;:20;;;;;:70;;;;11174:50;;;11202:21;:6;11213:9;11202:10;:21::i;:::-;11174:50;;1361:25:1;;;1349:2;1334:18;11174:50:0;;;;;;;8685:2547;8607:2625;;;:::o;2183:136::-;2241:7;2268:43;2272:1;2275;2268:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2261:50;2183:136;-1:-1:-1;;;2183:136:0:o;11277:317::-;11318:7;11355:15;;11342:9;;:28;11338:82;;-1:-1:-1;11394:14:0;;;11277:317::o;11338:82::-;11448:15;;11436:9;;:27;:64;;;;;11480:20;;11467:9;;:33;;11436:64;11432:123;;;-1:-1:-1;11524:19:0;;;11277:317::o;11432:123::-;-1:-1:-1;11574:12:0;;;11277:317::o;1931:246::-;1989:7;2013:1;2018;2013:6;2009:47;;-1:-1:-1;2043:1:0;2036:8;;2009:47;2066:9;2078:5;2082:1;2078;:5;:::i;:::-;2066:17;-1:-1:-1;2111:1:0;2102:5;2106:1;2066:17;2102:5;:::i;:::-;:10;2094:56;;;;-1:-1:-1;;;2094:56:0;;5643:2:1;2094:56:0;;;5625:21:1;5682:2;5662:18;;;5655:30;5721:34;5701:18;;;5694:62;-1:-1:-1;;;5772:18:1;;;5765:31;5813:19;;2094:56:0;5441:397:1;2901:132:0;2959:7;2986:39;2990:1;2993;2986:39;;;;;;;;;;;;;;;;;:3;:39::i;11602:322::-;11644:7;11681:15;;11668:9;;:28;11664:83;;-1:-1:-1;11720:15:0;;;11602:322::o;11664:83::-;11775:16;;11763:9;;:28;:66;;;;;11808:21;;11795:9;;:34;;11763:66;11759:126;;;-1:-1:-1;11853:20:0;;;11602:322::o;6837:106::-;6895:7;6925:1;6921;:5;6920:15;;6934:1;6920:15;;;-1:-1:-1;6930:1:0;6837:106;-1:-1:-1;6837:106:0:o;8112:487::-;6262:7;:14;;-1:-1:-1;;6262:14:0;;;;;8215:16:::1;::::0;;6262:7;8215:16;;;;;::::1;::::0;;-1:-1:-1;;8215:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8215:16:0::1;8191:40;;8260:4;8242;8247:1;8242:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8242:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;8286:16:::1;::::0;:23:::1;::::0;;-1:-1:-1;;;8286:23:0;;;;:16;;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;8242:7;;8286:23;;;;;:16;:23:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8276:4;8281:1;8276:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8276:33:0;;::::1;:7;::::0;;::::1;::::0;;;;;:33;8352:16:::1;::::0;8320:63:::1;::::0;8337:4:::1;::::0;8352:16:::1;8371:11:::0;8320:8:::1;:63::i;:::-;8394:16;::::0;:197:::1;::::0;-1:-1:-1;;;8394:197:0;;-1:-1:-1;;;;;8394:16:0;;::::1;::::0;:67:::1;::::0;:197:::1;::::0;8476:11;;8394:16:::1;::::0;8518:4;;8545::::1;::::0;8565:15:::1;::::0;8394:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6299:7:0;:15;;-1:-1:-1;;6299:15:0;;;-1:-1:-1;;;;8112:487:0:o;7215:93::-;7273:10;;:27;;-1:-1:-1;;;;;7273:10:0;;;;:27;;;;;7293:6;;7273:10;:27;:10;:27;7293:6;7273:10;:27;;;;;;;;;;;;;;;;;;;;;7215:93;:::o;2716:179::-;2774:7;;2806:5;2810:1;2806;:5;:::i;:::-;2794:17;;2835:1;2830;:6;;2822:46;;;;-1:-1:-1;;;2822:46:0;;7550:2:1;2822:46:0;;;7532:21:1;7589:2;7569:18;;;7562:30;7628:29;7608:18;;;7601:57;7675:18;;2822:46:0;7348:351:1;2520:190:0;2606:7;2642:12;2634:6;;;;2626:29;;;;-1:-1:-1;;;2626:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2666:9:0;2678:5;2682:1;2678;:5;:::i;:::-;2666:17;2520:190;-1:-1:-1;;;;;2520:190:0:o;2325:189::-;2411:7;2446:12;2439:5;2431:28;;;;-1:-1:-1;;;2431:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2470:9:0;2482:5;2486:1;2482;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4588:356::-;4790:2;4772:21;;;4809:18;;;4802:30;4868:34;4863:2;4848:18;;4841:62;4935:2;4920:18;;4588:356::o;4949:125::-;5014:9;;;5035:10;;;5032:36;;;5048:18;;:::i;5079:135::-;5118:3;5139:17;;;5136:43;;5159:18;;:::i;:::-;-1:-1:-1;5206:1:1;5195:13;;5079:135::o;5219:217::-;5259:1;5285;5275:132;;5329:10;5324:3;5320:20;5317:1;5310:31;5364:4;5361:1;5354:15;5392:4;5389:1;5382:15;5275:132;-1:-1:-1;5421:9:1;;5219:217::o;5975:127::-;6036:10;6031:3;6027:20;6024:1;6017:31;6067:4;6064:1;6057:15;6091:4;6088:1;6081:15;6107:251;6177:6;6230:2;6218:9;6209:7;6205:23;6201:32;6198:52;;;6246:1;6243;6236:12;6198:52;6278:9;6272:16;6297:31;6322:5;6297:31;:::i;6363:980::-;6625:4;6673:3;6662:9;6658:19;6704:6;6693:9;6686:25;6730:2;6768:6;6763:2;6752:9;6748:18;6741:34;6811:3;6806:2;6795:9;6791:18;6784:31;6835:6;6870;6864:13;6901:6;6893;6886:22;6939:3;6928:9;6924:19;6917:26;;6978:2;6970:6;6966:15;6952:29;;6999:1;7009:195;7023:6;7020:1;7017:13;7009:195;;;7088:13;;-1:-1:-1;;;;;7084:39:1;7072:52;;7179:15;;;;7144:12;;;;7120:1;7038:9;7009:195;;;-1:-1:-1;;;;;;;7260:32:1;;;;7255:2;7240:18;;7233:60;-1:-1:-1;;;7324:3:1;7309:19;7302:35;7221:3;6363:980;-1:-1:-1;;;6363:980:1:o;7704:128::-;7771:9;;;7792:11;;;7789:37;;;7806:18;;:::i
Swarm Source
ipfs://abe6db57634f8609174191bb51dc2b5ee34f867d05c88302009d14673305164d
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.
Add Token to MetaMask (Web3)